[dpdk-dev,v2] rte: initialize logging before bus

Message ID 20170828181331.16112-1-stephen@networkplumber.org (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Stephen Hemminger Aug. 28, 2017, 6:13 p.m. UTC
  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")
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
v2 - fix commit message typos

 lib/librte_eal/common/eal_common_log.c  | 3 ++-
 lib/librte_eal/common/include/rte_bus.h | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)
  

Comments

Thomas Monjalon Oct. 3, 2017, 9:32 a.m. UTC | #1
28/08/2017 20:13, Stephen Hemminger:
> 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>

Applied, thanks
  

Patch

diff --git a/lib/librte_eal/common/eal_common_log.c b/lib/librte_eal/common/eal_common_log.c
index 0e3b9320954f..b62b0a6d61c8 100644
--- a/lib/librte_eal/common/eal_common_log.c
+++ b/lib/librte_eal/common/eal_common_log.c
@@ -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)
 {
diff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h
index c79368d3c882..8f8b09954abc 100644
--- a/lib/librte_eal/common/include/rte_bus.h
+++ b/lib/librte_eal/common/include/rte_bus.h
@@ -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);\