eal: initialize logging before bus
authorStephen Hemminger <stephen@networkplumber.org>
Mon, 28 Aug 2017 18:13:31 +0000 (11:13 -0700)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 3 Oct 2017 09:28:27 +0000 (11:28 +0200)
Any log messages during bus initialization maybe lost because
the bus registration constructor is called before the logging constructor.

Fixes: a97725791eec ("bus: introduce bus abstraction")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
lib/librte_eal/common/eal_common_log.c
lib/librte_eal/common/include/rte_bus.h

index 0e3b932..b62b0a6 100644 (file)
@@ -289,7 +289,8 @@ static const struct logtype logtype_strings[] = {
        {RTE_LOGTYPE_USER8,      "user8"}
 };
 
-RTE_INIT(rte_log_init);
+/* Logging should be first initialzer (before drivers and bus) */
+RTE_INIT_PRIO(rte_log_init, 101);
 static void
 rte_log_init(void)
 {
index c79368d..8f8b099 100644 (file)
@@ -285,7 +285,7 @@ struct rte_bus *rte_bus_find_by_name(const char *busname);
  * The constructor has higher priority than PMD constructors.
  */
 #define RTE_REGISTER_BUS(nm, bus) \
-RTE_INIT_PRIO(businitfn_ ##nm, 101); \
+RTE_INIT_PRIO(businitfn_ ##nm, 110); \
 static void businitfn_ ##nm(void) \
 {\
        (bus).name = RTE_STR(nm);\