Re: [PATCH v5 2/4] platform/x86/amd/pmc: Delay suspend for some Lenovo Laptops
From: Daniel Gibson
Date: Tue Jun 09 2026 - 08:10:53 EST
On 09.06.26 13:46, Ilpo Järvinen wrote:
> On Tue, 9 Jun 2026, Daniel Gibson wrote:
>
>> Some IdeaPad Slim 3 devices and similar with AMD CPUs have a
>> nonfunctional keyboard and lid switch after s2idle.
>>
>> It helps to delay suspend by 2.5 seconds so the EC has some time
>> to do whatever it needs to get done before suspend - unfortunately
>> at least on my 16ABR8 waking it with a timer (wakealarm) still
>> triggers the issue, but at least normal resume via keypress or
>> lid works fine. On the 14ARP10 wakealarm has been reported to also
>> work fine with this patch.
>>
>> This issue has been reported for many different devices, this patch
>> has been tested with the Zen3-based IdeaPad Slim 3 16ABR8 (82XR)
>> and the Zen3+-based IdeaPad Slim 3 14ARP10 (83K6) and IdeaPad Slim 3
>> 15ARP10 (83MM).
>>
>> Reported-by: Sindre Henriksen <sindrehenriksen93@xxxxxxxxx>
>> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=221383
>> Tested-by: Sindre Henriksen <sindrehenriksen93@xxxxxxxxx>
>> Suggested-by: Mario Limonciello (AMD) <superm1@xxxxxxxxxx>
>> Reviewed-by: Mario Limonciello (AMD) <superm1@xxxxxxxxxx>
>> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
>> Reviewed-by: Hans de Goede <johannes.goede@xxxxxxxxxxxxxxxx>
>> Signed-off-by: Daniel Gibson <daniel@xxxxxxxxx>
>> Cc: stable@xxxxxxxxxxxxxxx
>> ---
>> drivers/platform/x86/amd/pmc/pmc-quirks.c | 39 +++++++++++++++++++++++
>> drivers/platform/x86/amd/pmc/pmc.c | 24 +++++++++++++-
>> drivers/platform/x86/amd/pmc/pmc.h | 1 +
>> 3 files changed, 63 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/platform/x86/amd/pmc/pmc-quirks.c b/drivers/platform/x86/amd/pmc/pmc-quirks.c
>> index 24506e342943..74ddf1d8289a 100644
>> --- a/drivers/platform/x86/amd/pmc/pmc-quirks.c
>> +++ b/drivers/platform/x86/amd/pmc/pmc-quirks.c
>> @@ -18,6 +18,7 @@
>> struct quirk_entry {
>> u32 s2idle_bug_mmio;
>> bool spurious_8042;
>> + bool need_suspend_delay;
>> };
>>
>> static struct quirk_entry quirk_s2idle_bug = {
>> @@ -33,6 +34,10 @@ static struct quirk_entry quirk_s2idle_spurious_8042 = {
>> .spurious_8042 = true,
>> };
>>
>> +static struct quirk_entry quirk_s2idle_need_suspend_delay = {
>> + .need_suspend_delay = true,
>> +};
>> +
>> static const struct dmi_system_id fwbug_list[] = {
>> {
>> .ident = "L14 Gen2 AMD",
>> @@ -203,6 +208,35 @@ static const struct dmi_system_id fwbug_list[] = {
>> DMI_MATCH(DMI_PRODUCT_NAME, "82XQ"),
>> }
>> },
>> + /* https://bugzilla.kernel.org/show_bug.cgi?id=221383 */
>> + {
>> + .ident = "Zen3-based IdeaPad Slim and similar",
>> + .driver_data = &quirk_s2idle_need_suspend_delay,
>
> Hi,
>
> One more question.
>
> Sashiko noted, that amd_pmc_quirks_init() can overwrite
> disable_8042_wakeup from the AMD_CPU_ID_CZN check when .driver_data
> provides quirks. Is it okay in this case to not have .spurious_8042?
>
Good question.
So far I haven't had complaints that sounded like they'd be related to
this quirk not being active.
(The only report about things not working as expected on detected
devices was something about "ACPI event storms" after resume:
https://github.com/DanielGibson/amd_pmc-ideapad/issues/3 - but no one
else with similar devices could reproduce that, so no idea what's going
on there, and it doesn't sound like that IRQ1 issue)
I can test if explicitly enabling .spurious_8042 in
quirk_s2idle_need_suspend_delay breaks anything on my device, if you
think that enabling it by default makes more sense?