diff --git a/sys/dev/auxio/auxio.c b/sys/dev/auxio/auxio.c index 6e2d356ea7a..35fd307a97a 100644 --- a/sys/dev/auxio/auxio.c +++ b/sys/dev/auxio/auxio.c @@ -141,7 +141,9 @@ static driver_t auxio_sbus_driver = { }; static devclass_t auxio_devclass; -DRIVER_MODULE(auxio, sbus, auxio_sbus_driver, auxio_devclass, 0, 0); +/* The probe order is handled by sbus(4). */ +EARLY_DRIVER_MODULE(auxio, sbus, auxio_sbus_driver, auxio_devclass, 0, 0, + BUS_PASS_DEFAULT); MODULE_DEPEND(auxio, sbus, 1, 1, 1); /* EBus */ @@ -158,7 +160,8 @@ static driver_t auxio_ebus_driver = { sizeof(struct auxio_softc) }; -DRIVER_MODULE(auxio, ebus, auxio_ebus_driver, auxio_devclass, 0, 0); +EARLY_DRIVER_MODULE(auxio, ebus, auxio_ebus_driver, auxio_devclass, 0, 0, + BUS_PASS_DEFAULT); MODULE_DEPEND(auxio, ebus, 1, 1, 1); MODULE_VERSION(auxio, 1); diff --git a/sys/sparc64/central/central.c b/sys/sparc64/central/central.c index 012130f150a..777660fdfeb 100644 --- a/sys/sparc64/central/central.c +++ b/sys/sparc64/central/central.c @@ -105,7 +105,8 @@ static driver_t central_driver = { static devclass_t central_devclass; -DRIVER_MODULE(central, nexus, central_driver, central_devclass, 0, 0); +EARLY_DRIVER_MODULE(central, nexus, central_driver, central_devclass, 0, 0, + BUS_PASS_BUS); MODULE_DEPEND(fhc, nexus, 1, 1, 1); MODULE_VERSION(central, 1); diff --git a/sys/sparc64/ebus/ebus.c b/sys/sparc64/ebus/ebus.c index 3bafaae3323..a3e6d582780 100644 --- a/sys/sparc64/ebus/ebus.c +++ b/sys/sparc64/ebus/ebus.c @@ -138,7 +138,8 @@ static driver_t ebus_driver = { static devclass_t ebus_devclass; -DRIVER_MODULE(ebus, pci, ebus_driver, ebus_devclass, 0, 0); +EARLY_DRIVER_MODULE(ebus, pci, ebus_driver, ebus_devclass, 0, 0, + BUS_PASS_BUS); MODULE_DEPEND(ebus, pci, 1, 1, 1); MODULE_VERSION(ebus, 1); diff --git a/sys/sparc64/fhc/fhc.c b/sys/sparc64/fhc/fhc.c index 6ef7b1b519f..6aefffa1a6f 100644 --- a/sys/sparc64/fhc/fhc.c +++ b/sys/sparc64/fhc/fhc.c @@ -119,9 +119,11 @@ static driver_t fhc_driver = { static devclass_t fhc_devclass; -DRIVER_MODULE(fhc, central, fhc_driver, fhc_devclass, 0, 0); +EARLY_DRIVER_MODULE(fhc, central, fhc_driver, fhc_devclass, 0, 0, + BUS_PASS_BUS); MODULE_DEPEND(fhc, central, 1, 1, 1); -DRIVER_MODULE(fhc, nexus, fhc_driver, fhc_devclass, 0, 0); +EARLY_DRIVER_MODULE(fhc, nexus, fhc_driver, fhc_devclass, 0, 0, + BUS_PASS_BUS); MODULE_DEPEND(fhc, nexus, 1, 1, 1); MODULE_VERSION(fhc, 1); diff --git a/sys/sparc64/pci/apb.c b/sys/sparc64/pci/apb.c index 54087cc9353..2f4932e2c1c 100644 --- a/sys/sparc64/pci/apb.c +++ b/sys/sparc64/pci/apb.c @@ -111,7 +111,7 @@ static device_method_t apb_methods[] = { static devclass_t pcib_devclass; DEFINE_CLASS_0(pcib, apb_driver, apb_methods, sizeof(struct apb_softc)); -DRIVER_MODULE(apb, pci, apb_driver, pcib_devclass, 0, 0); +EARLY_DRIVER_MODULE(apb, pci, apb_driver, pcib_devclass, 0, 0, BUS_PASS_BUS); MODULE_DEPEND(apb, pci, 1, 1, 1); /* APB specific registers */ diff --git a/sys/sparc64/pci/ofw_pcib.c b/sys/sparc64/pci/ofw_pcib.c index 72ddeb88001..1988561ab84 100644 --- a/sys/sparc64/pci/ofw_pcib.c +++ b/sys/sparc64/pci/ofw_pcib.c @@ -93,7 +93,8 @@ static devclass_t pcib_devclass; DEFINE_CLASS_0(pcib, ofw_pcib_driver, ofw_pcib_methods, sizeof(struct ofw_pcib_gen_softc)); -DRIVER_MODULE(ofw_pcib, pci, ofw_pcib_driver, pcib_devclass, 0, 0); +EARLY_DRIVER_MODULE(ofw_pcib, pci, ofw_pcib_driver, pcib_devclass, 0, 0, + BUS_PASS_BUS); MODULE_DEPEND(ofw_pcib, pci, 1, 1, 1); static int diff --git a/sys/sparc64/pci/ofw_pcibus.c b/sys/sparc64/pci/ofw_pcibus.c index bd2c7a65888..571b6acd32b 100644 --- a/sys/sparc64/pci/ofw_pcibus.c +++ b/sys/sparc64/pci/ofw_pcibus.c @@ -101,7 +101,8 @@ static devclass_t pci_devclass; DEFINE_CLASS_1(pci, ofw_pcibus_driver, ofw_pcibus_methods, 1 /* no softc */, pci_driver); -DRIVER_MODULE(ofw_pcibus, pcib, ofw_pcibus_driver, pci_devclass, 0, 0); +EARLY_DRIVER_MODULE(ofw_pcibus, pcib, ofw_pcibus_driver, pci_devclass, 0, 0, + BUS_PASS_BUS); MODULE_VERSION(ofw_pcibus, 1); MODULE_DEPEND(ofw_pcibus, pci, 1, 1, 1); diff --git a/sys/sparc64/sbus/dma_sbus.c b/sys/sparc64/sbus/dma_sbus.c index b4c2e5e6224..4bc1d438723 100644 --- a/sys/sparc64/sbus/dma_sbus.c +++ b/sys/sparc64/sbus/dma_sbus.c @@ -149,7 +149,13 @@ static driver_t dma_driver = { sizeof(struct dma_softc), }; -DRIVER_MODULE(dma, sbus, dma_driver, dma_devclass, 0, 0); +/* + * The probe order is handled by sbus(4) as we don't want the variants + * with children to be attached earlier than the stand-alone controllers + * in order to generally preserve the OFW device tree order. + */ +EARLY_DRIVER_MODULE(dma, sbus, dma_driver, dma_devclass, 0, 0, + BUS_PASS_DEFAULT); MODULE_DEPEND(dma, sbus, 1, 1, 1); MODULE_VERSION(dma, 1); diff --git a/sys/sparc64/sbus/sbus.c b/sys/sparc64/sbus/sbus.c index b42a9934f9c..0c4b509e508 100644 --- a/sys/sparc64/sbus/sbus.c +++ b/sys/sparc64/sbus/sbus.c @@ -247,7 +247,8 @@ static driver_t sbus_driver = { static devclass_t sbus_devclass; -DRIVER_MODULE(sbus, nexus, sbus_driver, sbus_devclass, 0, 0); +EARLY_DRIVER_MODULE(sbus, nexus, sbus_driver, sbus_devclass, 0, 0, + BUS_PASS_BUS); MODULE_DEPEND(sbus, nexus, 1, 1, 1); MODULE_VERSION(sbus, 1); diff --git a/sys/sparc64/sparc64/nexus.c b/sys/sparc64/sparc64/nexus.c index 798eec9eed0..04c2ddbcbee 100644 --- a/sys/sparc64/sparc64/nexus.c +++ b/sys/sparc64/sparc64/nexus.c @@ -144,7 +144,8 @@ static device_method_t nexus_methods[] = { static devclass_t nexus_devclass; DEFINE_CLASS_0(nexus, nexus_driver, nexus_methods, sizeof(struct nexus_softc)); -DRIVER_MODULE(nexus, root, nexus_driver, nexus_devclass, 0, 0); +EARLY_DRIVER_MODULE(nexus, root, nexus_driver, nexus_devclass, 0, 0, + BUS_PASS_BUS); MODULE_VERSION(nexus, 1); static const char *const nexus_excl_name[] = { diff --git a/sys/sparc64/sparc64/upa.c b/sys/sparc64/sparc64/upa.c index 7e81c8923ae..ecb11a2db4f 100644 --- a/sys/sparc64/sparc64/upa.c +++ b/sys/sparc64/sparc64/upa.c @@ -151,7 +151,7 @@ static device_method_t upa_methods[] = { static devclass_t upa_devclass; DEFINE_CLASS_0(upa, upa_driver, upa_methods, sizeof(struct upa_softc)); -DRIVER_MODULE(upa, nexus, upa_driver, upa_devclass, 0, 0); +EARLY_DRIVER_MODULE(upa, nexus, upa_driver, upa_devclass, 0, 0, BUS_PASS_BUS); static const struct intr_controller upa_ic = { upa_intr_enable,