diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -2756,6 +2756,8 @@ int device_quiesce(device_t dev) { + bus_topo_assert(); + PDEBUG(("%s", DEVICENAME(dev))); if (dev->busy > 0) return (EBUSY); @@ -2776,6 +2778,8 @@ int device_shutdown(device_t dev) { + bus_topo_assert(); + if (dev->state < DS_ATTACHED) return (0); return (DEVICE_SHUTDOWN(dev)); @@ -5238,7 +5242,9 @@ return (0); case MOD_SHUTDOWN: + bus_topo_lock(); device_shutdown(root_bus); + bus_topo_unlock(); return (0); default: return (EOPNOTSUPP);