Bug 65211
Summary: | Incorrect PCIe Slot Capabilities returned on HP BL460c | ||
---|---|---|---|
Product: | Drivers | Reporter: | Bjorn Helgaas (bjorn) |
Component: | PCI | Assignee: | drivers_pci (drivers_pci) |
Status: | RESOLVED CODE_FIX | ||
Severity: | normal | CC: | myron.stowe |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
URL: | http://lkml.kernel.org/r/CAL-B5D2WtALi5RMX9JQQmVUShLEN947cdvr7jjnpfCXS3zmPVw@mail.gmail.com | ||
Kernel Version: | 3.7 | Subsystem: | |
Regression: | No | Bisected commit-id: |
Description
Bjorn Helgaas
2013-11-19 20:47:01 UTC
This was fixed in v3.12 by the following two changes: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c8b303d0206b28c4ff3aecada47108d1655ae00f https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6d3a1741f1e648cfbd5a0cc94477a0d5004c6f5e After these two changes, we read the Slot Capabilities register only if the device is either a Switch Downstream Port or a Root Port and the Port implements a slot. This corresponds to the language in the PCIe spec r3.0, sec. 7.8. Previously we relied on the spec statement that unimplemented registers in v2 capabilities must be hardwired to zero. We could use that to argue that the BL460c is out of spec, but it seems better to pay attention to the Slot Implemented bit in the PCIe Capabilities Register and not even bother reading the slot registers if there's no slot. lspci already behaves this way. This issue was reported and diagnosed by Myron Stowe <myron.stowe@redhat.com>. |