LIST_HEAD(resources);
        struct pci_bus *bus;
        unsigned long hpa = dev->hpa.start;
+       int max;
 
        name = "Dino";
        if (is_card_dino(&dev->id)) {
        if (dino_dev->hba.gmmio_space.flags)
                pci_add_resource(&resources, &dino_dev->hba.gmmio_space);
 
+       dino_dev->hba.bus_num.start = dino_current_bus;
+       dino_dev->hba.bus_num.end = 255;
+       dino_dev->hba.bus_num.flags = IORESOURCE_BUS;
+       pci_add_resource(&resources, &dino_dev->hba.bus_num);
        /*
        ** It's not used to avoid chicken/egg problems
        ** with configuration accessor functions.
                return 0;
        }
 
-       bus->busn_res.end = pci_scan_child_bus(bus);
+       max = pci_scan_child_bus(bus);
+       pci_bus_update_busn_res_end(bus, max);
 
        /* This code *depends* on scanning being single threaded
         * if it isn't, this global bus number count will fail
         */
-       dino_current_bus = bus->busn_res.end + 1;
+       dino_current_bus = max + 1;
        pci_bus_assign_resources(bus);
        pci_bus_add_devices(bus);
        return 0;
 
                case PAT_PBNUM:
                        lba_dev->hba.bus_num.start = p->start;
                        lba_dev->hba.bus_num.end   = p->end;
+                       lba_dev->hba.bus_num.flags = IORESOURCE_BUS;
                        break;
 
                case PAT_LMMIO:
        void *tmp_obj;
        char *version;
        void __iomem *addr = ioremap_nocache(dev->hpa.start, 4096);
+       int max;
 
        /* Read HW Rev First */
        func_class = READ_REG32(addr + LBA_FCLASS);
        if (lba_dev->hba.gmmio_space.flags)
                pci_add_resource(&resources, &lba_dev->hba.gmmio_space);
 
+       pci_add_resource(&resources, &lba_dev->hba.bus_num);
+
        dev->dev.platform_data = lba_dev;
        lba_bus = lba_dev->hba.hba_bus =
                pci_create_root_bus(&dev->dev, lba_dev->hba.bus_num.start,
                return 0;
        }
 
-       lba_bus->busn_res.end = pci_scan_child_bus(lba_bus);
+       max = pci_scan_child_bus(lba_bus);
 
        /* This is in lieu of calling pci_assign_unassigned_resources() */
        if (is_pdc_pat()) {
                lba_dev->flags |= LBA_FLAG_SKIP_PROBE;
        }
 
-       lba_next_bus = lba_res->busn_res.end + 1;
+       lba_next_bus = max + 1;
        pci_bus_add_devices(lba_bus);
 
        /* Whew! Finally done! Tell services we got this one covered. */