]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
Add domain support to PCI bus allocation
authorzbb <zbb@FreeBSD.org>
Wed, 16 Sep 2015 23:34:51 +0000 (23:34 +0000)
committerzbb <zbb@FreeBSD.org>
Wed, 16 Sep 2015 23:34:51 +0000 (23:34 +0000)
When the system has more than a single PCI domain, the bus numbers
are not unique, thus they cannot be used for "pci" device numbering.
Change bus numbers to -1 (i.e. to-be-determined automatically)
wherever the code did not care about domains.

Reviewed by:   jhb
Obtained from: Semihalf
Sponsored by:  The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3406

19 files changed:
sys/arm/versatile/versatile_pci.c
sys/arm/xscale/i80321/i80321_pci.c
sys/arm/xscale/i8134x/i81342_pci.c
sys/dev/acpica/acpi_pcib.c
sys/dev/pci/pci_pci.c
sys/dev/xen/pcifront/pcifront.c
sys/mips/adm5120/admpci.c
sys/mips/atheros/ar71xx_pci.c
sys/mips/atheros/ar724x_pci.c
sys/mips/atheros/qca955x_pci.c
sys/mips/cavium/octopci.c
sys/mips/idt/idtpci.c
sys/mips/malta/gt_pci.c
sys/mips/nlm/xlp_pci.c
sys/mips/rmi/xlr_pci.c
sys/powerpc/ofw/ofw_pci.c
sys/x86/pci/pci_bus.c
sys/x86/pci/qpi.c
sys/x86/x86/mptable_pci.c

index 10f31190cefb01e13b26c8d179fec8facbbbdaaf..f5ef6e94ec2c6fee9e8c33d16315398a7dd644d7 100644 (file)
@@ -266,7 +266,7 @@ versatile_pci_attach(device_t dev)
                versatile_pci_conf_write_4((slot << 11) + PCIR_COMMAND, val);
        }
 
-       device_add_child(dev, "pci", 0);
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index 4e2814830004e086c1a6ef676a3659dae4e85dbb..5f78577e8704e8259888cc2ed4d26ddfb72800e5 100644 (file)
@@ -117,7 +117,7 @@ i80321_pci_attach(device_t dev)
        if (rman_init(&sc->sc_irq_rman) != 0 ||
            rman_manage_region(&sc->sc_irq_rman, 26, 32) != 0)
                panic("i80321_pci_probe: failed to set up IRQ rman");
-       device_add_child(dev, "pci",busno);
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index 68d2fbf4ea14aed9571ee2877b9788de76d96a38..d9d978c8a4bca080e5c4c23a96d11f02b83fc5b1 100644 (file)
@@ -209,7 +209,7 @@ i81342_pci_attach(device_t dev)
        }
        bus_space_write_4(sc->sc_st, sc->sc_atu_sh, ATU_ISR,
            bus_space_read_4(sc->sc_st, sc->sc_atu_sh, ATU_ISR) & ATUX_ISR_ERRMSK);
-       device_add_child(dev, "pci", busno);
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index 93dada5703ef7b70519dc67828846d8f2e449735..c2c24992f89a56f31f75ce9e9ad5665427d53197 100644 (file)
@@ -150,7 +150,7 @@ acpi_pcib_attach(device_t dev, ACPI_BUFFER *prt, int busno)
     /*
      * Attach the PCI bus proper.
      */
-    if (device_add_child(dev, "pci", busno) == NULL) {
+    if (device_add_child(dev, "pci", -1) == NULL) {
        device_printf(device_get_parent(dev), "couldn't attach pci bus\n");
        return_VALUE(ENXIO);
     }
index 5b925c8a02e8e323b9db1673d564520e540af401..11a4bcac7950f486fdd85cf151d5d359098cea39 100644 (file)
@@ -1082,7 +1082,7 @@ pcib_attach(device_t dev)
     pcib_attach_common(dev);
     sc = device_get_softc(dev);
     if (sc->bus.sec != 0) {
-       child = device_add_child(dev, "pci", sc->bus.sec);
+       child = device_add_child(dev, "pci", -1);
        if (child != NULL)
            return(bus_generic_attach(dev));
     }
index 1730bf8fc09f642c62de000d2b5df8eda6a38230..833e38bd7e2f9742e11f2d58411bedc537f3c02e 100644 (file)
@@ -559,7 +559,7 @@ xpcib_attach(device_t dev)
 
        DPRINTF("xpcib attach (bus=%d)\n", sc->bus);
 
-       device_add_child(dev, "pci", sc->bus);
+       device_add_child(dev, "pci", -1);
        return bus_generic_attach(dev);
 }
 
index 616d3bd683db249a3ed7e8fb9574caa87e6cd212..e8a14a12c436cef6bb08e93ab810c65e757459e8 100644 (file)
@@ -181,7 +181,7 @@ admpci_attach(device_t dev)
                panic("bus_space_map failed");
        }
 
-       device_add_child(dev, "pci", busno);
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index 7ef0e155314836b77efd5f53d4637e8babb1da53..dc6afc46f503c56fc97acab6baba208304d37c87 100644 (file)
@@ -462,7 +462,7 @@ ar71xx_pci_attach(device_t dev)
        ar71xx_pci_slot_fixup(dev, 0, 18, 0);
 #endif /* AR71XX_ATH_EEPROM */
 
-       device_add_child(dev, "pci", busno);
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index 283bd9b7efebfd1c69bcc87456e7e203021ed964..a6e0389bfa2ccb5ea50dd5267b3f2648021521d5 100644 (file)
@@ -429,7 +429,7 @@ ar724x_pci_attach(device_t dev)
            | PCIM_CMD_SERRESPEN | PCIM_CMD_BACKTOBACK
            | PCIM_CMD_PERRESPEN | PCIM_CMD_MWRICEN, 2);
 
-       device_add_child(dev, "pci", busno);
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index 02322970e2032d30b94792ad716f0c7e80a55391..dfc8c6b083d30a8316ba4a0815f13a840313e38c 100644 (file)
@@ -362,7 +362,7 @@ qca955x_pci_attach(device_t dev)
            | PCIM_CMD_SERRESPEN | PCIM_CMD_BACKTOBACK
            | PCIM_CMD_PERRESPEN | PCIM_CMD_MWRICEN, 2);
 
-       device_add_child(dev, "pci", busno);
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index ae92063f9229c7fe3caaf6812f724df3c46b267d..f6d73bdc65cc18e9e71117162b17b6f6b4639d5c 100644 (file)
@@ -205,7 +205,7 @@ octopci_attach(device_t dev)
        subbus = octopci_init_bus(dev, sc->sc_bus);
        octopci_write_config(dev, sc->sc_bus, 0, 0, PCIR_SUBBUS_1, subbus, 1);
 
-       device_add_child(dev, "pci", device_get_unit(dev));
+       device_add_child(dev, "pci", -1);
 
        return (bus_generic_attach(dev));
 }
index 7e003fd6feed8655c64425913d4d88f05fecb8af..d962e6872a36eda64f646d745fec7c640813c3c4 100644 (file)
@@ -275,7 +275,7 @@ idtpci_attach(device_t dev)
                PCI_IRQ_END) != 0)
                panic("idtpci_attach: failed to set up IRQ rman");
 
-       device_add_child(dev, "pci", busno);
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index 3acc9b05bdf61beebd10beef8172df2a7d22e8b8..add9c07540f11e990a6807a420fc625e098870f3 100644 (file)
@@ -415,7 +415,7 @@ gt_pci_attach(device_t dev)
        }
 
        /* Initialize memory and i/o rmans. */
-       device_add_child(dev, "pci", busno);
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index c06629fba085dc0497fc92a338c55a5744313ab2..fee23cdd402d8d7b6e06dd192bc9f55c9642ef14 100644 (file)
@@ -314,7 +314,7 @@ xlp_pcib_attach(device_t dev)
                for (link = 0; link < 4; link++)
                        xlp_pcib_hardware_swap_enable(node, link);
 
-       device_add_child(dev, "pci", 0);
+       device_add_child(dev, "pci", -1);
        bus_generic_attach(dev);
        return (0);
 }
index feea696d9b3562832eca35a46294c72fce88ff7c..b41a5588ecf56d7dc69dbc119435a87ce10d7507 100644 (file)
@@ -306,7 +306,7 @@ xlr_pcib_attach(device_t dev)
                    0xff, 0x7fffffff, 0, NULL, NULL, &sc->sc_pci_dmat) != 0)
                        panic("%s: bus_dma_tag_create failed", __func__);
        }
-       device_add_child(dev, "pci", 0);
+       device_add_child(dev, "pci", -1);
        bus_generic_attach(dev);
        return (0);
 }
index 8543035d91521c198689d7491e77971c7f1b2ee2..d9ea5c05d0a0346dd08efe76810350be2bff3426 100644 (file)
@@ -240,7 +240,7 @@ ofw_pci_attach(device_t dev)
                        return (error);
        }
 
-       device_add_child(dev, "pci", device_get_unit(dev));
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }
 
index f64659eec2ada62fca2b5b72d3bbae0d07dbb0bd..821265dd12e6644519f2ed1a603af644287773fd 100644 (file)
@@ -524,7 +524,7 @@ legacy_pcib_attach(device_t dev)
                        device_probe_and_attach(pir);
        }
 #endif
-       device_add_child(dev, "pci", bus);
+       device_add_child(dev, "pci", -1);
        return bus_generic_attach(dev);
 }
 
index ae29daa1d3496d63745882171e5d37cda50c1196..2650986ea5a760032447588902f87221b6a37103 100644 (file)
@@ -218,7 +218,7 @@ static int
 qpi_pcib_attach(device_t dev)
 {
 
-       device_add_child(dev, "pci", pcib_get_bus(dev));      
+       device_add_child(dev, "pci", -1);
         return (bus_generic_attach(dev));
 }
 
index 3e2c1cbe145ff6ae47e3ba32005f0fba5fce8f6f..31165ae9d2dd13dca108af71c7958ba526b14735 100644 (file)
@@ -69,7 +69,7 @@ mptable_hostb_attach(device_t dev)
 #ifdef NEW_PCIB
        mptable_pci_host_res_init(dev);
 #endif
-       device_add_child(dev, "pci", pcib_get_bus(dev));
+       device_add_child(dev, "pci", -1);
        return (bus_generic_attach(dev));
 }