public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: "Mario Limonciello" <mario.limonciello@amd.com>,
	"Kieran Levin" <ktl@framework.net>,
	"Hans de Goede" <hdegoede@redhat.com>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"Sasha Levin" <sashal@kernel.org>,
	Shyam-sundar.S-k@amd.com, platform-driver-x86@vger.kernel.org
Subject: [PATCH AUTOSEL 6.6 23/39] platform/x86/amd/pmc: Disable keyboard wakeup on AMD Framework 13
Date: Mon, 25 Dec 2023 19:19:13 -0500	[thread overview]
Message-ID: <20231226002021.4776-23-sashal@kernel.org> (raw)
In-Reply-To: <20231226002021.4776-1-sashal@kernel.org>

From: Mario Limonciello <mario.limonciello@amd.com>

[ Upstream commit a55bdad5dfd1efd4ed9ffe518897a21ca8e4e193 ]

The Laptop 13 (AMD Ryzen 7040Series) BIOS 03.03 has a workaround
included in the EC firmware that will cause the EC to emit a "spurious"
keypress during the resume from s0i3 [1].

This series of keypress events can be observed in the kernel log on
resume.

```
atkbd serio0: Unknown key pressed (translated set 2, code 0x6b on isa0060/serio0).
atkbd serio0: Use 'setkeycodes 6b <keycode>' to make it known.
atkbd serio0: Unknown key released (translated set 2, code 0x6b on isa0060/serio0).
atkbd serio0: Use 'setkeycodes 6b <keycode>' to make it known.
```

In some user flows this is harmless, but if a user has specifically
suspended the laptop and then closed the lid it will cause the laptop
to wakeup. The laptop wakes up because the ACPI SCI triggers when
the lid is closed and when the kernel sees that IRQ1 is "also" active.
The kernel can't distinguish from a real keyboard keypress and wakes the
system.

Add the model into the list of quirks to disable keyboard wakeup source.
This is intentionally only matching the production BIOS version in hopes
that a newer EC firmware included in a newer BIOS can avoid this behavior.

Cc: Kieran Levin <ktl@framework.net>
Link: https://github.com/FrameworkComputer/EmbeddedController/blob/lotus-zephyr/zephyr/program/lotus/azalea/src/power_sequence.c#L313 [1]
Link: https://community.frame.work/t/amd-wont-sleep-properly/41755
Link: https://community.frame.work/t/tracking-framework-amd-ryzen-7040-series-lid-wakeup-behavior-feedback/39128
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20231212045006.97581-5-mario.limonciello@amd.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/platform/x86/amd/pmc/pmc-quirks.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/platform/x86/amd/pmc/pmc-quirks.c b/drivers/platform/x86/amd/pmc/pmc-quirks.c
index c32046dfa960e..b456370166b6b 100644
--- a/drivers/platform/x86/amd/pmc/pmc-quirks.c
+++ b/drivers/platform/x86/amd/pmc/pmc-quirks.c
@@ -16,12 +16,17 @@
 
 struct quirk_entry {
 	u32 s2idle_bug_mmio;
+	bool spurious_8042;
 };
 
 static struct quirk_entry quirk_s2idle_bug = {
 	.s2idle_bug_mmio = 0xfed80380,
 };
 
+static struct quirk_entry quirk_spurious_8042 = {
+	.spurious_8042 = true,
+};
+
 static const struct dmi_system_id fwbug_list[] = {
 	{
 		.ident = "L14 Gen2 AMD",
@@ -193,6 +198,16 @@ static const struct dmi_system_id fwbug_list[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "HP Laptop 15s-eq2xxx"),
 		}
 	},
+	/* https://community.frame.work/t/tracking-framework-amd-ryzen-7040-series-lid-wakeup-behavior-feedback/39128 */
+	{
+		.ident = "Framework Laptop 13 (Phoenix)",
+		.driver_data = &quirk_spurious_8042,
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Framework"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Laptop 13 (AMD Ryzen 7040Series)"),
+			DMI_MATCH(DMI_BIOS_VERSION, "03.03"),
+		}
+	},
 	{}
 };
 
@@ -245,4 +260,6 @@ void amd_pmc_quirks_init(struct amd_pmc_dev *dev)
 	if (dev->quirks->s2idle_bug_mmio)
 		pr_info("Using s2idle quirk to avoid %s platform firmware bug\n",
 			dmi_id->ident);
+	if (dev->quirks->spurious_8042)
+		dev->disable_8042_wakeup = true;
 }
-- 
2.43.0


  parent reply	other threads:[~2023-12-26  0:21 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-26  0:18 [PATCH AUTOSEL 6.6 01/39] Input: psmouse - enable Synaptics InterTouch for ThinkPad L14 G1 Sasha Levin
2023-12-26  0:18 ` [PATCH AUTOSEL 6.6 02/39] reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning Sasha Levin
2023-12-26  0:18 ` [PATCH AUTOSEL 6.6 03/39] Input: atkbd - skip ATKBD_CMD_GETID in translated mode Sasha Levin
2023-12-26  0:18 ` [PATCH AUTOSEL 6.6 04/39] Input: i8042 - add nomux quirk for Acer P459-G2-M Sasha Levin
2023-12-26  0:18 ` [PATCH AUTOSEL 6.6 05/39] Input: amimouse - convert to platform remove callback returning void Sasha Levin
2023-12-26  0:18 ` [PATCH AUTOSEL 6.6 06/39] pinctrl: amd: Mask non-wake source pins with interrupt enabled at suspend Sasha Levin
2023-12-26  0:18 ` [PATCH AUTOSEL 6.6 07/39] spi: cadence: revert "Add SPI transfer delays" Sasha Levin
2023-12-26  0:18 ` [PATCH AUTOSEL 6.6 08/39] ASoC: cs35l45: Use modern pm_ops Sasha Levin
2023-12-26  0:18 ` [PATCH AUTOSEL 6.6 09/39] ASoC: cs35l45: Prevent IRQ handling when suspending/resuming Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 10/39] ASoC: cs35l45: Prevents spinning during runtime suspend Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 11/39] s390/scm: fix virtual vs physical address confusion Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 12/39] ARC: fix spare error Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 13/39] ARC: fix smatch warning Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 14/39] wifi: iwlwifi: pcie: avoid a NULL pointer dereference Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 15/39] Input: xpad - add Razer Wolverine V2 support Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 16/39] driver core: Add a guard() definition for the device_lock() Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 17/39] kselftest: alsa: fixed a print formatting warning Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 18/39] HID: nintendo: fix initializer element is not constant error Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 19/39] platform/x86: thinkpad_acpi: fix for incorrect fan reporting on some ThinkPad systems Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 20/39] platform/x86/amd/pmc: Move platform defines to header Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 21/39] platform/x86/amd/pmc: Only run IRQ1 firmware version check on Cezanne Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 22/39] platform/x86/amd/pmc: Move keyboard wakeup disablement detection to pmc-quirks Sasha Levin
2023-12-26  0:19 ` Sasha Levin [this message]
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 24/39] ASoC: Intel: bytcr_rt5640: Add quirk for the Medion Lifetab S10346 Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 25/39] ASoC: Intel: bytcr_rt5640: Add new swapped-speakers quirk Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 26/39] ALSA: hda/realtek: Add quirks for ASUS Zenbook 2022 Models Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 27/39] dm audit: fix Kconfig so DM_AUDIT depends on BLK_DEV_DM Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 28/39] HID: nintendo: Prevent divide-by-zero on code Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 29/39] smb: client: fix potential OOB in smb2_dump_detail() Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 30/39] Revert "nvme-fc: fix race between error recovery and creating association" Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 31/39] i2c: rk3x: fix potential spinlock recursion on poll Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 32/39] drm/amdkfd: svm range always mapped flag not working on APU Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 33/39] drm/amd/display: Add case for dcn35 to support usb4 dmub hpd event Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 34/39] drm/amd/display: get dprefclk ss info from integration info table Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 35/39] pinctrl: cy8c95x0: Fix typo Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 36/39] pinctrl: cy8c95x0: Fix regression Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 37/39] pinctrl: cy8c95x0: Fix get_pincfg Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 38/39] posix-timers: Get rid of [COMPAT_]SYS_NI() uses Sasha Levin
2023-12-26  0:19 ` [PATCH AUTOSEL 6.6 39/39] ida: Fix crash in ida_free when the bitmap is empty Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231226002021.4776-23-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=Shyam-sundar.S-k@amd.com \
    --cc=hdegoede@redhat.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=ktl@framework.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mario.limonciello@amd.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox