diff mbox series

PM / reboot: Use S5 for reboot

Message ID 20201030070659.16948-1-kai.heng.feng@canonical.com (mailing list archive)
State Mainlined, archived
Headers show
Series PM / reboot: Use S5 for reboot | expand

Commit Message

Kai-Heng Feng Oct. 30, 2020, 7:06 a.m. UTC
After reboot, it's not possible to use hotkeys to enter BIOS setup and
boot menu on some HP laptops.

BIOS folks identified the root cause is the missing _PTS call, and BIOS
is expecting _PTS to do proper reset.

Using S5 for reboot is default behavior under Windows, "A full shutdown
(S5) occurs when a system restart is requested" [1], so let's do the
same here.

[1] https://docs.microsoft.com/en-us/windows/win32/power/system-power-states

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 kernel/reboot.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Kai-Heng Feng Oct. 30, 2020, 7:09 a.m. UTC | #1
Hi Hans,

> On Oct 30, 2020, at 15:06, Kai-Heng Feng <kai.heng.feng@canonical.com> wrote:
> 
> After reboot, it's not possible to use hotkeys to enter BIOS setup and
> boot menu on some HP laptops.
> 
> BIOS folks identified the root cause is the missing _PTS call, and BIOS
> is expecting _PTS to do proper reset.
> 
> Using S5 for reboot is default behavior under Windows, "A full shutdown
> (S5) occurs when a system restart is requested" [1], so let's do the
> same here.

I wonder if this can also solve "HID: i2c-hid: Put ACPI enumerated devices in D3 on shutdown" fixed.

Kai-Heng

> 
> [1] https://docs.microsoft.com/en-us/windows/win32/power/system-power-states
> 
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
> kernel/reboot.c | 2 ++
> 1 file changed, 2 insertions(+)
> 
> diff --git a/kernel/reboot.c b/kernel/reboot.c
> index e7b78d5ae1ab..7e5aa1f78693 100644
> --- a/kernel/reboot.c
> +++ b/kernel/reboot.c
> @@ -244,6 +244,8 @@ void migrate_to_reboot_cpu(void)
> void kernel_restart(char *cmd)
> {
> 	kernel_restart_prepare(cmd);
> +	if (pm_power_off_prepare)
> +		pm_power_off_prepare();
> 	migrate_to_reboot_cpu();
> 	syscore_shutdown();
> 	if (!cmd)
> -- 
> 2.17.1
>
Hans de Goede Oct. 30, 2020, 10:01 a.m. UTC | #2
Hi,

On 10/30/20 8:09 AM, Kai-Heng Feng wrote:
> Hi Hans,
> 
>> On Oct 30, 2020, at 15:06, Kai-Heng Feng <kai.heng.feng@canonical.com> wrote:
>>
>> After reboot, it's not possible to use hotkeys to enter BIOS setup and
>> boot menu on some HP laptops.
>>
>> BIOS folks identified the root cause is the missing _PTS call, and BIOS
>> is expecting _PTS to do proper reset.
>>
>> Using S5 for reboot is default behavior under Windows, "A full shutdown
>> (S5) occurs when a system restart is requested" [1], so let's do the
>> same here.
> 
> I wonder if this can also solve "HID: i2c-hid: Put ACPI enumerated devices in D3 on shutdown" fixed.

I just checked the _PTS of one of the devices with the SMO91D0 i2c-hid
sensor-hub and it does not appear to turn off the sensor-hub (or any
other devices for that matter). Specifically it does not touch the
GPIO used by the _PS0 / _PS3 methods of the SMO91D0.

Regards,

Hans




>> [1] https://docs.microsoft.com/en-us/windows/win32/power/system-power-states
>>
>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>> ---
>> kernel/reboot.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/kernel/reboot.c b/kernel/reboot.c
>> index e7b78d5ae1ab..7e5aa1f78693 100644
>> --- a/kernel/reboot.c
>> +++ b/kernel/reboot.c
>> @@ -244,6 +244,8 @@ void migrate_to_reboot_cpu(void)
>> void kernel_restart(char *cmd)
>> {
>> 	kernel_restart_prepare(cmd);
>> +	if (pm_power_off_prepare)
>> +		pm_power_off_prepare();
>> 	migrate_to_reboot_cpu();
>> 	syscore_shutdown();
>> 	if (!cmd)
>> -- 
>> 2.17.1
>>
>
Rafael J. Wysocki Nov. 10, 2020, 6:02 p.m. UTC | #3
On Fri, Oct 30, 2020 at 8:07 AM Kai-Heng Feng
<kai.heng.feng@canonical.com> wrote:
>
> After reboot, it's not possible to use hotkeys to enter BIOS setup and
> boot menu on some HP laptops.
>
> BIOS folks identified the root cause is the missing _PTS call, and BIOS
> is expecting _PTS to do proper reset.
>
> Using S5 for reboot is default behavior under Windows, "A full shutdown
> (S5) occurs when a system restart is requested" [1], so let's do the
> same here.
>
> [1] https://docs.microsoft.com/en-us/windows/win32/power/system-power-states
>
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
>  kernel/reboot.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/kernel/reboot.c b/kernel/reboot.c
> index e7b78d5ae1ab..7e5aa1f78693 100644
> --- a/kernel/reboot.c
> +++ b/kernel/reboot.c
> @@ -244,6 +244,8 @@ void migrate_to_reboot_cpu(void)
>  void kernel_restart(char *cmd)
>  {
>         kernel_restart_prepare(cmd);
> +       if (pm_power_off_prepare)
> +               pm_power_off_prepare();
>         migrate_to_reboot_cpu();
>         syscore_shutdown();
>         if (!cmd)
> --

Applied as 5.11 material with a minor edit in the subject, thanks!
diff mbox series

Patch

diff --git a/kernel/reboot.c b/kernel/reboot.c
index e7b78d5ae1ab..7e5aa1f78693 100644
--- a/kernel/reboot.c
+++ b/kernel/reboot.c
@@ -244,6 +244,8 @@  void migrate_to_reboot_cpu(void)
 void kernel_restart(char *cmd)
 {
 	kernel_restart_prepare(cmd);
+	if (pm_power_off_prepare)
+		pm_power_off_prepare();
 	migrate_to_reboot_cpu();
 	syscore_shutdown();
 	if (!cmd)