diff mbox

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

Message ID 52A15F72.1050408@intel.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Aaron Lu Dec. 6, 2013, 5:24 a.m. UTC
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 <jeffery.to@gmail.com>
Reported-and-tested-by: Wouter Depypere <wouter.depypere@ugent.be>
Cc: 3.8 and above <stable@vger.kernel.org>
Signed-off-by: Aaron Lu <aaron.lu@intel.com>
---
 drivers/acpi/blacklist.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

Comments

Aaron Lu Dec. 6, 2013, 6:18 a.m. UTC | #1
Forgot to CC Len Brown, sorry.

-Aaron

On 12/06/2013 01:24 PM, Aaron Lu wrote:
> 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 <jeffery.to@gmail.com>
> Reported-and-tested-by: Wouter Depypere <wouter.depypere@ugent.be>
> Cc: 3.8 and above <stable@vger.kernel.org>
> Signed-off-by: Aaron Lu <aaron.lu@intel.com>
> ---
>  drivers/acpi/blacklist.c | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
> 
> diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
> index 05ee8f61bfb5..97a8e395f72e 100644
> --- a/drivers/acpi/blacklist.c
> +++ b/drivers/acpi/blacklist.c
> @@ -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.
>  	 */
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Matthew Garrett Dec. 9, 2013, 4:58 p.m. UTC | #2
On Fri, Dec 06, 2013 at 01:24:02PM +0800, Aaron Lu wrote:
>  	/*
> +	 * 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?

> +	/*
> +	 * 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?
Aaron Lu Dec. 10, 2013, 3:05 a.m. UTC | #3
On 12/10/2013 12:58 AM, Matthew Garrett wrote:
> On Fri, Dec 06, 2013 at 01:24:02PM +0800, Aaron Lu wrote:
>>  	/*
>> +	 * 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.

> 
>> +	/*
>> +	 * 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.
"
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Matthew Garrett Dec. 10, 2013, 5:01 p.m. UTC | #4
On Tue, Dec 10, 2013 at 11:05:21AM +0800, Aaron Lu wrote:
> On 12/10/2013 12:58 AM, Matthew Garrett wrote:
> > On Fri, Dec 06, 2013 at 01:24:02PM +0800, Aaron Lu wrote:
> >>  	/*
> >> +	 * 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.

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.

> >> +	/*
> >> +	 * 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.
> "

I'd like to be able to dig into this rather than just going straight to 
blacklisting.
Aaron Lu Dec. 11, 2013, 12:26 a.m. UTC | #5
On 12/11/2013 01:01 AM, Matthew Garrett wrote:
> On Tue, Dec 10, 2013 at 11:05:21AM +0800, Aaron Lu wrote:
>> On 12/10/2013 12:58 AM, Matthew Garrett wrote:
>>> On Fri, Dec 06, 2013 at 01:24:02PM +0800, Aaron Lu wrote:
>>>>  	/*
>>>> +	 * 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.
> 
> 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.
> 
>>>> +	/*
>>>> +	 * 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.
>> "
> 
> 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.
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
index 05ee8f61bfb5..97a8e395f72e 100644
--- a/drivers/acpi/blacklist.c
+++ b/drivers/acpi/blacklist.c
@@ -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.
 	 */