On Wed, Jun 27, 2012 at 7:32 AM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: >> I do still plan to work on bisecting this. > > Can you also attach a dmesg log from a current kernel, e.g., 3.4 or > newer? We now print a lot more information during PCI enumeration. > > But I guess the problem is that 2.6.26 finds devices in domains 1 and > 2, while 2.6.32 does not. I think MMCONFIG is the only config access > method we have for domains other than 0. That suggests that MMCONFIG > used to work but doesn't any more. The dmesg logs claim that we're > not using MMCONFIG in either 2.6.26 or 2.6.32 though, so I don't know > why we found anything in 2.6.26. in short: the bios is broken, it return wrong segment in DSDT. in both case, only pci_conf1 is used. CPU is not new enough. after comparing the code 2.6.26 and 2.6.32. 2.6.26 is not checking seg in pci_conf1_read. but 2.6.32 check that... 2.6.26: static int pci_conf1_read(unsigned int seg, unsigned int bus, unsigned int devfn, int reg, int len, u32 *value) { unsigned long flags; if ((bus > 255) || (devfn > 255) || (reg > 255)) { *value = -1; return -EINVAL; } 2.6.32 20 static int pci_conf1_read(unsigned int seg, unsigned int bus, 21 unsigned int devfn, int reg, int len, u32 *value) 22 { 23 unsigned long flags; 24 25 if (seg || (bus > 255) || (devfn > 255) || (reg > 4095)) { 26 *value = -1; 27 return -EINVAL; 28 } so it happens to work on 2.6.26. please get to get new BIOS from your vendor. or you need to override your DSDT. Thanks Yinghai -- 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