Fix OFED startup order: All SYSINIT()'s and modules should be loaded
prior to starting "/sbin/init" which will run all the "/etc/rc.d/xxx" scripts. Else there can be a race configuring the interfaces via "/etc/rc.conf". MFC after: 4 weeks Sponsored by: Mellanox Technologies
This commit is contained in:
parent
22239af86c
commit
5cb6b3afa4
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=268316
@ -2414,6 +2414,6 @@ static moduledata_t mlx4ib_mod = {
|
||||
.evhand = mlx4ib_evhand,
|
||||
};
|
||||
|
||||
DECLARE_MODULE(mlx4ib, mlx4ib_mod, SI_SUB_SMP, SI_ORDER_ANY);
|
||||
DECLARE_MODULE(mlx4ib, mlx4ib_mod, SI_SUB_OFED_PREINIT, SI_ORDER_ANY);
|
||||
MODULE_DEPEND(mlx4ib, mlx4, 1, 1, 1);
|
||||
MODULE_DEPEND(mlx4ib, ibcore, 1, 1, 1);
|
||||
|
@ -383,5 +383,5 @@ static moduledata_t mlxen_mod = {
|
||||
.name = "mlxen",
|
||||
.evhand = mlxen_evhand,
|
||||
};
|
||||
DECLARE_MODULE(mlxen, mlxen_mod, SI_SUB_SMP, SI_ORDER_ANY);
|
||||
DECLARE_MODULE(mlxen, mlxen_mod, SI_SUB_OFED_PREINIT, SI_ORDER_ANY);
|
||||
MODULE_DEPEND(mlxen, mlx4, 1, 1, 1);
|
||||
|
@ -2875,4 +2875,4 @@ static moduledata_t mlx4_mod = {
|
||||
.evhand = mlx4_evhand,
|
||||
};
|
||||
MODULE_VERSION(mlx4, 1);
|
||||
DECLARE_MODULE(mlx4, mlx4_mod, SI_SUB_SMP, SI_ORDER_ANY);
|
||||
DECLARE_MODULE(mlx4, mlx4_mod, SI_SUB_OFED_PREINIT, SI_ORDER_ANY);
|
||||
|
@ -44,6 +44,11 @@
|
||||
#define EXPORT_SYMBOL(name)
|
||||
#define EXPORT_SYMBOL_GPL(name)
|
||||
|
||||
/* OFED pre-module initialization */
|
||||
#define SI_SUB_OFED_PREINIT (SI_SUB_KTHREAD_INIT - 2)
|
||||
/* OFED default module initialization */
|
||||
#define SI_SUB_OFED_MODINIT (SI_SUB_KTHREAD_INIT - 1)
|
||||
|
||||
#include <sys/linker.h>
|
||||
|
||||
static inline void
|
||||
@ -68,17 +73,17 @@ _module_run(void *arg)
|
||||
}
|
||||
|
||||
#define module_init(fn) \
|
||||
SYSINIT(fn, SI_SUB_LAST, SI_ORDER_FIRST, _module_run, (fn))
|
||||
SYSINIT(fn, SI_SUB_OFED_MODINIT, SI_ORDER_FIRST, _module_run, (fn))
|
||||
|
||||
/*
|
||||
* XXX This is a freebsdism designed to work around not having a module
|
||||
* load order resolver built in.
|
||||
*/
|
||||
#define module_init_order(fn, order) \
|
||||
SYSINIT(fn, SI_SUB_LAST, (order), _module_run, (fn))
|
||||
SYSINIT(fn, SI_SUB_OFED_MODINIT, (order), _module_run, (fn))
|
||||
|
||||
#define module_exit(fn) \
|
||||
SYSUNINIT(fn, SI_SUB_LAST, SI_ORDER_FIRST, _module_run, (fn))
|
||||
SYSUNINIT(fn, SI_SUB_OFED_MODINIT, SI_ORDER_FIRST, _module_run, (fn))
|
||||
|
||||
#define module_get(module)
|
||||
#define module_put(module)
|
||||
|
Loading…
Reference in New Issue
Block a user