On Tuesday, April 02, 2013 05:58:42 PM Bjorn Helgaas wrote: > On Tue, Apr 2, 2013 at 4:49 PM, Rafael J. Wysocki <rjw@xxxxxxx> wrote: > > On Tuesday, April 02, 2013 10:30:54 AM Bjorn Helgaas wrote: > >> On Tue, Apr 2, 2013 at 9:02 AM, Martin Mokrejs > >> <mmokrejs@xxxxxxxxxxxxxxxxxx> wrote: > >> > Hi Ying, > >> > > >> > huang ying wrote: > >> > >> >> And please give me the full dmesg for boot and incremental dmesg for > >> >> operations. > >> > > >> > > >> > The incremental bits here, the full dmesg will send only directly to your email, due to its size. > >> > >> Is there a bugzilla for this issue? Please attach the complete dmesg > >> there or somewhere similar so we can all benefit. > >> > >> I think we have two problems that may be relevant to this discussion. > >> > >> 1) The _OSC "PCI Express Capability Structure control" bit. I don't > >> think Linux pays attention to whether the BIOS has granted us control > >> over the capability, so we may do things to it that the BIOS doesn't > >> expect. > > > > Yes, it does, as far as I can say. > > Let me expand on this to see if we're talking about the same thing. > I'm looking at Tables 6-149 and 6-150 in ACPI spec 5.0, and I > interpret them as saying the OS should not perform any configuration > in the PCI Express, VC, Power Budgeting, AER, or Serial Number > capabilities unless the BIOS grants "PCI Express Capability Structure > control." > > I see the code in acpi_pci_root_add() that runs _OSC with > OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL in flags, but I don't see > anything that uses the result to decide whether we can write to the > Device Control, Link Control, Slot Control, etc., registers in the > capability, or to the other extended capabilities. (ASPM is an > exception -- we *do* call pcie_no_aspm(), and maybe that keeps us from > touching the ASPM part of Link Control.) > > I haven't looked deeply enough to identify a problem; it's just > something that worries me. That actually is more convoluted. Because we pass OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL to acpi_pci_osc_control_set() as the minimum requirement, it won't request any of the other PCIe flags without it. This causes those flags to be unset in root->osc_control_set and then *srv_mask from pcie_port_acpi_setup() will always be 0, in which case no native PCIe port services will be used. Of course, whether this is sufficient or not is a good question. Thanks, Rafael -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html