ACPI: x86: s2idle: Force AMD GUID/_REV 2 on HP Elitebook 865
authorMario Limonciello <mario.limonciello@amd.com>
Thu, 15 Dec 2022 19:16:15 +0000 (13:16 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Jan 2023 10:29:00 +0000 (11:29 +0100)
commit 3ea45390e9c0d35805ef8357ace55594fd4233d0 upstream.

HP Elitebook 865 supports both the AMD GUID w/ _REV 2 and Microsoft
GUID with _REV 0. Both have very similar code but the AMD GUID
has a special workaround that is specific to a problem with
spurious wakeups on systems with Qualcomm WLAN.

This is believed to be a bug in the Qualcomm WLAN F/W (it doesn't
affect any other WLAN H/W). If this WLAN firmware is fixed this
quirk can be dropped.

Cc: stable@vger.kernel.org # 6.1
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/acpi/x86/s2idle.c

index 5350c73..422415c 100644 (file)
@@ -401,6 +401,13 @@ static const struct acpi_device_id amd_hid_ids[] = {
        {}
 };
 
+static int lps0_prefer_amd(const struct dmi_system_id *id)
+{
+       pr_debug("Using AMD GUID w/ _REV 2.\n");
+       rev_id = 2;
+       return 0;
+}
+
 static int lps0_prefer_microsoft(const struct dmi_system_id *id)
 {
        pr_debug("Preferring Microsoft GUID.\n");
@@ -462,6 +469,19 @@ static const struct dmi_system_id s2idle_dmi_table[] __initconst = {
                        DMI_MATCH(DMI_PRODUCT_NAME, "ROG Flow X16 GV601"),
                },
        },
+       {
+               /*
+                * AMD Rembrandt based HP EliteBook 835/845/865 G9
+                * Contains specialized AML in AMD/_REV 2 path to avoid
+                * triggering a bug in Qualcomm WLAN firmware. This may be
+                * removed in the future if that firmware is fixed.
+                */
+               .callback = lps0_prefer_amd,
+               .matches = {
+                       DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
+                       DMI_MATCH(DMI_BOARD_NAME, "8990"),
+               },
+       },
        {}
 };