|
@@ -724,12 +724,14 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
|
|
|
pci_write_config_word(dev, PCI_STATUS, 0xffff);
|
|
|
|
|
|
/* Prevent assigning a bus number that already exists.
|
|
|
- * This can happen when a bridge is hot-plugged */
|
|
|
- if (pci_find_bus(pci_domain_nr(bus), max+1))
|
|
|
- goto out;
|
|
|
- child = pci_add_new_bus(bus, dev, ++max);
|
|
|
- if (!child)
|
|
|
- goto out;
|
|
|
+ * This can happen when a bridge is hot-plugged, so in
|
|
|
+ * this case we only re-scan this bus. */
|
|
|
+ child = pci_find_bus(pci_domain_nr(bus), max+1);
|
|
|
+ if (!child) {
|
|
|
+ child = pci_add_new_bus(bus, dev, ++max);
|
|
|
+ if (!child)
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
buses = (buses & 0xff000000)
|
|
|
| ((unsigned int)(child->primary) << 0)
|
|
|
| ((unsigned int)(child->secondary) << 8)
|