Move the intrhook release to later in the function so that GEOM knows to wait longer
for possible root devices to come online. This fixes a race that seems to be triggered by EARLY_AP_STARTUP. Submitted by: cgull@glup.org
This commit is contained in:
parent
b906c1a02a
commit
cc336c7805
@ -418,9 +418,6 @@ aac_startup(void *arg)
|
|||||||
sc = (struct aac_softc *)arg;
|
sc = (struct aac_softc *)arg;
|
||||||
fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
|
fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
|
||||||
|
|
||||||
/* disconnect ourselves from the intrhook chain */
|
|
||||||
config_intrhook_disestablish(&sc->aac_ich);
|
|
||||||
|
|
||||||
mtx_lock(&sc->aac_io_lock);
|
mtx_lock(&sc->aac_io_lock);
|
||||||
aac_alloc_sync_fib(sc, &fib);
|
aac_alloc_sync_fib(sc, &fib);
|
||||||
|
|
||||||
@ -437,12 +434,15 @@ aac_startup(void *arg)
|
|||||||
aac_release_sync_fib(sc);
|
aac_release_sync_fib(sc);
|
||||||
mtx_unlock(&sc->aac_io_lock);
|
mtx_unlock(&sc->aac_io_lock);
|
||||||
|
|
||||||
|
/* mark the controller up */
|
||||||
|
sc->aac_state &= ~AAC_STATE_SUSPEND;
|
||||||
|
|
||||||
/* poke the bus to actually attach the child devices */
|
/* poke the bus to actually attach the child devices */
|
||||||
if (bus_generic_attach(sc->aac_dev))
|
if (bus_generic_attach(sc->aac_dev))
|
||||||
device_printf(sc->aac_dev, "bus_generic_attach failed\n");
|
device_printf(sc->aac_dev, "bus_generic_attach failed\n");
|
||||||
|
|
||||||
/* mark the controller up */
|
/* disconnect ourselves from the intrhook chain */
|
||||||
sc->aac_state &= ~AAC_STATE_SUSPEND;
|
config_intrhook_disestablish(&sc->aac_ich);
|
||||||
|
|
||||||
/* enable interrupts now */
|
/* enable interrupts now */
|
||||||
AAC_UNMASK_INTERRUPTS(sc);
|
AAC_UNMASK_INTERRUPTS(sc);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user