Re: [REGRESSION 4.17] Spurious wakeup / reboot with power button

From: Rafael J. Wysocki
Date: Sun Jul 08 2018 - 04:18:30 EST


On Fri, Jul 6, 2018 at 7:57 PM, Thomas HÃnig <haenig@xxxxxxxxxx> wrote:
>
>
> Am 06.07.2018 um 14:27 schrieb Takashi Iwai:
>> On Fri, 06 Jul 2018 14:13:04 +0200,
>> Rafael J. Wysocki wrote:
>>>
>>> On Friday, July 6, 2018 1:21:50 PM CEST Rafael J. Wysocki wrote:
>>>> On Fri, Jul 6, 2018 at 1:12 PM, Thomas HÃnig <haenig@xxxxxxxxxx> wrote:
>>>
>>> [cut]
>>>
>>>> So the latest patch:
>>>>
>>>> https://patchwork.kernel.org/patch/10511211/
>>>>
>>>> should work for you (please verify) and the change in
>>>> drivers/acpi/sleep.c in it most likely is not necessary.
>>>>
>>>> If you can confirm that this one works for you, I'll send a smaller
>>>> one with the acpi_hw_legacy_sleep() part alone.
>>>
>>> Well, scratch this, sorry.
>>>
>>> The power button probably is a fixed event and it won't be effected by
>>> that patch.
>>>
>>> Instead, please test the patch below.
>>
>> FWIW, the test kernel on OBS home:tiwai:bsc1099930-3 was refreshed
>> with this one. The release number will be *.g2351e2d.
>>
>>
>> Takashi
>>
>>>
>>> ---
>>> drivers/acpi/acpica/hwsleep.c | 15 +++++++++++----
>>> 1 file changed, 11 insertions(+), 4 deletions(-)
>>>
>>> Index: linux-pm/drivers/acpi/acpica/hwsleep.c
>>> ===================================================================
>>> --- linux-pm.orig/drivers/acpi/acpica/hwsleep.c
>>> +++ linux-pm/drivers/acpi/acpica/hwsleep.c
>>> @@ -51,16 +51,23 @@ acpi_status acpi_hw_legacy_sleep(u8 slee
>>> return_ACPI_STATUS(status);
>>> }
>>>
>>> - /*
>>> - * 1) Disable all GPEs
>>> - * 2) Enable all wakeup GPEs
>>> - */
>>> + /* Disable all GPEs */
>>> status = acpi_hw_disable_all_gpes();
>>> if (ACPI_FAILURE(status)) {
>>> return_ACPI_STATUS(status);
>>> }
>>> + /*
>>> + * If the target sleep state is S5, clear all GPEs and fixed events too
>>> + */
>>> + if (sleep_state == ACPI_STATE_S5) {
>>> + status = acpi_hw_clear_acpi_status();
>>> + if (ACPI_FAILURE(status)) {
>>> + return_ACPI_STATUS(status);
>>> + }
>>> + }
>>> acpi_gbl_system_awake_and_running = FALSE;
>>>
>>> + /* Enable all wakeup GPEs */
>>> status = acpi_hw_enable_all_wakeup_gpes();
>>> if (ACPI_FAILURE(status)) {
>>> return_ACPI_STATUS(status);
>>>
> Hello Takashi,
> with the kernel built by you the system shuts down when pressing the
> power button and stays off too! :-)
>
> So the above mentioned patch to hwsleep.c seems to do the trick.

OK, thanks for verifying!

> Regards and thanks a lot @all!

Cheers,
Rafael