On Mon, Nov 6, 2023 at 9:14 AM Mario Limonciello <mario.limonciello@xxxxxxx> wrote: > > Intel systems > 2015 have been configured to use ACPI alarm instead > of HPET to avoid s2idle issues. > > Having HPET programmed for wakeup causes problems on AMD systems with > s2idle as well. > > One particular case is that the systemd "SuspendThenHibernate" feature > doesn't work properly on the Framework 13" AMD model. Switching to > using ACPI alarm fixes the issue. > > Adjust the quirk to apply to AMD/Hygon systems from 2021 onwards. > This matches what has been tested and is specifically to avoid potential > risk to older systems. > > Cc: stable@xxxxxxxxxxxxxxx # 6.1+ > Reported-by: alvin.zhuge@xxxxxxxxx > Reported-by: renzhamin@xxxxxxxxx > Closes: https://github.com/systemd/systemd/issues/24279 > Reported-by: Kelvie Wong <kelvie@xxxxxxxxx> > Closes: https://community.frame.work/t/systemd-suspend-then-hibernate-wakes-up-after-5-minutes/39392 > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> > --- > drivers/rtc/rtc-cmos.c | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c > index 228fb2d11c70..696cfa7025de 100644 > --- a/drivers/rtc/rtc-cmos.c > +++ b/drivers/rtc/rtc-cmos.c > @@ -818,18 +818,24 @@ static void rtc_wake_off(struct device *dev) > } > > #ifdef CONFIG_X86 > -/* Enable use_acpi_alarm mode for Intel platforms no earlier than 2015 */ > static void use_acpi_alarm_quirks(void) > { > - if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL) > + switch (boot_cpu_data.x86_vendor) { > + case X86_VENDOR_INTEL: > + if (dmi_get_bios_year() < 2015) > + return; > + break; > + case X86_VENDOR_AMD: > + case X86_VENDOR_HYGON: > + if (dmi_get_bios_year() < 2021) > + return; > + break; > + default: > return; > - > + } > if (!is_hpet_enabled()) > return; > > - if (dmi_get_bios_year() < 2015) > - return; > - > use_acpi_alarm = true; > } > #else > -- > 2.34.1 > Acked-by: Raul E Rangel <rrangel@xxxxxxxxxxxx>