Re: [PATCH v5 2/4] platform/x86/amd/pmc: Delay suspend for some Lenovo Laptops

From: Mario Limonciello

Date: Tue Jun 09 2026 - 10:58:09 EST


On 6/9/26 07:07, Daniel Gibson wrote:
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?

Famous last words - but we haven't had a need for spurious 8042 on recent hardware so I think this is unlikely to be a big problem.