Re: [Patch v2] Make PCI extended config space (MMCONFIG) a driver opt-in

Linus Torvalds
2007-12-27T21:47:55Z

On Thu, 27 Dec 2007, Linus Torvalds wrote:
>
> Kai, can you try that? Just remove the call to pci_enable_crs() in
> pci_scan_bridge() in drivers/pci/probe.c, and see if mmconfig starts
> working for you?

We could also make the error handling more permissive, and just check for
the low 16 bits, which is the part that the CRS spec mentions the actual
value for. The whole vendor ID of 0x0001 is mentioned int he CRS spec as
being explicitly chosen exactly because it's invalid.

That said, given that we don't actually reap any benefits from CRS support
right now *anyway*, I think the right thing to do is disable it by
default. But it would be interesting to know if this patch makes it work
on those ATI bridges..

Linus

---
drivers/pci/probe.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 2f75d69..94cd3a4 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -908,7 +908,7 @@ pci_scan_device(struct pci_bus *bus, int devfn)
return NULL;

/* Configuration request Retry Status */
- while (l == 0xffff0001) {
+ while ((l & 0xffff) == 0x0001) {
msleep(delay);
delay *= 2;
if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))