RE: [RESEND PATCH] ACPICA: Enable sleep button on ACPI legacy wake

From: Kaneda, Erik
Date: Wed Jan 22 2020 - 14:12:48 EST




> -----Original Message-----
> From: Rafael J. Wysocki <rafael@xxxxxxxxxx>
> Sent: Thursday, January 16, 2020 1:40 AM
> To: Anchal Agarwal <anchalag@xxxxxxxxxx>; Kaneda, Erik
> <erik.kaneda@xxxxxxxxx>; Moore, Robert <robert.moore@xxxxxxxxx>
> Cc: Wysocki, Rafael J <rafael.j.wysocki@xxxxxxxxx>; ACPI Devel Maling List
> <linux-acpi@xxxxxxxxxxxxxxx>; Linux Kernel Mailing List <linux-
> kernel@xxxxxxxxxxxxxxx>; Len Brown <lenb@xxxxxxxxxx>; open list:ACPI
> COMPONENT ARCHITECTURE (ACPICA) <devel@xxxxxxxxxx>; Singh, Balbir
> <sblbir@xxxxxxxxxx>; fllinden@xxxxxxxxxx
> Subject: Re: [RESEND PATCH] ACPICA: Enable sleep button on ACPI legacy
> wake
>
> On Thu, Jan 16, 2020 at 12:26 AM Anchal Agarwal <anchalag@xxxxxxxxxx>
> wrote:
> >
> > Currently we do not see sleep_enable bit set after guest resumes from
> > hibernation. Hibernation is triggered in guest on receiving a sleep
> > trigger from the hypervisor(S4 state). We see that power button is
> > enabled on wake up from S4 state however sleep button isn't. This
> > causes subsequent invocation of sleep state to fail in the guest. Any
> > environment going through acpi_hw_legacy_wake() won't have sleep
> > button enabled.
> >
> > Signed-off-by: Anchal Agarwal <anchalag@xxxxxxxxxx>
> > Reviewed-by: Balbir Singh <sblbir@xxxxxxxxxx>
> > Reviewed-by: Frank van der Linden <fllinden@xxxxxxxxxx>
> > ---
> > drivers/acpi/acpica/hwsleep.c | 11 +++++++++++
> > 1 file changed, 11 insertions(+)
> >
> > diff --git a/drivers/acpi/acpica/hwsleep.c
> > b/drivers/acpi/acpica/hwsleep.c index b62db8ec446f..a176c7802760
> > 100644
> > --- a/drivers/acpi/acpica/hwsleep.c
> > +++ b/drivers/acpi/acpica/hwsleep.c
> > @@ -300,6 +300,17 @@ acpi_status acpi_hw_legacy_wake(u8 sleep_state)
> > [ACPI_EVENT_POWER_BUTTON].
> > status_register_id,
> > ACPI_CLEAR_STATUS);
> >
> > + /* Enable sleep button */
> > + (void)
> > + acpi_write_bit_register(acpi_gbl_fixed_event_info
> > + [ACPI_EVENT_SLEEP_BUTTON].
> > + enable_register_id,
> > + ACPI_ENABLE_EVENT);
> > +
> > + (void)
> > + acpi_write_bit_register(acpi_gbl_fixed_event_info
> > + [ACPI_EVENT_SLEEP_BUTTON].
> > + status_register_id,
> > + ACPI_CLEAR_STATUS);
> > +
> > acpi_hw_execute_sleep_method(METHOD_PATHNAME__SST,
> ACPI_SST_WORKING);
> > return_ACPI_STATUS(status);
> > }
>
> Erik, Bob, please pick this up if you don't have specific objections against it.
>
> I'll wait for it to show up in an upstream release.

I've submitted a pull request to ACPICA upstream with changes to the commit message here:
https://github.com/acpica/acpica/pull/549

I'll send a Linux-ized version of this patch after our next ACPICA release.

Thanks,
Erik