diff mbox series

[3/5] ACPI: PM: s2idle: Add support for multiple func mask

Message ID 20210617164212.584-3-mario.limonciello@amd.com (mailing list archive)
State Mainlined, archived
Headers show
Series [1/5] ACPI: PM: s2idle: Use correct revision id | expand

Commit Message

Mario Limonciello June 17, 2021, 4:42 p.m. UTC
From: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>

Required for follow-up patch adding new UUID
needing new function mask.

Signed-off-by: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>
---
 drivers/acpi/x86/s2idle.c | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

Comments

Julian Sikorski June 17, 2021, 6:28 p.m. UTC | #1
W dniu 17.06.2021 o 18:42, Mario Limonciello pisze:
> From: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>
> 
> Required for follow-up patch adding new UUID
> needing new function mask.
> 
> Signed-off-by: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>
> ---
>   drivers/acpi/x86/s2idle.c | 31 ++++++++++++++++++++-----------
>   1 file changed, 20 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
> index c0cba025072f..0d19669ac7ad 100644
> --- a/drivers/acpi/x86/s2idle.c
> +++ b/drivers/acpi/x86/s2idle.c
> @@ -309,14 +309,15 @@ static void lpi_check_constraints(void)
>   	}
>   }
>   
> -static void acpi_sleep_run_lps0_dsm(unsigned int func)
> +static void acpi_sleep_run_lps0_dsm(unsigned int func, unsigned int func_mask, guid_t dsm_guid)
>   {
>   	union acpi_object *out_obj;
>   
> -	if (!(lps0_dsm_func_mask & (1 << func)))
> +	if (!(func_mask & (1 << func)))
>   		return;
>   
> -	out_obj = acpi_evaluate_dsm(lps0_device_handle, &lps0_dsm_guid, rev_id, func, NULL);
> +	out_obj = acpi_evaluate_dsm(lps0_device_handle, &dsm_guid,
> +					rev_id, func, NULL);
>   	ACPI_FREE(out_obj);
>   
>   	acpi_handle_debug(lps0_device_handle, "_DSM function %u evaluation %s\n",
> @@ -412,11 +413,15 @@ int acpi_s2idle_prepare_late(void)
>   		lpi_check_constraints();
>   
>   	if (acpi_s2idle_vendor_amd()) {
> -		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD);
> -		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD);
> +		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD,
> +				lps0_dsm_func_mask, lps0_dsm_guid);
> +		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD,
> +				lps0_dsm_func_mask, lps0_dsm_guid);
>   	} else {
> -		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF);
> -		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY);
> +		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF,
> +				lps0_dsm_func_mask, lps0_dsm_guid);
> +		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
> +				lps0_dsm_func_mask, lps0_dsm_guid);
>   	}
>   
>   	return 0;
> @@ -428,11 +433,15 @@ void acpi_s2idle_restore_early(void)
>   		return;
>   
>   	if (acpi_s2idle_vendor_amd()) {
> -		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD);
> -		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD);
> +		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD,
> +				lps0_dsm_func_mask, lps0_dsm_guid);
> +		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD,
> +				lps0_dsm_func_mask, lps0_dsm_guid);
>   	} else {
> -		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT);
> -		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON);
> +		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT,
> +				lps0_dsm_func_mask, lps0_dsm_guid);
> +		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON,
> +				lps0_dsm_func_mask, lps0_dsm_guid);
>   	}
>   }
>   
> 
Tested-by: Julian Sikorski <belegdol@gmail.com>
Rafael J. Wysocki June 18, 2021, 4:30 p.m. UTC | #2
On Thu, Jun 17, 2021 at 6:42 PM Mario Limonciello
<mario.limonciello@amd.com> wrote:
>
> From: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>
>
> Required for follow-up patch adding new UUID
> needing new function mask.
>
> Signed-off-by: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>

Your s-o-b is missing.

> ---
>  drivers/acpi/x86/s2idle.c | 31 ++++++++++++++++++++-----------
>  1 file changed, 20 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
> index c0cba025072f..0d19669ac7ad 100644
> --- a/drivers/acpi/x86/s2idle.c
> +++ b/drivers/acpi/x86/s2idle.c
> @@ -309,14 +309,15 @@ static void lpi_check_constraints(void)
>         }
>  }
>
> -static void acpi_sleep_run_lps0_dsm(unsigned int func)
> +static void acpi_sleep_run_lps0_dsm(unsigned int func, unsigned int func_mask, guid_t dsm_guid)
>  {
>         union acpi_object *out_obj;
>
> -       if (!(lps0_dsm_func_mask & (1 << func)))
> +       if (!(func_mask & (1 << func)))
>                 return;
>
> -       out_obj = acpi_evaluate_dsm(lps0_device_handle, &lps0_dsm_guid, rev_id, func, NULL);
> +       out_obj = acpi_evaluate_dsm(lps0_device_handle, &dsm_guid,
> +                                       rev_id, func, NULL);
>         ACPI_FREE(out_obj);
>
>         acpi_handle_debug(lps0_device_handle, "_DSM function %u evaluation %s\n",
> @@ -412,11 +413,15 @@ int acpi_s2idle_prepare_late(void)
>                 lpi_check_constraints();
>
>         if (acpi_s2idle_vendor_amd()) {
> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD);
> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD);
> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD,
> +                               lps0_dsm_func_mask, lps0_dsm_guid);
> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD,
> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>         } else {
> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF);
> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY);
> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF,
> +                               lps0_dsm_func_mask, lps0_dsm_guid);
> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>         }
>
>         return 0;
> @@ -428,11 +433,15 @@ void acpi_s2idle_restore_early(void)
>                 return;
>
>         if (acpi_s2idle_vendor_amd()) {
> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD);
> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD);
> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD,
> +                               lps0_dsm_func_mask, lps0_dsm_guid);
> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD,
> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>         } else {
> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT);
> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON);
> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT,
> +                               lps0_dsm_func_mask, lps0_dsm_guid);
> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON,
> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>         }
>  }
>
> --
> 2.25.1
>
Mario Limonciello June 18, 2021, 4:34 p.m. UTC | #3
On 6/18/2021 11:30, Rafael J. Wysocki wrote:
> On Thu, Jun 17, 2021 at 6:42 PM Mario Limonciello
> <mario.limonciello@amd.com> wrote:
>>
>> From: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>
>>
>> Required for follow-up patch adding new UUID
>> needing new function mask.
>>
>> Signed-off-by: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>
> 
> Your s-o-b is missing.

My apologies.  If I need to spin the series I'll explicitly add it with 
all the other tags that have come through, otherwise:

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

> 
>> ---
>>   drivers/acpi/x86/s2idle.c | 31 ++++++++++++++++++++-----------
>>   1 file changed, 20 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
>> index c0cba025072f..0d19669ac7ad 100644
>> --- a/drivers/acpi/x86/s2idle.c
>> +++ b/drivers/acpi/x86/s2idle.c
>> @@ -309,14 +309,15 @@ static void lpi_check_constraints(void)
>>          }
>>   }
>>
>> -static void acpi_sleep_run_lps0_dsm(unsigned int func)
>> +static void acpi_sleep_run_lps0_dsm(unsigned int func, unsigned int func_mask, guid_t dsm_guid)
>>   {
>>          union acpi_object *out_obj;
>>
>> -       if (!(lps0_dsm_func_mask & (1 << func)))
>> +       if (!(func_mask & (1 << func)))
>>                  return;
>>
>> -       out_obj = acpi_evaluate_dsm(lps0_device_handle, &lps0_dsm_guid, rev_id, func, NULL);
>> +       out_obj = acpi_evaluate_dsm(lps0_device_handle, &dsm_guid,
>> +                                       rev_id, func, NULL);
>>          ACPI_FREE(out_obj);
>>
>>          acpi_handle_debug(lps0_device_handle, "_DSM function %u evaluation %s\n",
>> @@ -412,11 +413,15 @@ int acpi_s2idle_prepare_late(void)
>>                  lpi_check_constraints();
>>
>>          if (acpi_s2idle_vendor_amd()) {
>> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD);
>> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD);
>> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD,
>> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD,
>> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>>          } else {
>> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF);
>> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY);
>> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF,
>> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
>> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>>          }
>>
>>          return 0;
>> @@ -428,11 +433,15 @@ void acpi_s2idle_restore_early(void)
>>                  return;
>>
>>          if (acpi_s2idle_vendor_amd()) {
>> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD);
>> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD);
>> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD,
>> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD,
>> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>>          } else {
>> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT);
>> -               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON);
>> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT,
>> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>> +               acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON,
>> +                               lps0_dsm_func_mask, lps0_dsm_guid);
>>          }
>>   }
>>
>> --
>> 2.25.1
>>
Rafael J. Wysocki June 18, 2021, 4:41 p.m. UTC | #4
On Fri, Jun 18, 2021 at 6:34 PM Limonciello, Mario
<mario.limonciello@amd.com> wrote:
>
> On 6/18/2021 11:30, Rafael J. Wysocki wrote:
> > On Thu, Jun 17, 2021 at 6:42 PM Mario Limonciello
> > <mario.limonciello@amd.com> wrote:
> >>
> >> From: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>
> >>
> >> Required for follow-up patch adding new UUID
> >> needing new function mask.
> >>
> >> Signed-off-by: Pratik Vishwakarma <Pratik.Vishwakarma@amd.com>
> >
> > Your s-o-b is missing.
>
> My apologies.  If I need to spin the series I'll explicitly add it with
> all the other tags that have come through, otherwise:
>
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>

OK

Applied as 5.14 material along with the rest of the series, thanks!
diff mbox series

Patch

diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
index c0cba025072f..0d19669ac7ad 100644
--- a/drivers/acpi/x86/s2idle.c
+++ b/drivers/acpi/x86/s2idle.c
@@ -309,14 +309,15 @@  static void lpi_check_constraints(void)
 	}
 }
 
-static void acpi_sleep_run_lps0_dsm(unsigned int func)
+static void acpi_sleep_run_lps0_dsm(unsigned int func, unsigned int func_mask, guid_t dsm_guid)
 {
 	union acpi_object *out_obj;
 
-	if (!(lps0_dsm_func_mask & (1 << func)))
+	if (!(func_mask & (1 << func)))
 		return;
 
-	out_obj = acpi_evaluate_dsm(lps0_device_handle, &lps0_dsm_guid, rev_id, func, NULL);
+	out_obj = acpi_evaluate_dsm(lps0_device_handle, &dsm_guid,
+					rev_id, func, NULL);
 	ACPI_FREE(out_obj);
 
 	acpi_handle_debug(lps0_device_handle, "_DSM function %u evaluation %s\n",
@@ -412,11 +413,15 @@  int acpi_s2idle_prepare_late(void)
 		lpi_check_constraints();
 
 	if (acpi_s2idle_vendor_amd()) {
-		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD);
-		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD);
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD,
+				lps0_dsm_func_mask, lps0_dsm_guid);
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD,
+				lps0_dsm_func_mask, lps0_dsm_guid);
 	} else {
-		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF);
-		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY);
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF,
+				lps0_dsm_func_mask, lps0_dsm_guid);
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
+				lps0_dsm_func_mask, lps0_dsm_guid);
 	}
 
 	return 0;
@@ -428,11 +433,15 @@  void acpi_s2idle_restore_early(void)
 		return;
 
 	if (acpi_s2idle_vendor_amd()) {
-		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD);
-		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD);
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD,
+				lps0_dsm_func_mask, lps0_dsm_guid);
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD,
+				lps0_dsm_func_mask, lps0_dsm_guid);
 	} else {
-		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT);
-		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON);
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT,
+				lps0_dsm_func_mask, lps0_dsm_guid);
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON,
+				lps0_dsm_func_mask, lps0_dsm_guid);
 	}
 }