--- linux/drivers/pci/probe.c Sat Nov 4 04:33:58 2006 +++ linux-2.6.18.2/drivers/pci/probe.c Fri Nov 17 19:13:31 2006 @@ -165,8 +165,18 @@ l = 0; if ((l & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_MEMORY) { sz = pci_size(l, sz, (u32)PCI_BASE_ADDRESS_MEM_MASK); - if (!sz) - continue; + if (!sz) { + /* if BAR space is over 4GB we need to make sure that + we don't bail out if the size is zero */ + if ((l & + (PCI_BASE_ADDRESS_SPACE | PCI_BASE_ADDRESS_MEM_TYPE_MASK)) + == (PCI_BASE_ADDRESS_SPACE_MEMORY | + PCI_BASE_ADDRESS_MEM_TYPE_64)) { + sz = 0xffffffff; + } else { + continue; + } + } res->start = l & PCI_BASE_ADDRESS_MEM_MASK; res->flags |= l & ~PCI_BASE_ADDRESS_MEM_MASK; } else {