lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 12 Jul 2023 20:50:23 +0300
From:   Maxim Mikityanskiy <maxtram95@...il.com>
To:     Alex Hung <alexhung@...il.com>,
        Hans de Goede <hdegoede@...hat.com>,
        Mark Gross <markgross@...nel.org>
Cc:     platform-driver-x86@...r.kernel.org, linux-kernel@...r.kernel.org,
        Richard Hughes <hughsient@...il.com>,
        Jorge Lopez <jorge.lopez2@...com>,
        Maxim Mikityanskiy <maxtram95@...il.com>
Subject: [PATCH] platform/x86/intel/hid: Add HP Dragonfly G2 to DMI quirks

SW_TABLET_MODE reports are broken on BIOS versions newer than 1.9.1 on
HP Elite Dragonfly G2. Analysis of SSDT9 shows that the BTNL method has
to be called to start getting 0xcc and 0xcd events. Apparently, the
button_array_present method used to return true on BIOS 1.9.1 and older,
but it returns false on newer BIOSes due to HEBC returning 0x000033f3
(bits 0x60000 and 0x20000 are not set).

Add this laptop to button_array_table to force the BTNL call, and also
add it to dmi_vgbs_allow_list to read the initial state and sync VBDS
with VBPS, because this laptop has a reliable VGBS method.

Tested with BIOS 1.13.1.

Signed-off-by: Maxim Mikityanskiy <maxtram95@...il.com>
---
 drivers/platform/x86/intel/hid.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/platform/x86/intel/hid.c b/drivers/platform/x86/intel/hid.c
index 5632bd3c534a..5c78b476ed1e 100644
--- a/drivers/platform/x86/intel/hid.c
+++ b/drivers/platform/x86/intel/hid.c
@@ -128,6 +128,13 @@ static const struct dmi_system_id button_array_table[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "Surface Go 3"),
 		},
 	},
+	{
+		.ident = "HP Elite Dragonfly G2",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "HP"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Elite Dragonfly G2 Notebook PC"),
+		},
+	},
 	{ }
 };
 
@@ -150,6 +157,12 @@ static const struct dmi_system_id dmi_vgbs_allow_list[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "Surface Go"),
 		},
 	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "HP"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Elite Dragonfly G2 Notebook PC"),
+		},
+	},
 	{ }
 };
 
-- 
2.41.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ