Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Aug 2014 12:10:29 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r269862 - in stable/10/sys/ofed: drivers/infiniband/hw/mlx4 drivers/net/mlx4 include/linux
Message-ID:  <53ea0436.6e9c.2b42d4e5@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Tue Aug 12 12:10:29 2014
New Revision: 269862
URL: http://svnweb.freebsd.org/changeset/base/269862

Log:
  MFC r268316:
  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".
  
  Sponsored by:	Mellanox Technologies

Modified:
  stable/10/sys/ofed/drivers/infiniband/hw/mlx4/main.c
  stable/10/sys/ofed/drivers/net/mlx4/en_main.c
  stable/10/sys/ofed/drivers/net/mlx4/main.c
  stable/10/sys/ofed/include/linux/module.h
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/ofed/drivers/infiniband/hw/mlx4/main.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/hw/mlx4/main.c	Tue Aug 12 12:07:57 2014	(r269861)
+++ stable/10/sys/ofed/drivers/infiniband/hw/mlx4/main.c	Tue Aug 12 12:10:29 2014	(r269862)
@@ -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);

Modified: stable/10/sys/ofed/drivers/net/mlx4/en_main.c
==============================================================================
--- stable/10/sys/ofed/drivers/net/mlx4/en_main.c	Tue Aug 12 12:07:57 2014	(r269861)
+++ stable/10/sys/ofed/drivers/net/mlx4/en_main.c	Tue Aug 12 12:10:29 2014	(r269862)
@@ -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);

Modified: stable/10/sys/ofed/drivers/net/mlx4/main.c
==============================================================================
--- stable/10/sys/ofed/drivers/net/mlx4/main.c	Tue Aug 12 12:07:57 2014	(r269861)
+++ stable/10/sys/ofed/drivers/net/mlx4/main.c	Tue Aug 12 12:10:29 2014	(r269862)
@@ -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);

Modified: stable/10/sys/ofed/include/linux/module.h
==============================================================================
--- stable/10/sys/ofed/include/linux/module.h	Tue Aug 12 12:07:57 2014	(r269861)
+++ stable/10/sys/ofed/include/linux/module.h	Tue Aug 12 12:10:29 2014	(r269862)
@@ -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)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53ea0436.6e9c.2b42d4e5>