Re: 3.8.0-rc4+ - Oops on removing WinTV-HVR-1400 expresscard TV Tuner

From: Bjorn Helgaas
Date: Tue Mar 12 2013 - 18:21:27 EST


On Sat, Mar 9, 2013 at 2:20 AM, Chris Clayton <chris2553@xxxxxxxxxxxxxx> wrote:
> Hi Bjorn,
>
>
> On 03/08/13 22:57, Bjorn Helgaas wrote:
>>
>> [+cc Rafael, in case the _OSC thing rings a bell with him]
>>
>> On Fri, Mar 8, 2013 at 3:44 AM, Chris Clayton <chris2553@xxxxxxxxxxxxxx>
>> wrote:
>>>
>>> On 03/08/13 00:39, Bjorn Helgaas wrote:
>>>>
>>>> On Thu, Mar 7, 2013 at 1:21 PM, Chris Clayton <chris2553@xxxxxxxxxxxxxx>
>>>> wrote:
>>>>>
>>>>> On 03/07/13 17:30, Bjorn Helgaas wrote:

>>>> It looks like something's going wrong when we evaluate _OSC. Can you
>>>> collect an acpidump from your machine?
>>>>
>>> A bziped file containing the output from acpidump is attached.
>>
>>
>> Thanks. I opened this bug report:
>> https://bugzilla.kernel.org/show_bug.cgi?id=54981 to keep track of
>> your logs.
>>
>
> Excellent, thanks.
>
>
>> Here's your _OSC method from the acpidump:
>>
>> Method (_OSC, 4, Serialized) {
>> ...
>> If (LAnd (LEqual (Arg0, GUID), NEXP))
>> ... # normal case
>> Else {
>> Or (CDW1, 0x04, CDW1) # "unrecognized UUID" error
>> Return (Local0)
>> }
>>
>> It fails with "unrecognized UUID" if either (1) we supply the wrong
>> UUID or (2) "NEXP" is false. I have no idea what NEXP is; your
>> DSDT.dsl never sets it, so maybe it's related to a BIOS setup option
>> or something? I found a BIOS manual [1] but didn't see anything
>> likely. I guess it might be worth you looking, or maybe trying a
>> "reset to defaults" if it's not too destructive for you. You don't
>
>
> As the manual showed, there aren't too many user-changeable settings in the
> BIOS on this machine, so I tried a "reset to defaults". Unfortunately, it
> made no difference.

Yeah, no surprise, I guess, since it works fine in Windows with the
current BIOS settings.

I looked at the DSDTs from several other machines and quite a few of
them use similar NEXP tests. NEXP is in the GNVS area, which is
apparently used for communication between BIOS/ACPI/SMI, and I think
it means "Native PCIe support." The BIOS probably initializes it,
possibly based on the machine type or something.

The _OSC description (ACPI 5.0 sec 6.2.10.3) is pretty clear that if a
host bridge doesn't have an _OSC method, the OS should not use
features like PCIe native hotplug. That's why the Linux pciehp driver
isn't doing anything here. It's possible that Windows is using PCIe
native hotplug anyway (maybe they figure "unrecognized UUID" is
different from _OSC being completely absent), or maybe there's some
way it could be using ACPI hotplug (though I *think* that would
require some more methods that your box doesn't suppy).

My guess is the former, and maybe we can figure out a way to relax
Linux's strictness around _OSC handling.

Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/