Patch "platform/x86/amd/pmc: Disable keyboard wakeup on AMD Framework 13" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    platform/x86/amd/pmc: Disable keyboard wakeup on AMD Framework 13

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     platform-x86-amd-pmc-disable-keyboard-wakeup-on-amd-.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 7be768072030a57aca6c4ea5f73154d64b8f609e
Author: Mario Limonciello <mario.limonciello@xxxxxxx>
Date:   Mon Dec 11 22:50:06 2023 -0600

    platform/x86/amd/pmc: Disable keyboard wakeup on AMD Framework 13
    
    [ 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@xxxxxxxxxxxxx>
    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@xxxxxxx>
    Link: https://lore.kernel.org/r/20231212045006.97581-5-mario.limonciello@xxxxxxx
    Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/platform/x86/amd/pmc/pmc-quirks.c b/drivers/platform/x86/amd/pmc/pmc-quirks.c
index c32046dfa960..b456370166b6 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;
 }




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux