diff mbox series

ACPI: PM: Add support for upcoming AMD uPEP HID AMDI007

Message ID 20210718041138.4739-1-mario.limonciello@amd.com
State Accepted
Commit f0c6225531e4a9e43e51c5f7b02089bdd725c734
Headers show
Series ACPI: PM: Add support for upcoming AMD uPEP HID AMDI007 | expand

Commit Message

Mario Limonciello July 18, 2021, 4:11 a.m. UTC
AMD systems with uPEP HID AMDI007 should be using revision 2 and
the AMD method.

CC: stable@kernel.org # v5.14
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/acpi/x86/s2idle.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

Comments

Rafael J. Wysocki July 19, 2021, 12:09 p.m. UTC | #1
On Sun, Jul 18, 2021 at 6:11 AM Mario Limonciello
<mario.limonciello@amd.com> wrote:
>

> AMD systems with uPEP HID AMDI007 should be using revision 2 and

> the AMD method.

>

> CC: stable@kernel.org # v5.14


Well, what do you mean?

5.14 is still under development.


> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>

> ---

>  drivers/acpi/x86/s2idle.c | 10 ++++++++--

>  1 file changed, 8 insertions(+), 2 deletions(-)

>

> diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c

> index 1c507804fb10..fbdbef0ab552 100644

> --- a/drivers/acpi/x86/s2idle.c

> +++ b/drivers/acpi/x86/s2idle.c

> @@ -378,19 +378,25 @@ static int lps0_device_attach(struct acpi_device *adev,

>                  * AMDI0006:

>                  * - should use rev_id 0x0

>                  * - function mask = 0x3: Should use Microsoft method

> +                * AMDI0007:

> +                * - Should use rev_id 0x2

> +                * - Should only use AMD method

>                  */

>                 const char *hid = acpi_device_hid(adev);

> -               rev_id = 0;

> +               rev_id = strcmp(hid, "AMDI0007") ? 0 : 2;

>                 lps0_dsm_func_mask = validate_dsm(adev->handle,

>                                         ACPI_LPS0_DSM_UUID_AMD, rev_id, &lps0_dsm_guid);

>                 lps0_dsm_func_mask_microsoft = validate_dsm(adev->handle,

> -                                       ACPI_LPS0_DSM_UUID_MICROSOFT, rev_id,

> +                                       ACPI_LPS0_DSM_UUID_MICROSOFT, 0,

>                                         &lps0_dsm_guid_microsoft);

>                 if (lps0_dsm_func_mask > 0x3 && (!strcmp(hid, "AMD0004") ||

>                                                  !strcmp(hid, "AMDI0005"))) {

>                         lps0_dsm_func_mask = (lps0_dsm_func_mask << 1) | 0x1;

>                         acpi_handle_debug(adev->handle, "_DSM UUID %s: Adjusted function mask: 0x%x\n",

>                                           ACPI_LPS0_DSM_UUID_AMD, lps0_dsm_func_mask);

> +               } else if (lps0_dsm_func_mask_microsoft > 0 && !strcmp(hid, "AMDI0007")) {

> +                       lps0_dsm_func_mask_microsoft = -EINVAL;

> +                       acpi_handle_debug(adev->handle, "_DSM Using AMD method\n");

>                 }

>         } else {

>                 rev_id = 1;

> --

> 2.25.1

>
Mario Limonciello July 19, 2021, 1:35 p.m. UTC | #2
On 7/19/2021 07:09, Rafael J. Wysocki wrote:
> On Sun, Jul 18, 2021 at 6:11 AM Mario Limonciello

> <mario.limonciello@amd.com> wrote:

>>

>> AMD systems with uPEP HID AMDI007 should be using revision 2 and

>> the AMD method.

>>

>> CC: stable@kernel.org # v5.14

> 

> Well, what do you mean?

> 

> 5.14 is still under development.


I didn't want to presume the timing or target that you would accept 
this.  If it's still viable for 5.14, then yes that would be preferable.
Can you just remove that line from commit message?

Thanks,

> 

> 

>> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>

>> ---

>>   drivers/acpi/x86/s2idle.c | 10 ++++++++--

>>   1 file changed, 8 insertions(+), 2 deletions(-)

>>

>> diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c

>> index 1c507804fb10..fbdbef0ab552 100644

>> --- a/drivers/acpi/x86/s2idle.c

>> +++ b/drivers/acpi/x86/s2idle.c

>> @@ -378,19 +378,25 @@ static int lps0_device_attach(struct acpi_device *adev,

>>                   * AMDI0006:

>>                   * - should use rev_id 0x0

>>                   * - function mask = 0x3: Should use Microsoft method

>> +                * AMDI0007:

>> +                * - Should use rev_id 0x2

>> +                * - Should only use AMD method

>>                   */

>>                  const char *hid = acpi_device_hid(adev);

>> -               rev_id = 0;

>> +               rev_id = strcmp(hid, "AMDI0007") ? 0 : 2;

>>                  lps0_dsm_func_mask = validate_dsm(adev->handle,

>>                                          ACPI_LPS0_DSM_UUID_AMD, rev_id, &lps0_dsm_guid);

>>                  lps0_dsm_func_mask_microsoft = validate_dsm(adev->handle,

>> -                                       ACPI_LPS0_DSM_UUID_MICROSOFT, rev_id,

>> +                                       ACPI_LPS0_DSM_UUID_MICROSOFT, 0,

>>                                          &lps0_dsm_guid_microsoft);

>>                  if (lps0_dsm_func_mask > 0x3 && (!strcmp(hid, "AMD0004") ||

>>                                                   !strcmp(hid, "AMDI0005"))) {

>>                          lps0_dsm_func_mask = (lps0_dsm_func_mask << 1) | 0x1;

>>                          acpi_handle_debug(adev->handle, "_DSM UUID %s: Adjusted function mask: 0x%x\n",

>>                                            ACPI_LPS0_DSM_UUID_AMD, lps0_dsm_func_mask);

>> +               } else if (lps0_dsm_func_mask_microsoft > 0 && !strcmp(hid, "AMDI0007")) {

>> +                       lps0_dsm_func_mask_microsoft = -EINVAL;

>> +                       acpi_handle_debug(adev->handle, "_DSM Using AMD method\n");

>>                  }

>>          } else {

>>                  rev_id = 1;

>> --

>> 2.25.1

>>
Rafael J. Wysocki July 23, 2021, 3:30 p.m. UTC | #3
On Mon, Jul 19, 2021 at 3:35 PM Limonciello, Mario
<mario.limonciello@amd.com> wrote:
>

> On 7/19/2021 07:09, Rafael J. Wysocki wrote:

> > On Sun, Jul 18, 2021 at 6:11 AM Mario Limonciello

> > <mario.limonciello@amd.com> wrote:

> >>

> >> AMD systems with uPEP HID AMDI007 should be using revision 2 and

> >> the AMD method.

> >>

> >> CC: stable@kernel.org # v5.14

> >

> > Well, what do you mean?

> >

> > 5.14 is still under development.

>

> I didn't want to presume the timing or target that you would accept

> this.  If it's still viable for 5.14, then yes that would be preferable.

> Can you just remove that line from commit message?


I've applied it as 5.14-rc material with a Fixes tag pointing to
commit 8fbd6c15ea0a "ACPI: PM: Adjust behavior for field problems on
AMD systems".

Thanks!


> >> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>

> >> ---

> >>   drivers/acpi/x86/s2idle.c | 10 ++++++++--

> >>   1 file changed, 8 insertions(+), 2 deletions(-)

> >>

> >> diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c

> >> index 1c507804fb10..fbdbef0ab552 100644

> >> --- a/drivers/acpi/x86/s2idle.c

> >> +++ b/drivers/acpi/x86/s2idle.c

> >> @@ -378,19 +378,25 @@ static int lps0_device_attach(struct acpi_device *adev,

> >>                   * AMDI0006:

> >>                   * - should use rev_id 0x0

> >>                   * - function mask = 0x3: Should use Microsoft method

> >> +                * AMDI0007:

> >> +                * - Should use rev_id 0x2

> >> +                * - Should only use AMD method

> >>                   */

> >>                  const char *hid = acpi_device_hid(adev);

> >> -               rev_id = 0;

> >> +               rev_id = strcmp(hid, "AMDI0007") ? 0 : 2;

> >>                  lps0_dsm_func_mask = validate_dsm(adev->handle,

> >>                                          ACPI_LPS0_DSM_UUID_AMD, rev_id, &lps0_dsm_guid);

> >>                  lps0_dsm_func_mask_microsoft = validate_dsm(adev->handle,

> >> -                                       ACPI_LPS0_DSM_UUID_MICROSOFT, rev_id,

> >> +                                       ACPI_LPS0_DSM_UUID_MICROSOFT, 0,

> >>                                          &lps0_dsm_guid_microsoft);

> >>                  if (lps0_dsm_func_mask > 0x3 && (!strcmp(hid, "AMD0004") ||

> >>                                                   !strcmp(hid, "AMDI0005"))) {

> >>                          lps0_dsm_func_mask = (lps0_dsm_func_mask << 1) | 0x1;

> >>                          acpi_handle_debug(adev->handle, "_DSM UUID %s: Adjusted function mask: 0x%x\n",

> >>                                            ACPI_LPS0_DSM_UUID_AMD, lps0_dsm_func_mask);

> >> +               } else if (lps0_dsm_func_mask_microsoft > 0 && !strcmp(hid, "AMDI0007")) {

> >> +                       lps0_dsm_func_mask_microsoft = -EINVAL;

> >> +                       acpi_handle_debug(adev->handle, "_DSM Using AMD method\n");

> >>                  }

> >>          } else {

> >>                  rev_id = 1;

> >> --

> >> 2.25.1

> >>

>
diff mbox series

Patch

diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
index 1c507804fb10..fbdbef0ab552 100644
--- a/drivers/acpi/x86/s2idle.c
+++ b/drivers/acpi/x86/s2idle.c
@@ -378,19 +378,25 @@  static int lps0_device_attach(struct acpi_device *adev,
 		 * AMDI0006:
 		 * - should use rev_id 0x0
 		 * - function mask = 0x3: Should use Microsoft method
+		 * AMDI0007:
+		 * - Should use rev_id 0x2
+		 * - Should only use AMD method
 		 */
 		const char *hid = acpi_device_hid(adev);
-		rev_id = 0;
+		rev_id = strcmp(hid, "AMDI0007") ? 0 : 2;
 		lps0_dsm_func_mask = validate_dsm(adev->handle,
 					ACPI_LPS0_DSM_UUID_AMD, rev_id, &lps0_dsm_guid);
 		lps0_dsm_func_mask_microsoft = validate_dsm(adev->handle,
-					ACPI_LPS0_DSM_UUID_MICROSOFT, rev_id,
+					ACPI_LPS0_DSM_UUID_MICROSOFT, 0,
 					&lps0_dsm_guid_microsoft);
 		if (lps0_dsm_func_mask > 0x3 && (!strcmp(hid, "AMD0004") ||
 						 !strcmp(hid, "AMDI0005"))) {
 			lps0_dsm_func_mask = (lps0_dsm_func_mask << 1) | 0x1;
 			acpi_handle_debug(adev->handle, "_DSM UUID %s: Adjusted function mask: 0x%x\n",
 					  ACPI_LPS0_DSM_UUID_AMD, lps0_dsm_func_mask);
+		} else if (lps0_dsm_func_mask_microsoft > 0 && !strcmp(hid, "AMDI0007")) {
+			lps0_dsm_func_mask_microsoft = -EINVAL;
+			acpi_handle_debug(adev->handle, "_DSM Using AMD method\n");
 		}
 	} else {
 		rev_id = 1;