Skip to contentSkip to conversation

dell-smbios-base: Extends support to Alienware products

PATCH In review Kurt Borja 4 participants 7 messages Oct 31, 2024 – Nov 4, 2024

Subsystems (2)
lore
Share & tools
lore

Kurt Borja

author
#0 lore raw

PATCH v2 1/2 dell-smbios-base: Extends support to Alienware products

Fixes the following error:

dell_smbios: Unable to run on non-Dell system

Which is triggered after dell-wmi driver fails to initialize on Alienware systems, as it depends on dell-smbios.

This effectively extends dell-wmi, dell-smbios and dcdbas support to Alienware devices, that might share some features of the SMBIOS intereface calling interface with other Dell products.

Tested on an Alienware X15 R1.

---
v2:
- Commit message reflects Alienware devices may not necessarily support the SMBIOS interface
- Commit message now has "Tested on"

---
 drivers/platform/x86/dell/dell-smbios-base.c | 1 +
 1 file changed, 1 insertion(+)
drivers/platform/x86/dell/dell-smbios-base.c +1 -0
index 73e41eb69..01c72b91a 100644
@@ -576,6 +576,7 @@ static int __init dell_smbios_init(void)
 	int ret, wmi, smm;
 
 	if (!dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Dell System", NULL) &&
+	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Alienware", NULL) &&
 	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "www.dell.com", NULL)) {
 		pr_err("Unable to run on non-Dell system\n");
 		return -ENODEV;
Signature · 1 line
2.47.0
author
#1 lore raw

PATCH v2 2/2 dell-wmi-base: Handle META key Lock/Unlock events

Some Alienware devices have a key that locks/unlocks the Meta key. This key triggers a WMI event that should be ignored by the kernel, as it's handled by internally the firmware.

There is no known way of changing this default behavior. The firmware would lock/unlock the Meta key, regardless of how the event is handled.

Tested on an Alienware x15 R1.

---
v2:
- Fixed entry style
- Commit message clarifies firmware behavior
- Commit message now has "Tested on"

---
 drivers/platform/x86/dell/dell-wmi-base.c | 6 ++++++
 1 file changed, 6 insertions(+)
drivers/platform/x86/dell/dell-wmi-base.c +6 -0
index 502783a7a..ce421e51b 100644
@@ -80,6 +80,12 @@ static const struct dmi_system_id dell_wmi_smbios_list[] __initconst = {
 static const struct key_entry dell_wmi_keymap_type_0000[] = {
 	{ KE_IGNORE, 0x003a, { KEY_CAPSLOCK } },
 
+	/* Meta key lock */
+	{ KE_IGNORE, 0xe000, { KEY_RIGHTMETA } },
+
+	/* Meta key unlock */
+	{ KE_IGNORE, 0xe001, { KEY_RIGHTMETA } },
+
 	/* Key code is followed by brightness level */
 	{ KE_KEY,    0xe005, { KEY_BRIGHTNESSDOWN } },
 	{ KE_KEY,    0xe006, { KEY_BRIGHTNESSUP } },
Signature · 1 line
2.47.0
Reviewed-by on v2 2/2
#2 lore raw

Re: [PATCH v2 2/2] dell-wmi-base: Handle META key Lock/Unlock events

Quoted 7 lines · Kurt Borja

Some Alienware devices have a key that locks/unlocks the Meta key. This key triggers a WMI event that should be ignored by the kernel, as it's handled by internally the firmware.

There is no known way of changing this default behavior. The firmware would lock/unlock the Meta key, regardless of how the event is handled.

Thinking through why this event exists, it's probably so that there can be a toast message or popup or something similar in Windows to show an icon that it was changed, which doesn't currently exist in Linux.

Quoted 29 lines

Tested on an Alienware x15 R1.

---
v2:
- Fixed entry style
- Commit message clarifies firmware behavior
- Commit message now has "Tested on"

---
  drivers/platform/x86/dell/dell-wmi-base.c | 6 ++++++
  1 file changed, 6 insertions(+)
drivers/platform/x86/dell/dell-wmi-base.c +6 -0
index 502783a7a..ce421e51b 100644
@@ -80,6 +80,12 @@ static const struct dmi_system_id dell_wmi_smbios_list[] __initconst = {
  static const struct key_entry dell_wmi_keymap_type_0000[] = {
  	{ KE_IGNORE, 0x003a, { KEY_CAPSLOCK } },
 
+	/* Meta key lock */
+	{ KE_IGNORE, 0xe000, { KEY_RIGHTMETA } },
+
+	/* Meta key unlock */
+	{ KE_IGNORE, 0xe001, { KEY_RIGHTMETA } },
+
  	/* Key code is followed by brightness level */
  	{ KE_KEY,    0xe005, { KEY_BRIGHTNESSDOWN } },
  	{ KE_KEY,    0xe006, { KEY_BRIGHTNESSUP } },
maintainer Acked-by on v2 2/2
#3 lore raw

Re: [PATCH v2 2/2] dell-wmi-base: Handle META key Lock/Unlock events

In reply to Kurt Borja
Quoted 10 lines · On Thursday 31 October 2024 12:44:42 Kurt Borja wrote:

Some Alienware devices have a key that locks/unlocks the Meta key. This key triggers a WMI event that should be ignored by the kernel, as it's handled by internally the firmware.

There is no known way of changing this default behavior. The firmware would lock/unlock the Meta key, regardless of how the event is handled.

Tested on an Alienware x15 R1.

Quoted 29 lines

---
v2:
- Fixed entry style
- Commit message clarifies firmware behavior
- Commit message now has "Tested on"

---
 drivers/platform/x86/dell/dell-wmi-base.c | 6 ++++++
 1 file changed, 6 insertions(+)
drivers/platform/x86/dell/dell-wmi-base.c +6 -0
index 502783a7a..ce421e51b 100644
@@ -80,6 +80,12 @@ static const struct dmi_system_id dell_wmi_smbios_list[] __initconst = {
 static const struct key_entry dell_wmi_keymap_type_0000[] = {
 	{ KE_IGNORE, 0x003a, { KEY_CAPSLOCK } },
 
+	/* Meta key lock */
+	{ KE_IGNORE, 0xe000, { KEY_RIGHTMETA } },
+
+	/* Meta key unlock */
+	{ KE_IGNORE, 0xe001, { KEY_RIGHTMETA } },
+
 	/* Key code is followed by brightness level */
 	{ KE_KEY,    0xe005, { KEY_BRIGHTNESSDOWN } },
 	{ KE_KEY,    0xe006, { KEY_BRIGHTNESSUP } },
Signature · 1 line
2.47.0
Reviewed-by on v2 1/2
#4 lore raw
In reply to Kurt Borja
Quoted 7 lines · Kurt Borja

Fixes the following error:

dell_smbios: Unable to run on non-Dell system

Which is triggered after dell-wmi driver fails to initialize on Alienware systems, as it depends on dell-smbios.

Quoted 7 lines

This effectively extends dell-wmi, dell-smbios and dcdbas support to Alienware devices, that might share some features of the SMBIOS intereface calling interface with other Dell products.

Tested on an Alienware X15 R1.

Quoted 14 lines

---
v2:
- Commit message reflects Alienware devices may not necessarily support the SMBIOS interface
- Commit message now has "Tested on"

---
  drivers/platform/x86/dell/dell-smbios-base.c | 1 +
  1 file changed, 1 insertion(+)
drivers/platform/x86/dell/dell-smbios-base.c +0 -0
index 73e41eb69..01c72b91a 100644

drivers/platform/x86/dell/dell-smbios-base.c static int __init dell_smbios_init(void) · line 582

Quoted 7 lines
drivers/platform/x86/dell/dell-smbios-base.c +1 -0
@@ -576,6 +576,7 @@ static int __init dell_smbios_init(void)
  	int ret, wmi, smm;
 
  	if (!dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Dell System", NULL) &&
+	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Alienware", NULL) &&
  	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "www.dell.com", NULL)) {
  		pr_err("Unable to run on non-Dell system\n");
  		return -ENODEV;

There was a really similar change that got committed recently to dell-wmi-sysman:

https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/commit/?h=fixes&id=a561509b4187a8908eb7fbb2d1bf35bbc20ec74b

The lines are identical now. Is it also worth splitting out to a helper? Not sure.

maintainer Acked-by on v2 1/2
#5 lore raw
In reply to Kurt Borja
Quoted 7 lines · On Thursday 31 October 2024 12:40:24 Kurt Borja wrote:

Fixes the following error:

dell_smbios: Unable to run on non-Dell system

Which is triggered after dell-wmi driver fails to initialize on Alienware systems, as it depends on dell-smbios.

Quoted 7 lines

This effectively extends dell-wmi, dell-smbios and dcdbas support to Alienware devices, that might share some features of the SMBIOS intereface calling interface with other Dell products.

Tested on an Alienware X15 R1.

Quoted 24 lines

---
v2:
- Commit message reflects Alienware devices may not necessarily support the SMBIOS interface
- Commit message now has "Tested on"

---
 drivers/platform/x86/dell/dell-smbios-base.c | 1 +
 1 file changed, 1 insertion(+)
drivers/platform/x86/dell/dell-smbios-base.c +1 -0
index 73e41eb69..01c72b91a 100644
@@ -576,6 +576,7 @@ static int __init dell_smbios_init(void)
 	int ret, wmi, smm;
 
 	if (!dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Dell System", NULL) &&
+	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Alienware", NULL) &&
 	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "www.dell.com", NULL)) {
 		pr_err("Unable to run on non-Dell system\n");
 		return -ENODEV;
Signature · 1 line
2.47.0
#6 lore raw
In reply to Kurt Borja

Hi,

Quoted 7 lines · Kurt Borja

Fixes the following error:

dell_smbios: Unable to run on non-Dell system

Which is triggered after dell-wmi driver fails to initialize on Alienware systems, as it depends on dell-smbios.

Quoted 7 lines

This effectively extends dell-wmi, dell-smbios and dcdbas support to Alienware devices, that might share some features of the SMBIOS intereface calling interface with other Dell products.

Tested on an Alienware X15 R1.

Thank you for your patches, I've applied both patches to my review-hans branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans

Note they will show up in my review-hans branch once I've pushed my local branch there, which might take a while.

I will include these patches in my next fixes pull-req to Linus for the current kernel development cycle.

Regards,

Hans

Quoted 22 lines

---
v2:
- Commit message reflects Alienware devices may not necessarily support the SMBIOS interface
- Commit message now has "Tested on"

---
 drivers/platform/x86/dell/dell-smbios-base.c | 1 +
 1 file changed, 1 insertion(+)
drivers/platform/x86/dell/dell-smbios-base.c +1 -0
index 73e41eb69..01c72b91a 100644
@@ -576,6 +576,7 @@ static int __init dell_smbios_init(void)
 	int ret, wmi, smm;
 
 	if (!dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Dell System", NULL) &&
+	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Alienware", NULL) &&
 	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "www.dell.com", NULL)) {
 		pr_err("Unable to run on non-Dell system\n");
 		return -ENODEV;