PCI: replace struct pci_bus secondary/subordinate with busn_res
authorYinghai Lu <yinghai@kernel.org>
Fri, 18 May 2012 01:51:11 +0000 (18:51 -0700)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 13 Jun 2012 21:42:22 +0000 (15:42 -0600)
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>
31 files changed:
arch/alpha/kernel/pci.c
arch/arm/kernel/bios32.c
arch/ia64/pci/pci.c
arch/microblaze/pci/pci-common.c
arch/mips/pci/pci.c
arch/powerpc/kernel/pci-common.c
arch/powerpc/kernel/pci_64.c
arch/powerpc/kernel/pci_of_scan.c
arch/powerpc/platforms/powernv/pci-ioda.c
arch/powerpc/platforms/pseries/pci_dlpar.c
arch/sh/drivers/pci/pci.c
arch/sparc/kernel/pci.c
arch/tile/kernel/pci.c
arch/x86/pci/acpi.c
arch/xtensa/kernel/pci.c
drivers/iommu/intel-iommu.c
drivers/net/ethernet/broadcom/tg3.c
drivers/parisc/dino.c
drivers/parisc/iosapic.c
drivers/parisc/lba_pci.c
drivers/pci/hotplug/acpiphp_glue.c
drivers/pci/hotplug/cpci_hotplug_pci.c
drivers/pci/hotplug/pciehp_pci.c
drivers/pci/hotplug/shpchp_pci.c
drivers/pci/hotplug/shpchp_sysfs.c
drivers/pci/iov.c
drivers/pci/pci.c
drivers/pci/probe.c
drivers/pci/setup-bus.c
drivers/pcmcia/cardbus.c
drivers/pcmcia/yenta_socket.c

index 1a629636cc16ae8e17ec16a973d846725eb9c807..53229a496311311101264bc06e62eeb282676c2b 100644 (file)
@@ -359,7 +359,7 @@ common_init_pci(void)
                                        hose, &resources);
                hose->bus = bus;
                hose->need_domain_info = need_domain_info;
-               next_busno = bus->subordinate + 1;
+               next_busno = bus->busn_res.end + 1;
                /* Don't allow 8-bit bus number overflow inside the hose -
                   reserve some space for bridges. */ 
                if (next_busno > 224) {
index 25552508c3fd3c63930cec55893c41dcbbd72b0d..f07710849b58160d88162421ed18b91990f3d20b 100644 (file)
@@ -461,7 +461,7 @@ static void __init pcibios_init_hw(struct hw_pci *hw, struct list_head *head)
                        if (!sys->bus)
                                panic("PCI: unable to scan bus!");
 
-                       busnr = sys->bus->subordinate + 1;
+                       busnr = sys->bus->busn_res.end + 1;
 
                        list_add(&sys->node, head);
                } else {
index 524df4295c90d06d327afedac7115ce284d4f3e6..3ca9bed7dc50bb908e7a05daae80f52ca2c8338d 100644 (file)
@@ -384,7 +384,7 @@ pci_acpi_scan_root(struct acpi_pci_root *root)
                return NULL;
        }
 
-       pbus->subordinate = pci_scan_child_bus(pbus);
+       pbus->busn_res.end = pci_scan_child_bus(pbus);
        return pbus;
 
 out3:
index ed22bfc5db1476829179e4ebbda3a90322416b70..9b32483cd0c00a9511703130d1b91e0e045035d1 100644 (file)
@@ -1506,10 +1506,10 @@ static void __devinit pcibios_scan_phb(struct pci_controller *hose)
                pci_free_resource_list(&resources);
                return;
        }
-       bus->secondary = hose->first_busno;
+       bus->busn_res.start = hose->first_busno;
        hose->bus = bus;
 
-       hose->last_busno = bus->subordinate;
+       hose->last_busno = bus->busn_res.end;
 }
 
 static int __init pcibios_init(void)
index 271e8c4a54c7f2304101020d8d8bb0ab50043437..0a9bf778edb57dbd83c663e0fb5984b53853c088 100644 (file)
@@ -102,7 +102,7 @@ static void __devinit pcibios_scanbus(struct pci_controller *hose)
        need_domain_info = need_domain_info || hose->index;
        hose->need_domain_info = need_domain_info;
        if (bus) {
-               next_busno = bus->subordinate + 1;
+               next_busno = bus->busn_res.end + 1;
                /* Don't allow 8-bit bus number overflow inside the hose -
                   reserve some space for bridges. */
                if (next_busno > 224) {
index 8e78e93c818536b4a33a1ae29f10b3d157b29e63..3532b535698aa9da49723ce880526e57d2344541 100644 (file)
@@ -1646,7 +1646,7 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
                pci_free_resource_list(&resources);
                return;
        }
-       bus->secondary = hose->first_busno;
+       bus->busn_res.start = hose->first_busno;
        hose->bus = bus;
 
        /* Get probe mode and perform scan */
@@ -1655,12 +1655,12 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
                mode = ppc_md.pci_probe_mode(bus);
        pr_debug("    probe mode: %d\n", mode);
        if (mode == PCI_PROBE_DEVTREE) {
-               bus->subordinate = hose->last_busno;
+               bus->busn_res.end = hose->last_busno;
                of_scan_bus(node, bus);
        }
 
        if (mode == PCI_PROBE_NORMAL)
-               hose->last_busno = bus->subordinate = pci_scan_child_bus(bus);
+               hose->last_busno = bus->busn_res.end = pci_scan_child_bus(bus);
 
        /* Platform gets a chance to do some global fixups before
         * we proceed to resource allocation
index 94a54f61d341d3363d8bd9b9365964e73aee1346..4ff190ff24a029c84c7d6b4320400d252f27d620 100644 (file)
@@ -236,7 +236,7 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus,
 
        for (ln = pci_root_buses.next; ln != &pci_root_buses; ln = ln->next) {
                bus = pci_bus_b(ln);
-               if (in_bus >= bus->number && in_bus <= bus->subordinate)
+               if (in_bus >= bus->number && in_bus <= bus->busn_res.end)
                        break;
                bus = NULL;
        }
index 89dde171a6fabfafc23d1e29f3cba0bf00350bbe..a36281aa98f342450f9ae8ec948a7566ce180f33 100644 (file)
@@ -240,7 +240,7 @@ void __devinit of_scan_pci_bridge(struct pci_dev *dev)
        }
 
        bus->primary = dev->bus->number;
-       bus->subordinate = busrange[1];
+       bus->busn_res.end = busrange[1];
        bus->bridge_ctl = 0;
 
        /* parse ranges property */
index fbdd74dac3ac6573277ba4e6e853c5311ff8e0df..9cda6a1ad0cf897c764f62f5f8affabb74a94bd5 100644 (file)
@@ -589,7 +589,7 @@ static int __devinit pnv_ioda_configure_pe(struct pnv_phb *phb,
                dcomp = OPAL_IGNORE_RID_DEVICE_NUMBER;
                fcomp = OPAL_IGNORE_RID_FUNCTION_NUMBER;
                parent = pe->pbus->self;
-               count = pe->pbus->subordinate - pe->pbus->secondary + 1;
+               count = pe->pbus->busn_res.end - pe->pbus->busn_res.start + 1;
                switch(count) {
                case  1: bcomp = OpalPciBusAll;         break;
                case  2: bcomp = OpalPciBus7Bits;       break;
@@ -816,11 +816,11 @@ static void __devinit pnv_ioda_setup_bus_PE(struct pci_dev *dev,
        pe->pdev = NULL;
        pe->tce32_seg = -1;
        pe->mve_number = -1;
-       pe->rid = bus->secondary << 8;
+       pe->rid = bus->busn_res.start << 8;
        pe->dma_weight = 0;
 
-       pe_info(pe, "Secondary busses %d..%d associated with PE\n",
-               bus->secondary, bus->subordinate);
+       pe_info(pe, "Secondary busses %pR associated with PE\n",
+               &bus->busn_res);
 
        if (pnv_ioda_configure_pe(phb, pe)) {
                /* XXX What do we do here ? */
index 8b7bafa489c27235d4c65631681fb29cfa71ef8c..3ccebc83dc021a23dfdbf66e1cf0f8d80ff59eb1 100644 (file)
@@ -121,7 +121,7 @@ void pcibios_add_pci_devices(struct pci_bus * bus)
                if (!num)
                        return;
                pcibios_setup_bus_devices(bus);
-               max = bus->secondary;
+               max = bus->busn_res.start;
                for (pass=0; pass < 2; pass++)
                        list_for_each_entry(dev, &bus->devices, bus_list) {
                        if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
index 9d10a3cb879740ed175d4aede3f6108c58e0f096..43068dcb451cd030c8e310f98569f4936f40aefa 100644 (file)
@@ -59,7 +59,7 @@ static void __devinit pcibios_scanbus(struct pci_channel *hose)
        need_domain_info = need_domain_info || hose->index;
        hose->need_domain_info = need_domain_info;
        if (bus) {
-               next_busno = bus->subordinate + 1;
+               next_busno = bus->busn_res.end + 1;
                /* Don't allow 8-bit bus number overflow inside the hose -
                   reserve some space for bridges. */
                if (next_busno > 224) {
index fdaf218116709e3c8b7ce2a29db76862c1800604..c85bfd788f74c159fac0ed83d794423428c2c14f 100644 (file)
@@ -535,7 +535,7 @@ static void __devinit of_scan_pci_bridge(struct pci_pbm_info *pbm,
        }
 
        bus->primary = dev->bus->number;
-       bus->subordinate = busrange[1];
+       bus->busn_res.end = busrange[1];
        bus->bridge_ctl = 0;
 
        /* parse ranges property, or cook one up by hand for Simba */
@@ -693,8 +693,8 @@ struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm,
                pci_free_resource_list(&resources);
                return NULL;
        }
-       bus->secondary = pbm->pci_first_busno;
-       bus->subordinate = pbm->pci_last_busno;
+       bus->busn_res.start = pbm->pci_first_busno;
+       bus->busn_res.end = pbm->pci_last_busno;
 
        pci_of_scan_bus(pbm, node, bus);
        pci_bus_add_devices(bus);
index b56d12bf5900c8f266132bc9b50dadfb092af10a..54cc8d77c90cabac5b1d798024e0704c0f3bd537 100644 (file)
@@ -329,7 +329,7 @@ int __init pcibios_init(void)
                         */
                        bus = pci_scan_bus(0, controller->ops, controller);
                        controller->root_bus = bus;
-                       controller->last_busno = bus->subordinate;
+                       controller->last_busno = bus->busn_res.end;
                }
        }
 
@@ -366,7 +366,7 @@ int __init pcibios_init(void)
                                 */
                                if ((dev->class >> 8) == PCI_CLASS_BRIDGE_PCI &&
                                        (PCI_SLOT(dev->devfn) == 0)) {
-                                       next_bus = dev->subordinate;
+                                       next_bus = dev->busn_res.end;
                                        controllers[i].mem_resources[0] =
                                                *next_bus->resource[0];
                                        controllers[i].mem_resources[1] =
index fc09c2754e0897eab4ee796153d01670a0141f4f..350fe63c8a428975b913c585689251391a643efc 100644 (file)
@@ -440,7 +440,7 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_pci_root *root)
                bus = pci_create_root_bus(NULL, busnum, &pci_root_ops, sd,
                                          &resources);
                if (bus) {
-                       bus->subordinate = pci_scan_child_bus(bus);
+                       bus->busn_res.end = pci_scan_child_bus(bus);
                        pci_set_host_bridge_release(
                                to_pci_host_bridge(bus->bridge),
                                release_pci_root_info, info);
index eb30e356f5bec906d2c34faad04954659c653130..9c57c1e6870cb5b51d8f049b3dd6aee0878ecd24 100644 (file)
@@ -187,7 +187,7 @@ static int __init pcibios_init(void)
                bus = pci_scan_root_bus(NULL, pci_ctrl->first_busno,
                                        pci_ctrl->ops, pci_ctrl, &resources);
                pci_ctrl->bus = bus;
-               pci_ctrl->last_busno = bus->subordinate;
+               pci_ctrl->last_busno = bus->busn_res.end;
                if (next_busno <= pci_ctrl->last_busno)
                        next_busno = pci_ctrl->last_busno+1;
        }
index b12af2ff8c5407aa699eca003d4e680334e9e970..2fb7d1598a6833593e93b14d5062eaafe47f2d4e 100644 (file)
@@ -661,7 +661,7 @@ static struct intel_iommu *device_to_iommu(int segment, u8 bus, u8 devfn)
                        if (drhd->devices[i] &&
                            drhd->devices[i]->subordinate &&
                            drhd->devices[i]->subordinate->number <= bus &&
-                           drhd->devices[i]->subordinate->subordinate >= bus)
+                           drhd->devices[i]->subordinate->busn_res.end >= bus)
                                return drhd->iommu;
                }
 
index edeeb516807a1399ceb8f8a9846bbd105fcce7c3..09fa3c687a1ff57e3b32e269cf5f23c1551e4cb0 100644 (file)
@@ -14168,7 +14168,7 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
                        if (bridge->subordinate &&
                            (bridge->subordinate->number <=
                             tp->pdev->bus->number) &&
-                           (bridge->subordinate->subordinate >=
+                           (bridge->subordinate->busn_res.end >=
                             tp->pdev->bus->number)) {
                                tg3_flag_set(tp, 5701_DMA_BUG);
                                pci_dev_put(bridge);
@@ -14196,7 +14196,7 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
                        if (bridge && bridge->subordinate &&
                            (bridge->subordinate->number <=
                             tp->pdev->bus->number) &&
-                           (bridge->subordinate->subordinate >=
+                           (bridge->subordinate->busn_res.end >=
                             tp->pdev->bus->number)) {
                                tg3_flag_set(tp, 40BIT_DMA_BUG);
                                pci_dev_put(bridge);
index 432d4bbcc62a21d3ae3e91e3cf98a31fd09acf41..70517b0f94e63a2356f0ae6fff7f771896d9e366 100644 (file)
@@ -174,7 +174,7 @@ static int dino_cfg_read(struct pci_bus *bus, unsigned int devfn, int where,
                int size, u32 *val)
 {
        struct dino_device *d = DINO_DEV(parisc_walk_tree(bus->bridge));
-       u32 local_bus = (bus->parent == NULL) ? 0 : bus->secondary;
+       u32 local_bus = (bus->parent == NULL) ? 0 : bus->busn_res.start;
        u32 v = DINO_CFG_TOK(local_bus, devfn, where & ~3);
        void __iomem *base_addr = d->hba.base_addr;
        unsigned long flags;
@@ -209,7 +209,7 @@ static int dino_cfg_write(struct pci_bus *bus, unsigned int devfn, int where,
        int size, u32 val)
 {
        struct dino_device *d = DINO_DEV(parisc_walk_tree(bus->bridge));
-       u32 local_bus = (bus->parent == NULL) ? 0 : bus->secondary;
+       u32 local_bus = (bus->parent == NULL) ? 0 : bus->busn_res.start;
        u32 v = DINO_CFG_TOK(local_bus, devfn, where & ~3);
        void __iomem *base_addr = d->hba.base_addr;
        unsigned long flags;
@@ -554,7 +554,7 @@ dino_fixup_bus(struct pci_bus *bus)
         struct dino_device *dino_dev = DINO_DEV(parisc_walk_tree(bus->bridge));
 
        DBG(KERN_WARNING "%s(0x%p) bus %d platform_data 0x%p\n",
-           __func__, bus, bus->secondary,
+           __func__, bus, bus->busn_res.start,
            bus->bridge->platform_data);
 
        /* Firmware doesn't set up card-mode dino, so we have to */
@@ -998,12 +998,12 @@ static int __init dino_probe(struct parisc_device *dev)
                return 0;
        }
 
-       bus->subordinate = pci_scan_child_bus(bus);
+       bus->busn_res.end = pci_scan_child_bus(bus);
 
        /* This code *depends* on scanning being single threaded
         * if it isn't, this global bus number count will fail
         */
-       dino_current_bus = bus->subordinate + 1;
+       dino_current_bus = bus->busn_res.end + 1;
        pci_bus_assign_resources(bus);
        pci_bus_add_devices(bus);
        return 0;
index 1f9e9fefb8e7d97f21516b0541beaf0206f366a8..83380c8fcb6b0b72be28e997a6646b3318dc95d0 100644 (file)
@@ -532,7 +532,7 @@ iosapic_xlate_pin(struct iosapic_info *isi, struct pci_dev *pcidev)
                intr_slot = PCI_SLOT(pcidev->devfn);
        }
        DBG_IRT("iosapic_xlate_pin:  bus %d slot %d pin %d\n",
-                               pcidev->bus->secondary, intr_slot, intr_pin);
+                       pcidev->bus->busn_res.start, intr_slot, intr_pin);
 
        return irt_find_irqline(isi, intr_slot, intr_pin);
 }
index 052fa230bc776b7d91b3377abcf947bf260e83f3..cd8f9ce8720fdbaccaa1e0aa2bb4a991a3011693 100644 (file)
@@ -189,8 +189,8 @@ lba_dump_res(struct resource *r, int d)
 
 static int lba_device_present(u8 bus, u8 dfn, struct lba_device *d)
 {
-       u8 first_bus = d->hba.hba_bus->secondary;
-       u8 last_sub_bus = d->hba.hba_bus->subordinate;
+       u8 first_bus = d->hba.hba_bus->busn_res.start;
+       u8 last_sub_bus = d->hba.hba_bus->busn_res.end;
 
        if ((bus < first_bus) ||
            (bus > last_sub_bus) ||
@@ -364,7 +364,7 @@ lba_rd_cfg(struct lba_device *d, u32 tok, u8 reg, u32 size)
 static int elroy_cfg_read(struct pci_bus *bus, unsigned int devfn, int pos, int size, u32 *data)
 {
        struct lba_device *d = LBA_DEV(parisc_walk_tree(bus->bridge));
-       u32 local_bus = (bus->parent == NULL) ? 0 : bus->secondary;
+       u32 local_bus = (bus->parent == NULL) ? 0 : bus->busn_res.start;
        u32 tok = LBA_CFG_TOK(local_bus, devfn);
        void __iomem *data_reg = d->hba.base_addr + LBA_PCI_CFG_DATA;
 
@@ -380,7 +380,7 @@ static int elroy_cfg_read(struct pci_bus *bus, unsigned int devfn, int pos, int
                return 0;
        }
 
-       if (LBA_SKIP_PROBE(d) && !lba_device_present(bus->secondary, devfn, d)) {
+       if (LBA_SKIP_PROBE(d) && !lba_device_present(bus->busn_res.start, devfn, d)) {
                DBG_CFG("%s(%x+%2x) -> -1 (b)\n", __func__, tok, pos);
                /* either don't want to look or know device isn't present. */
                *data = ~0U;
@@ -431,7 +431,7 @@ lba_wr_cfg(struct lba_device *d, u32 tok, u8 reg, u32 data, u32 size)
 static int elroy_cfg_write(struct pci_bus *bus, unsigned int devfn, int pos, int size, u32 data)
 {
        struct lba_device *d = LBA_DEV(parisc_walk_tree(bus->bridge));
-       u32 local_bus = (bus->parent == NULL) ? 0 : bus->secondary;
+       u32 local_bus = (bus->parent == NULL) ? 0 : bus->busn_res.start;
        u32 tok = LBA_CFG_TOK(local_bus,devfn);
 
        if ((pos > 255) || (devfn > 255))
@@ -444,7 +444,7 @@ static int elroy_cfg_write(struct pci_bus *bus, unsigned int devfn, int pos, int
                return 0;
        }
 
-       if (LBA_SKIP_PROBE(d) && (!lba_device_present(bus->secondary, devfn, d))) {
+       if (LBA_SKIP_PROBE(d) && (!lba_device_present(bus->busn_res.start, devfn, d))) {
                DBG_CFG("%s(%x+%2x) = 0x%x (b)\n", __func__, tok, pos,data);
                return 1; /* New Workaround */
        }
@@ -481,7 +481,7 @@ static struct pci_ops elroy_cfg_ops = {
 static int mercury_cfg_read(struct pci_bus *bus, unsigned int devfn, int pos, int size, u32 *data)
 {
        struct lba_device *d = LBA_DEV(parisc_walk_tree(bus->bridge));
-       u32 local_bus = (bus->parent == NULL) ? 0 : bus->secondary;
+       u32 local_bus = (bus->parent == NULL) ? 0 : bus->busn_res.start;
        u32 tok = LBA_CFG_TOK(local_bus, devfn);
        void __iomem *data_reg = d->hba.base_addr + LBA_PCI_CFG_DATA;
 
@@ -514,7 +514,7 @@ static int mercury_cfg_write(struct pci_bus *bus, unsigned int devfn, int pos, i
 {
        struct lba_device *d = LBA_DEV(parisc_walk_tree(bus->bridge));
        void __iomem *data_reg = d->hba.base_addr + LBA_PCI_CFG_DATA;
-       u32 local_bus = (bus->parent == NULL) ? 0 : bus->secondary;
+       u32 local_bus = (bus->parent == NULL) ? 0 : bus->busn_res.start;
        u32 tok = LBA_CFG_TOK(local_bus,devfn);
 
        if ((pos > 255) || (devfn > 255))
@@ -636,7 +636,7 @@ lba_fixup_bus(struct pci_bus *bus)
        struct lba_device *ldev = LBA_DEV(parisc_walk_tree(bus->bridge));
 
        DBG("lba_fixup_bus(0x%p) bus %d platform_data 0x%p\n",
-               bus, bus->secondary, bus->bridge->platform_data);
+               bus, (int)bus->busn_res.start, bus->bridge->platform_data);
 
        /*
        ** Properly Setup MMIO resources for this bus.
@@ -1511,7 +1511,7 @@ lba_driver_probe(struct parisc_device *dev)
                return 0;
        }
 
-       lba_bus->subordinate = pci_scan_child_bus(lba_bus);
+       lba_bus->busn_res.end = pci_scan_child_bus(lba_bus);
 
        /* This is in lieu of calling pci_assign_unassigned_resources() */
        if (is_pdc_pat()) {
@@ -1541,7 +1541,7 @@ lba_driver_probe(struct parisc_device *dev)
                lba_dev->flags |= LBA_FLAG_SKIP_PROBE;
        }
 
-       lba_next_bus = lba_bus->subordinate + 1;
+       lba_next_bus = lba_res->busn_res.end + 1;
        pci_bus_add_devices(lba_bus);
 
        /* Whew! Finally done! Tell services we got this one covered. */
index 806c44fa645a57bb355cbab72276cba2a10be60e..62d0ae4dfcada986fa7acd29cc1a39e2fce579d8 100644 (file)
@@ -100,11 +100,11 @@ static int post_dock_fixups(struct notifier_block *nb, unsigned long val,
                        PCI_PRIMARY_BUS,
                        &buses);
 
-       if (((buses >> 8) & 0xff) != bus->secondary) {
+       if (((buses >> 8) & 0xff) != bus->busn_res.start) {
                buses = (buses & 0xff000000)
                        | ((unsigned int)(bus->primary)     <<  0)
-                       | ((unsigned int)(bus->secondary)   <<  8)
-                       | ((unsigned int)(bus->subordinate) << 16);
+                       | ((unsigned int)(bus->busn_res.start)   <<  8)
+                       | ((unsigned int)(bus->busn_res.end) << 16);
                pci_write_config_dword(bus->self, PCI_PRIMARY_BUS, buses);
        }
        return NOTIFY_OK;
@@ -692,7 +692,7 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
         * bus->subordinate value because it could have
         * padding in it.
         */
-       max = bus->secondary;
+       max = bus->busn_res.start;
 
        list_for_each(tmp, &bus->children) {
                n = pci_bus_max_busnr(pci_bus_b(tmp));
index ae853ccd0cd5f4e9faadb3bc1361647b2db3cab9..42f3a61db87c9015071425bcd4ad06d6ce588290 100644 (file)
@@ -292,8 +292,8 @@ int __ref cpci_configure_slot(struct slot *slot)
                    (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)) {
                        /* Find an unused bus number for the new bridge */
                        struct pci_bus *child;
-                       unsigned char busnr, start = parent->secondary;
-                       unsigned char end = parent->subordinate;
+                       unsigned char busnr, start = parent->busn_res.start;
+                       unsigned char end = parent->busn_res.end;
 
                        for (busnr = start; busnr <= end; busnr++) {
                                if (!pci_find_bus(pci_domain_nr(parent),
@@ -312,7 +312,7 @@ int __ref cpci_configure_slot(struct slot *slot)
                                pci_dev_put(dev);
                                continue;
                        }
-                       child->subordinate = pci_do_scan_bus(child);
+                       child->busn_res.end = pci_do_scan_bus(child);
                        pci_bus_size_bridges(child);
                }
                pci_dev_put(dev);
index 47d9dc06b109a632557232b92e7932918ab5a9db..b898f06b588d6671c92dcbaace4cee456d29113d 100644 (file)
@@ -37,8 +37,8 @@
 static int __ref pciehp_add_bridge(struct pci_dev *dev)
 {
        struct pci_bus *parent = dev->bus;
-       int pass, busnr, start = parent->secondary;
-       int end = parent->subordinate;
+       int pass, busnr, start = parent->busn_res.start;
+       int end = parent->busn_res.end;
 
        for (busnr = start; busnr <= end; busnr++) {
                if (!pci_find_bus(pci_domain_nr(parent), busnr))
index df7e4bfadae35fc5398b5a52f8c1443ef8827b6a..d021eb031b3c6f8853b005c10c1ec2defa09152b 100644 (file)
@@ -64,8 +64,8 @@ int __ref shpchp_configure_device(struct slot *p_slot)
                                (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)) {
                        /* Find an unused bus number for the new bridge */
                        struct pci_bus *child;
-                       unsigned char busnr, start = parent->secondary;
-                       unsigned char end = parent->subordinate;
+                       unsigned char busnr, start = parent->busn_res.start;
+                       unsigned char end = parent->busn_res.end;
                        for (busnr = start; busnr <= end; busnr++) {
                                if (!pci_find_bus(pci_domain_nr(parent),
                                                        busnr))
@@ -84,7 +84,7 @@ int __ref shpchp_configure_device(struct slot *p_slot)
                                pci_dev_put(dev);
                                continue;
                        }
-                       child->subordinate = pci_do_scan_bus(child);
+                       child->busn_res.end = pci_do_scan_bus(child);
                        pci_bus_size_bridges(child);
                }
                pci_configure_slot(dev);
index efa30da1ae8f6b4562cde92bf4ddeffbe48def51..eeb23ceae4a890c807e9a0ed630bf2bca91c09f6 100644 (file)
@@ -73,13 +73,13 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha
                }
        }
        out += sprintf(out, "Free resources: bus numbers\n");
-       for (busnr = bus->secondary; busnr <= bus->subordinate; busnr++) {
+       for (busnr = bus->busn_res.start; busnr <= bus->busn_res.end; busnr++) {
                if (!pci_find_bus(pci_domain_nr(bus), busnr))
                        break;
        }
-       if (busnr < bus->subordinate)
+       if (busnr < bus->busn_res.end)
                out += sprintf(out, "start = %8.8x, length = %8.8x\n",
-                               busnr, (bus->subordinate - busnr));
+                               busnr, (int)(bus->busn_res.end - busnr));
 
        return out - buf;
 }
index 6554e1a0f63480c0837cf6be5bed4f920f0dc4df..e873060fb35b8d1026c8eee2a63416124d12850b 100644 (file)
@@ -47,7 +47,7 @@ static struct pci_bus *virtfn_add_bus(struct pci_bus *bus, int busnr)
        if (!child)
                return NULL;
 
-       child->subordinate = busnr;
+       child->busn_res.end = busnr;
        child->dev.parent = bus->bridge;
        rc = pci_bus_add_child(child);
        if (rc) {
@@ -327,7 +327,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
        iov->offset = offset;
        iov->stride = stride;
 
-       if (virtfn_bus(dev, nr_virtfn - 1) > dev->bus->subordinate) {
+       if (virtfn_bus(dev, nr_virtfn - 1) > dev->bus->busn_res.end) {
                dev_err(&dev->dev, "SR-IOV: bus number out of range\n");
                return -ENOMEM;
        }
index 447e83472c01558705d0685f7fd6af17a6f8deef..aeda6e9c245cd153e494cd521652706575ca7836 100644 (file)
@@ -110,7 +110,7 @@ unsigned char pci_bus_max_busnr(struct pci_bus* bus)
        struct list_head *tmp;
        unsigned char max, n;
 
-       max = bus->subordinate;
+       max = bus->busn_res.end;
        list_for_each(tmp, &bus->children) {
                n = pci_bus_max_busnr(pci_bus_b(tmp));
                if(n > max)
index 658ac977cb56cd7d22b4711b16518f1d4bf71a43..651b096134dc9644991708e189855eee3f063187 100644 (file)
@@ -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);
index 8fa2d4be88dea9d90e7aa93bab89e60d1e30b7bf..192172c87b77376e2058de3974b0f2aacfc3e290 100644 (file)
@@ -404,8 +404,8 @@ void pci_setup_cardbus(struct pci_bus *bus)
        struct resource *res;
        struct pci_bus_region region;
 
-       dev_info(&bridge->dev, "CardBus bridge to [bus %02x-%02x]\n",
-                bus->secondary, bus->subordinate);
+       dev_info(&bridge->dev, "CardBus bridge to %pR\n",
+                &bus->busn_res);
 
        res = bus->resource[0];
        pcibios_resource_to_bus(bridge, &region, res);
@@ -553,8 +553,8 @@ static void __pci_setup_bridge(struct pci_bus *bus, unsigned long type)
 {
        struct pci_dev *bridge = bus->self;
 
-       dev_info(&bridge->dev, "PCI bridge to [bus %02x-%02x]\n",
-                bus->secondary, bus->subordinate);
+       dev_info(&bridge->dev, "PCI bridge to %pR\n",
+                &bus->busn_res);
 
        if (type & IORESOURCE_IO)
                pci_setup_bridge_io(bus);
@@ -745,8 +745,8 @@ static void pbus_size_io(struct pci_bus *bus, resource_size_t min_size,
        if (!size0 && !size1) {
                if (b_res->start || b_res->end)
                        dev_info(&bus->self->dev, "disabling bridge window "
-                                "%pR to [bus %02x-%02x] (unused)\n", b_res,
-                                bus->secondary, bus->subordinate);
+                                "%pR to %pR (unused)\n", b_res,
+                                &bus->busn_res);
                b_res->flags = 0;
                return;
        }
@@ -757,8 +757,8 @@ static void pbus_size_io(struct pci_bus *bus, resource_size_t min_size,
        if (size1 > size0 && realloc_head) {
                add_to_list(realloc_head, bus->self, b_res, size1-size0, 4096);
                dev_printk(KERN_DEBUG, &bus->self->dev, "bridge window "
-                                "%pR to [bus %02x-%02x] add_size %lx\n", b_res,
-                                bus->secondary, bus->subordinate, size1-size0);
+                                "%pR to %pR add_size %lx\n", b_res,
+                                &bus->busn_res, size1-size0);
        }
 }
 
@@ -863,8 +863,8 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask,
        if (!size0 && !size1) {
                if (b_res->start || b_res->end)
                        dev_info(&bus->self->dev, "disabling bridge window "
-                                "%pR to [bus %02x-%02x] (unused)\n", b_res,
-                                bus->secondary, bus->subordinate);
+                                "%pR to %pR (unused)\n", b_res,
+                                &bus->busn_res);
                b_res->flags = 0;
                return 1;
        }
@@ -874,8 +874,8 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask,
        if (size1 > size0 && realloc_head) {
                add_to_list(realloc_head, bus->self, b_res, size1-size0, min_align);
                dev_printk(KERN_DEBUG, &bus->self->dev, "bridge window "
-                                "%pR to [bus %02x-%02x] add_size %llx\n", b_res,
-                                bus->secondary, bus->subordinate, (unsigned long long)size1-size0);
+                                "%pR to %pR add_size %llx\n", b_res,
+                                &bus->busn_res, (unsigned long long)size1-size0);
        }
        return 1;
 }
index 6e75153c5b4f165371e84dac0dcd035f06fc1ea0..24caeaf50529c06d23edfdab59ed70ab97700e42 100644 (file)
@@ -73,7 +73,7 @@ int __ref cb_alloc(struct pcmcia_socket *s)
        s->functions = pci_scan_slot(bus, PCI_DEVFN(0, 0));
        pci_fixup_cardbus(bus);
 
-       max = bus->secondary;
+       max = bus->busn_res.start;
        for (pass = 0; pass < 2; pass++)
                list_for_each_entry(dev, &bus->devices, bus_list)
                        if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
index d07f9ac8c41ddb550688a4b2b3c3fc4dcbf295be..667678db115311e32125ac77faaf83ceff49b296 100644 (file)
@@ -1048,8 +1048,8 @@ static void yenta_config_init(struct yenta_socket *socket)
        config_writeb(socket, PCI_LATENCY_TIMER, 168);
        config_writel(socket, PCI_PRIMARY_BUS,
                (176 << 24) |                      /* sec. latency timer */
-               (dev->subordinate->subordinate << 16) | /* subordinate bus */
-               (dev->subordinate->secondary << 8) |  /* secondary bus */
+               ((unsigned int)dev->subordinate->busn_res.end << 16) | /* subordinate bus */
+               ((unsigned int)dev->subordinate->busn_res.start << 8) |  /* secondary bus */
                dev->subordinate->primary);                /* primary bus */
 
        /*
@@ -1086,14 +1086,14 @@ static void yenta_fixup_parent_bridge(struct pci_bus *cardbus_bridge)
        struct pci_bus *bridge_to_fix = cardbus_bridge->parent;
 
        /* Check bus numbers are already set up correctly: */
-       if (bridge_to_fix->subordinate >= cardbus_bridge->subordinate)
+       if (bridge_to_fix->busn_res.end >= cardbus_bridge->busn_res.end)
                return; /* The subordinate number is ok, nothing to do */
 
        if (!bridge_to_fix->parent)
                return; /* Root bridges are ok */
 
        /* stay within the limits of the bus range of the parent: */
-       upper_limit = bridge_to_fix->parent->subordinate;
+       upper_limit = bridge_to_fix->parent->busn_res.end;
 
        /* check the bus ranges of all silbling bridges to prevent overlap */
        list_for_each(tmp, &bridge_to_fix->parent->children) {
@@ -1104,36 +1104,36 @@ static void yenta_fixup_parent_bridge(struct pci_bus *cardbus_bridge)
                 * current upper limit, set the new upper limit to
                 * the bus number below the silbling's range:
                 */
-               if (silbling->secondary > bridge_to_fix->subordinate
-                   && silbling->secondary <= upper_limit)
-                       upper_limit = silbling->secondary - 1;
+               if (silbling->busn_res.start > bridge_to_fix->busn_res.end
+                   && silbling->busn_res.start <= upper_limit)
+                       upper_limit = silbling->busn_res.start - 1;
        }
 
        /* Show that the wanted subordinate number is not possible: */
-       if (cardbus_bridge->subordinate > upper_limit)
+       if (cardbus_bridge->busn_res.end > upper_limit)
                dev_printk(KERN_WARNING, &cardbus_bridge->dev,
                           "Upper limit for fixing this "
                           "bridge's parent bridge: #%02x\n", upper_limit);
 
        /* If we have room to increase the bridge's subordinate number, */
-       if (bridge_to_fix->subordinate < upper_limit) {
+       if (bridge_to_fix->busn_res.end < upper_limit) {
 
                /* use the highest number of the hidden bus, within limits */
                unsigned char subordinate_to_assign =
-                       min(cardbus_bridge->subordinate, upper_limit);
+                       min_t(int, cardbus_bridge->busn_res.end, upper_limit);
 
                dev_printk(KERN_INFO, &bridge_to_fix->dev,
                           "Raising subordinate bus# of parent "
                           "bus (#%02x) from #%02x to #%02x\n",
                           bridge_to_fix->number,
-                          bridge_to_fix->subordinate, subordinate_to_assign);
+                          (int)bridge_to_fix->busn_res.end, subordinate_to_assign);
 
                /* Save the new subordinate in the bus struct of the bridge */
-               bridge_to_fix->subordinate = subordinate_to_assign;
+               bridge_to_fix->busn_res.end = subordinate_to_assign;
 
                /* and update the PCI config space with the new subordinate */
                pci_write_config_byte(bridge_to_fix->self,
-                       PCI_SUBORDINATE_BUS, bridge_to_fix->subordinate);
+                       PCI_SUBORDINATE_BUS, bridge_to_fix->busn_res.end);
        }
 }