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-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html