[PATCH] PM: hibernate: Allow hybrid sleep to work with s2idle

Mario Limonciello posted 1 patch 3 years, 5 months ago
kernel/power/hibernate.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] PM: hibernate: Allow hybrid sleep to work with s2idle
Posted by Mario Limonciello 3 years, 5 months ago
Hybrid sleep is currently hardcoded to only operate with S3 even
on systems that might not support it.

Instead of assuming this mode is what the user wants to use, for
hybrid sleep follow the setting of `mem_sleep_current` which
will respect mem_sleep_default kernel command line and policy
decisions made by the presence of the FADT low power idle bit.

Reported-and-tested-by: kolAflash <kolAflash@kolahilft.de>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216574
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 kernel/power/hibernate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
index 89c71fce225dd..537dd3beafc16 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -641,7 +641,7 @@ static void power_down(void)
 	int error;
 
 	if (hibernation_mode == HIBERNATION_SUSPEND) {
-		error = suspend_devices_and_enter(PM_SUSPEND_MEM);
+		error = suspend_devices_and_enter(mem_sleep_current);
 		if (error) {
 			hibernation_mode = hibernation_ops ?
 						HIBERNATION_PLATFORM :
-- 
2.34.1
Re: [PATCH] PM: hibernate: Allow hybrid sleep to work with s2idle
Posted by Limonciello, Mario 3 years, 5 months ago
On 10/12/2022 22:50, Mario Limonciello wrote:
> Hybrid sleep is currently hardcoded to only operate with S3 even
> on systems that might not support it.
> 
> Instead of assuming this mode is what the user wants to use, for
> hybrid sleep follow the setting of `mem_sleep_current` which
> will respect mem_sleep_default kernel command line and policy
> decisions made by the presence of the FADT low power idle bit.
> 
> Reported-and-tested-by: kolAflash <kolAflash@kolahilft.de>
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=216574
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
>   kernel/power/hibernate.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

Hi Rafael,

This got sent near the merge window a few weeks ago.  It's a trivial fix 
so I just want to make sure it didn't get misplaced.

Thanks!

> 
> diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
> index 89c71fce225dd..537dd3beafc16 100644
> --- a/kernel/power/hibernate.c
> +++ b/kernel/power/hibernate.c
> @@ -641,7 +641,7 @@ static void power_down(void)
>   	int error;
>   
>   	if (hibernation_mode == HIBERNATION_SUSPEND) {
> -		error = suspend_devices_and_enter(PM_SUSPEND_MEM);
> +		error = suspend_devices_and_enter(mem_sleep_current);
>   		if (error) {
>   			hibernation_mode = hibernation_ops ?
>   						HIBERNATION_PLATFORM :
Re: [PATCH] PM: hibernate: Allow hybrid sleep to work with s2idle
Posted by Rafael J. Wysocki 3 years, 5 months ago
On Tue, Oct 25, 2022 at 2:12 AM Limonciello, Mario
<mario.limonciello@amd.com> wrote:
>
> On 10/12/2022 22:50, Mario Limonciello wrote:
> > Hybrid sleep is currently hardcoded to only operate with S3 even
> > on systems that might not support it.
> >
> > Instead of assuming this mode is what the user wants to use, for
> > hybrid sleep follow the setting of `mem_sleep_current` which
> > will respect mem_sleep_default kernel command line and policy
> > decisions made by the presence of the FADT low power idle bit.
> >
> > Reported-and-tested-by: kolAflash <kolAflash@kolahilft.de>
> > Link: https://bugzilla.kernel.org/show_bug.cgi?id=216574
> > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> > ---
> >   kernel/power/hibernate.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
>
> Hi Rafael,
>
> This got sent near the merge window a few weeks ago.  It's a trivial fix
> so I just want to make sure it didn't get misplaced.

It wasn't lost.

I've just applied it for -rc3 (and added a Fixes: tag that was missing to it).

Thanks!

> >
> > diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
> > index 89c71fce225dd..537dd3beafc16 100644
> > --- a/kernel/power/hibernate.c
> > +++ b/kernel/power/hibernate.c
> > @@ -641,7 +641,7 @@ static void power_down(void)
> >       int error;
> >
> >       if (hibernation_mode == HIBERNATION_SUSPEND) {
> > -             error = suspend_devices_and_enter(PM_SUSPEND_MEM);
> > +             error = suspend_devices_and_enter(mem_sleep_current);
> >               if (error) {
> >                       hibernation_mode = hibernation_ops ?
> >                                               HIBERNATION_PLATFORM :
>