On Fri, Jun 2, 2023 at 1:40 AM Mario Limonciello <mario.limonciello@xxxxxxx> wrote: > > In Windows the Microsoft _DSM doesn't call functions 3->5->7 for suspend > and 8->6->4 for resume like Linux currently does. > > Rather it calls 3->7->5 for suspend and 6->8->4 for resume. > Align this calling order for Linux as well. > > Link: https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby-states > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> > --- > drivers/acpi/x86/s2idle.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c > index e499c60c4579..7214197c15a0 100644 > --- a/drivers/acpi/x86/s2idle.c > +++ b/drivers/acpi/x86/s2idle.c > @@ -485,11 +485,11 @@ int acpi_s2idle_prepare_late(void) > ACPI_LPS0_ENTRY, > lps0_dsm_func_mask, lps0_dsm_guid); > if (lps0_dsm_func_mask_microsoft > 0) { > - acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY, > - lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft); > /* modern standby entry */ > acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_ENTRY, > lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft); > + acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY, > + lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft); > } > > list_for_each_entry(handler, &lps0_s2idle_devops_head, list_node) { > @@ -524,11 +524,6 @@ void acpi_s2idle_restore_early(void) > if (handler->restore) > handler->restore(); > > - /* Modern standby exit */ > - if (lps0_dsm_func_mask_microsoft > 0) > - acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_EXIT, > - lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft); > - > /* LPS0 exit */ > if (lps0_dsm_func_mask > 0) > acpi_sleep_run_lps0_dsm(acpi_s2idle_vendor_amd() ? > @@ -539,6 +534,11 @@ void acpi_s2idle_restore_early(void) > acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT, > lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft); > > + /* Modern standby exit */ > + if (lps0_dsm_func_mask_microsoft > 0) > + acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_EXIT, > + lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft); > + > /* Screen on */ > if (lps0_dsm_func_mask_microsoft > 0) > acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON, > -- Applied as 6.5 material, thanks!