PCI: replace struct pci_bus secondary/subordinate with busn_res
Replace the struct pci_bus secondary/subordinate members with the struct resource busn_res. Later we'll build a resource tree of these bus numbers. [bhelgaas: changelog] Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:

committed by
Bjorn Helgaas

parent
92f0243093
commit
b918c62e08
@@ -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);
|
||||
|
Reference in New Issue
Block a user