fdt_slicer: bump to SI_ORDER_THIRD following r347183

r347183 bumped GEOM classes to SI_ORDER_SECOND to resolve a race between
them and the initialization of devsoftc.mtx in devinit, but missed this
dependency on g_flashmap that may now lose the race against GEOM
classes/g_init.

There's a great comment that describes the situation that has also been
updated with the new ordering of GEOM classes.

Reported by:	bdragon
MFC after:	4 days
This commit is contained in:
kevans 2019-09-29 03:12:35 +00:00
parent de6e65d7c9
commit 81f47d4eea

View File

@ -159,12 +159,12 @@ fdt_slicer_cleanup(void)
}
/*
* Must be initialized after GEOM classes (SI_SUB_DRIVERS/SI_ORDER_FIRST),
* Must be initialized after GEOM classes (SI_SUB_DRIVERS/SI_ORDER_SECOND),
* i. e. after g_init() is called, due to the use of the GEOM topology_lock
* in flash_register_slicer(). However, must be before SI_SUB_CONFIGURE.
*/
SYSINIT(fdt_slicer, SI_SUB_DRIVERS, SI_ORDER_SECOND, fdt_slicer_init, NULL);
SYSUNINIT(fdt_slicer, SI_SUB_DRIVERS, SI_ORDER_SECOND, fdt_slicer_cleanup, NULL);
SYSINIT(fdt_slicer, SI_SUB_DRIVERS, SI_ORDER_THIRD, fdt_slicer_init, NULL);
SYSUNINIT(fdt_slicer, SI_SUB_DRIVERS, SI_ORDER_THIRD, fdt_slicer_cleanup, NULL);
static int
mod_handler(module_t mod, int type, void *data)
@ -181,6 +181,6 @@ static moduledata_t fdt_slicer_mod = {
"fdt_slicer", mod_handler, NULL
};
DECLARE_MODULE(fdt_slicer, fdt_slicer_mod, SI_SUB_DRIVERS, SI_ORDER_SECOND);
DECLARE_MODULE(fdt_slicer, fdt_slicer_mod, SI_SUB_DRIVERS, SI_ORDER_THIRD);
MODULE_DEPEND(fdt_slicer, g_flashmap, 0, 0, 0);
MODULE_VERSION(fdt_slicer, 1);