svn commit: r323317 - head/sys/dev/aac
Scott Long
scottl at FreeBSD.org
Fri Sep 8 16:53:00 UTC 2017
Author: scottl
Date: Fri Sep 8 16:52:59 2017
New Revision: 323317
URL: https://svnweb.freebsd.org/changeset/base/323317
Log:
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 at glup.org
Modified:
head/sys/dev/aac/aac.c
Modified: head/sys/dev/aac/aac.c
==============================================================================
--- head/sys/dev/aac/aac.c Fri Sep 8 15:44:52 2017 (r323316)
+++ head/sys/dev/aac/aac.c Fri Sep 8 16:52:59 2017 (r323317)
@@ -418,9 +418,6 @@ aac_startup(void *arg)
sc = (struct aac_softc *)arg;
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);
aac_alloc_sync_fib(sc, &fib);
@@ -437,12 +434,15 @@ aac_startup(void *arg)
aac_release_sync_fib(sc);
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 */
if (bus_generic_attach(sc->aac_dev))
device_printf(sc->aac_dev, "bus_generic_attach failed\n");
- /* mark the controller up */
- sc->aac_state &= ~AAC_STATE_SUSPEND;
+ /* disconnect ourselves from the intrhook chain */
+ config_intrhook_disestablish(&sc->aac_ich);
/* enable interrupts now */
AAC_UNMASK_INTERRUPTS(sc);
More information about the svn-src-all
mailing list