Skip to contentSkip to conversation

ACPI / blacklist: disable Win8 mode for ThinkPad X201 and Latitude E6230

PATCH In review Aaron Lu 2 participants 6 messages Dec 6, 2013 – Dec 11, 2013 ACPI

lore
Share & tools
lore

Aaron Lu

author
#0 lore raw

PATCH 1/1 ACPI / blacklist: disable Win8 mode for ThinkPad X201 and Latitude E6230

Both ThinkPad X201 and Latitude E6230 have problems under Win8 mode, so blacklist Win8 mode for them.

Reference: https://bugzilla.kernel.org/show_bug.cgi?id=60697

Reported-and-tested-by Jeffery To <[email protected]>
Cc 3.8 and above <[email protected]>
---
 drivers/acpi/blacklist.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
drivers/acpi/blacklist.c +26 -0
index 05ee8f61bfb5..97a8e395f72e 100644
@@ -324,6 +324,32 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
 	},
 
 	/*
+	 * The bluetooth functionality is unconditionally enabled
+	 * after a S3 cycle on Thinkpad X201 under Win8 mode.
+	 */
+	{
+	.callback = dmi_disable_osi_win8,
+	.ident = "ThinkPad X201",
+	.matches = {
+		     DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+		     DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X201"),
+		},
+	},
+
+	/*
+	 * The hardware switch for enable/disable wifi on
+	 * Dell Latitude E6230 is broken under Win8 mode.
+	 */
+	{
+	.callback = dmi_disable_osi_win8,
+	.ident = "Dell Latitude E6230",
+	.matches = {
+		     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+		     DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6230"),
+		},
+	},
+
+	/*
 	 * BIOS invocation of _OSI(Linux) is almost always a BIOS bug.
 	 * Linux ignores it, except for the machines enumerated below.
 	 */
Signature · 1 line
1.8.3.1
author
#1 lore raw

Forgot to CC Len Brown, sorry.

-Aaron

Quoted 50 lines · Aaron Lu

Both ThinkPad X201 and Latitude E6230 have problems under Win8 mode, so blacklist Win8 mode for them.

Reference: https://bugzilla.kernel.org/show_bug.cgi?id=60697

Reported-and-tested-by Jeffery To <[email protected]>
Cc 3.8 and above <[email protected]>
---
 drivers/acpi/blacklist.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
drivers/acpi/blacklist.c +26 -0
index 05ee8f61bfb5..97a8e395f72e 100644
@@ -324,6 +324,32 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
 	},
 
 	/*
+	 * The bluetooth functionality is unconditionally enabled
+	 * after a S3 cycle on Thinkpad X201 under Win8 mode.
+	 */
+	{
+	.callback = dmi_disable_osi_win8,
+	.ident = "ThinkPad X201",
+	.matches = {
+		     DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+		     DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X201"),
+		},
+	},
+
+	/*
+	 * The hardware switch for enable/disable wifi on
+	 * Dell Latitude E6230 is broken under Win8 mode.
+	 */
+	{
+	.callback = dmi_disable_osi_win8,
+	.ident = "Dell Latitude E6230",
+	.matches = {
+		     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+		     DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6230"),
+		},
+	},
+
+	/*
 	 * BIOS invocation of _OSI(Linux) is almost always a BIOS bug.
 	 * Linux ignores it, except for the machines enumerated below.
 	 */
#2 lore raw
In reply to Aaron Lu

drivers/acpi/blacklist.c static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · line 329

Quoted 4 lines · Aaron Lu
drivers/acpi/blacklist.c +3 -0
 	/*
+	 * The bluetooth functionality is unconditionally enabled
+	 * after a S3 cycle on Thinkpad X201 under Win8 mode.
+	 */

Can you describe this in a little more detail? Does the thinkpad-acpi rfkill code just not work?

drivers/acpi/blacklist.c static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · line 342

Quoted 4 lines
drivers/acpi/blacklist.c +4 -0
+	/*
+	 * The hardware switch for enable/disable wifi on
+	 * Dell Latitude E6230 is broken under Win8 mode.
+	 */

Can you define "broken"? Do you see the same behaviour under Windows 8?

Signature · 1 line
Matthew Garrett | [email protected]
author
#3 lore raw
Quoted 8 lines · Matthew Garrett

drivers/acpi/blacklist.c static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · line 329

Quoted 4 lines · Aaron Lu
drivers/acpi/blacklist.c +3 -0
 	/*
+	 * The bluetooth functionality is unconditionally enabled
+	 * after a S3 cycle on Thinkpad X201 under Win8 mode.
+	 */

Can you describe this in a little more detail? Does the thinkpad-acpi rfkill code just not work?

Yes it works, the problem is, even the bluetooth is disabled before hibernate, it will be enabled after resume.

As Jeffery has put in comment #14:
"
With thinkpad_acpi blacklisted, Bluetooth is enabled on boot. I can't turn it off unless I run "modprobe thinkpad_acpi" beforehand. After turning Bluetooth off, I ran "rmmod thinkpad_acpi" before hibernating. I verified that thinkpad_acpi isn't loaded (with lsmod) before hibernating and after resuming. Bluetooth is enabled on resume.

I tried this same test with the acpi_osi="!Windows 2012" kernel parameter (and thinkpad_acpi blacklisted). Bluetooth is disabled on boot. I verified that thinkpad_acpi isn't loaded (with lsmod) before hibernating and after resuming. Bluetooth is disabled on resume. "

But I made a mistake in the comment, it's a S4 cycle, not a S3.

Quoted 7 lines

drivers/acpi/blacklist.c static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · line 342

Quoted 5 lines
drivers/acpi/blacklist.c +4 -0
+	/*
+	 * The hardware switch for enable/disable wifi on
+	 * Dell Latitude E6230 is broken under Win8 mode.
+	 */

Can you define "broken"? Do you see the same behaviour under Windows 8?

As Wouter has put in comment #12:
"
I also have trouble with this commit, it disables my hardware switch for enable/disable wifi. See [1] for full explanation.

When I add acpi_osi="!Windows 2012" it fixes my issue. "

#4 lore raw
Quoted 10 lines · Aaron Lu
Quoted 8 lines · Matthew Garrett

drivers/acpi/blacklist.c static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · line 329

Quoted 4 lines · Aaron Lu
drivers/acpi/blacklist.c +3 -0
 	/*
+	 * The bluetooth functionality is unconditionally enabled
+	 * after a S3 cycle on Thinkpad X201 under Win8 mode.
+	 */

Can you describe this in a little more detail? Does the thinkpad-acpi rfkill code just not work?

Quoted 2 lines

Yes it works, the problem is, even the bluetooth is disabled before hibernate, it will be enabled after resume.

Ok. thinkpad_acpi should be ensuring that the state is the same before and after resume. I don't think it's worth working around this in the core.

Quoted 7 lines
Quoted 6 lines

drivers/acpi/blacklist.c static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · line 342

Quoted 4 lines
drivers/acpi/blacklist.c +4 -0
+	/*
+	 * The hardware switch for enable/disable wifi on
+	 * Dell Latitude E6230 is broken under Win8 mode.
+	 */

Can you define "broken"? Do you see the same behaviour under Windows 8?

Quoted 7 lines

As Wouter has put in comment #12:
"
I also have trouble with this commit, it disables my hardware switch for enable/disable wifi. See [1] for full explanation.

When I add acpi_osi="!Windows 2012" it fixes my issue. "

I'd like to be able to dig into this rather than just going straight to blacklisting.

Signature · 1 line
Matthew Garrett | [email protected]
author
#5 lore raw
Quoted 30 lines · Matthew Garrett
Quoted 10 lines · Aaron Lu
Quoted 8 lines · Matthew Garrett

drivers/acpi/blacklist.c static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · line 329

Quoted 4 lines · Aaron Lu
drivers/acpi/blacklist.c +3 -0
 	/*
+	 * The bluetooth functionality is unconditionally enabled
+	 * after a S3 cycle on Thinkpad X201 under Win8 mode.
+	 */

Can you describe this in a little more detail? Does the thinkpad-acpi rfkill code just not work?

Quoted 2 lines

Yes it works, the problem is, even the bluetooth is disabled before hibernate, it will be enabled after resume.

Ok. thinkpad_acpi should be ensuring that the state is the same before and after resume. I don't think it's worth working around this in the core.

Quoted 12 lines
Quoted 6 lines

drivers/acpi/blacklist.c static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · line 342

Quoted 4 lines
drivers/acpi/blacklist.c +4 -0
+	/*
+	 * The hardware switch for enable/disable wifi on
+	 * Dell Latitude E6230 is broken under Win8 mode.
+	 */

Can you define "broken"? Do you see the same behaviour under Windows 8?

As Wouter has put in comment #12:
"
I also have trouble with this commit, it disables my hardware switch for enable/disable wifi. See [1] for full explanation.

Quoted 5 lines
Quoted 2 lines

When I add acpi_osi="!Windows 2012" it fixes my issue. "

I'd like to be able to dig into this rather than just going straight to blacklisting.

Sure, I'll re-assign that bug to Drivers/Platform then, thanks for helping.