|
@@ -381,8 +381,8 @@ void __devinit pci_read_bridge_bases(struct pci_bus *child)
|
|
|
if (pci_is_root_bus(child)) /* It's a host bus, nothing to read */
|
|
|
return;
|
|
|
|
|
|
- dev_info(&dev->dev, "PCI bridge to [bus %02x-%02x]%s\n",
|
|
|
- child->secondary, child->subordinate,
|
|
|
+ dev_info(&dev->dev, "PCI bridge to %pR%s\n",
|
|
|
+ &child->busn_res,
|
|
|
dev->transparent ? " (subtractive decode)" : "");
|
|
|
|
|
|
pci_bus_remove_resources(child);
|
|
@@ -599,9 +599,9 @@ static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
|
|
|
* Set up the primary, secondary and subordinate
|
|
|
* bus numbers.
|
|
|
*/
|
|
|
- child->number = child->secondary = busnr;
|
|
|
- child->primary = parent->secondary;
|
|
|
- child->subordinate = 0xff;
|
|
|
+ child->number = child->busn_res.start = busnr;
|
|
|
+ child->primary = parent->busn_res.start;
|
|
|
+ child->busn_res.end = 0xff;
|
|
|
|
|
|
if (!bridge)
|
|
|
return child;
|
|
@@ -643,8 +643,8 @@ static void pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
|
|
|
if (!pcibios_assign_all_busses())
|
|
|
return;
|
|
|
|
|
|
- while (parent->parent && parent->subordinate < max) {
|
|
|
- parent->subordinate = max;
|
|
|
+ while (parent->parent && parent->busn_res.end < max) {
|
|
|
+ parent->busn_res.end = max;
|
|
|
pci_write_config_byte(parent->self, PCI_SUBORDINATE_BUS, max);
|
|
|
parent = parent->parent;
|
|
|
}
|
|
@@ -718,15 +718,15 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
|
|
|
if (!child)
|
|
|
goto out;
|
|
|
child->primary = primary;
|
|
|
- child->subordinate = subordinate;
|
|
|
+ child->busn_res.end = subordinate;
|
|
|
child->bridge_ctl = bctl;
|
|
|
}
|
|
|
|
|
|
cmax = pci_scan_child_bus(child);
|
|
|
if (cmax > max)
|
|
|
max = cmax;
|
|
|
- if (child->subordinate > max)
|
|
|
- max = child->subordinate;
|
|
|
+ if (child->busn_res.end > max)
|
|
|
+ max = child->busn_res.end;
|
|
|
} else {
|
|
|
/*
|
|
|
* We need to assign a number to this bus which we always
|
|
@@ -759,8 +759,8 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
|
|
|
}
|
|
|
buses = (buses & 0xff000000)
|
|
|
| ((unsigned int)(child->primary) << 0)
|
|
|
- | ((unsigned int)(child->secondary) << 8)
|
|
|
- | ((unsigned int)(child->subordinate) << 16);
|
|
|
+ | ((unsigned int)(child->busn_res.start) << 8)
|
|
|
+ | ((unsigned int)(child->busn_res.end) << 16);
|
|
|
|
|
|
/*
|
|
|
* yenta.c forces a secondary latency timer of 176.
|
|
@@ -805,8 +805,8 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
|
|
|
break;
|
|
|
while (parent->parent) {
|
|
|
if ((!pcibios_assign_all_busses()) &&
|
|
|
- (parent->subordinate > max) &&
|
|
|
- (parent->subordinate <= max+i)) {
|
|
|
+ (parent->busn_res.end > max) &&
|
|
|
+ (parent->busn_res.end <= max+i)) {
|
|
|
j = 1;
|
|
|
}
|
|
|
parent = parent->parent;
|
|
@@ -827,7 +827,7 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
|
|
|
/*
|
|
|
* Set the subordinate bus number to its real value.
|
|
|
*/
|
|
|
- child->subordinate = max;
|
|
|
+ child->busn_res.end = max;
|
|
|
pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
|
|
|
}
|
|
|
|
|
@@ -837,19 +837,19 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
|
|
|
|
|
|
/* Has only triggered on CardBus, fixup is in yenta_socket */
|
|
|
while (bus->parent) {
|
|
|
- if ((child->subordinate > bus->subordinate) ||
|
|
|
- (child->number > bus->subordinate) ||
|
|
|
+ if ((child->busn_res.end > bus->busn_res.end) ||
|
|
|
+ (child->number > bus->busn_res.end) ||
|
|
|
(child->number < bus->number) ||
|
|
|
- (child->subordinate < bus->number)) {
|
|
|
- dev_info(&child->dev, "[bus %02x-%02x] %s "
|
|
|
- "hidden behind%s bridge %s [bus %02x-%02x]\n",
|
|
|
- child->number, child->subordinate,
|
|
|
- (bus->number > child->subordinate &&
|
|
|
- bus->subordinate < child->number) ?
|
|
|
+ (child->busn_res.end < bus->number)) {
|
|
|
+ dev_info(&child->dev, "%pR %s "
|
|
|
+ "hidden behind%s bridge %s %pR\n",
|
|
|
+ &child->busn_res,
|
|
|
+ (bus->number > child->busn_res.end &&
|
|
|
+ bus->busn_res.end < child->number) ?
|
|
|
"wholly" : "partially",
|
|
|
bus->self->transparent ? " transparent" : "",
|
|
|
dev_name(&bus->dev),
|
|
|
- bus->number, bus->subordinate);
|
|
|
+ &bus->busn_res);
|
|
|
}
|
|
|
bus = bus->parent;
|
|
|
}
|
|
@@ -1548,7 +1548,7 @@ EXPORT_SYMBOL_GPL(pcie_bus_configure_settings);
|
|
|
|
|
|
unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
|
|
|
{
|
|
|
- unsigned int devfn, pass, max = bus->secondary;
|
|
|
+ unsigned int devfn, pass, max = bus->busn_res.start;
|
|
|
struct pci_dev *dev;
|
|
|
|
|
|
dev_dbg(&bus->dev, "scanning bus\n");
|
|
@@ -1642,7 +1642,7 @@ struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
|
|
|
/* Create legacy_io and legacy_mem files for this bus */
|
|
|
pci_create_legacy_files(b);
|
|
|
|
|
|
- b->number = b->secondary = bus;
|
|
|
+ b->number = b->busn_res.start = bus;
|
|
|
|
|
|
if (parent)
|
|
|
dev_info(parent, "PCI host bridge to bus %s\n", dev_name(&b->dev));
|
|
@@ -1693,7 +1693,7 @@ struct pci_bus * __devinit pci_scan_root_bus(struct device *parent, int bus,
|
|
|
if (!b)
|
|
|
return NULL;
|
|
|
|
|
|
- b->subordinate = pci_scan_child_bus(b);
|
|
|
+ b->busn_res.end = pci_scan_child_bus(b);
|
|
|
pci_bus_add_devices(b);
|
|
|
return b;
|
|
|
}
|
|
@@ -1710,7 +1710,7 @@ struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent,
|
|
|
pci_add_resource(&resources, &iomem_resource);
|
|
|
b = pci_create_root_bus(parent, bus, ops, sysdata, &resources);
|
|
|
if (b)
|
|
|
- b->subordinate = pci_scan_child_bus(b);
|
|
|
+ b->busn_res.end = pci_scan_child_bus(b);
|
|
|
else
|
|
|
pci_free_resource_list(&resources);
|
|
|
return b;
|
|
@@ -1727,7 +1727,7 @@ struct pci_bus * __devinit pci_scan_bus(int bus, struct pci_ops *ops,
|
|
|
pci_add_resource(&resources, &iomem_resource);
|
|
|
b = pci_create_root_bus(NULL, bus, ops, sysdata, &resources);
|
|
|
if (b) {
|
|
|
- b->subordinate = pci_scan_child_bus(b);
|
|
|
+ b->busn_res.end = pci_scan_child_bus(b);
|
|
|
pci_bus_add_devices(b);
|
|
|
} else {
|
|
|
pci_free_resource_list(&resources);
|