2022-06-17 13:08:31

by Dmitry Osipenko

[permalink] [raw]
Subject: [PATCH v1] PM: hibernate: Use kernel_can_power_off()

Use new kernel_can_power_off() API instead of legacy pm_power_off global
variable to fix regressed hibernation to disk where machine no longer
powers off when it should because ACPI power driver transitioned to the
new sys-off based API and it doesn't use pm_power_off anymore.

Fixes: 98f30d0ecf79 ("ACPI: power: Switch to sys-off handler API")
Tested-by: Ken Moffat <[email protected]>
Reported-by: Ken Moffat <[email protected]>
Signed-off-by: Dmitry Osipenko <[email protected]>
---
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 20a66bf9f465..89c71fce225d 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -665,7 +665,7 @@ static void power_down(void)
hibernation_platform_enter();
fallthrough;
case HIBERNATION_SHUTDOWN:
- if (pm_power_off)
+ if (kernel_can_power_off())
kernel_power_off();
break;
}
--
2.35.3


2022-06-21 19:11:21

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v1] PM: hibernate: Use kernel_can_power_off()

On Fri, Jun 17, 2022 at 2:24 PM Dmitry Osipenko
<[email protected]> wrote:
>
> Use new kernel_can_power_off() API instead of legacy pm_power_off global
> variable to fix regressed hibernation to disk where machine no longer
> powers off when it should because ACPI power driver transitioned to the
> new sys-off based API and it doesn't use pm_power_off anymore.
>
> Fixes: 98f30d0ecf79 ("ACPI: power: Switch to sys-off handler API")
> Tested-by: Ken Moffat <[email protected]>
> Reported-by: Ken Moffat <[email protected]>
> Signed-off-by: Dmitry Osipenko <[email protected]>
> ---
> 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 20a66bf9f465..89c71fce225d 100644
> --- a/kernel/power/hibernate.c
> +++ b/kernel/power/hibernate.c
> @@ -665,7 +665,7 @@ static void power_down(void)
> hibernation_platform_enter();
> fallthrough;
> case HIBERNATION_SHUTDOWN:
> - if (pm_power_off)
> + if (kernel_can_power_off())
> kernel_power_off();
> break;
> }
> --

Applied as 5.19-rc material, thanks!