Re: [PATCH] rtc: cmos: Use ACPI alarm for non-Intel x86 systems too

From: Raul Rangel
Date: Mon Nov 06 2023 - 11:17:16 EST


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>