Looks like I finally found the reason. After applying this patch I can no longer reproduce the error.
diff --git a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_82599.c b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_82599.c index db07789..5f825fa 100644 --- a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_82599.c +++ b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_82599.c @@ -2347,7 +2347,7 @@ s32 ixgbe_reset_pipeline_82599(struct ixgbe_hw *hw) /* Write AUTOC register with toggled LMS[2] bit and Restart_AN */ IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc_reg ^ IXGBE_AUTOC_LMS_1G_AN); /* Wait for AN to leave state 0 */ - for (i = 0; i < 10; i++) { + for (i = 0; i < 100; i++) { msec_delay(4); anlp1_reg = IXGBE_READ_REG(hw, IXGBE_ANLP1); if (anlp1_reg & IXGBE_ANLP1_AN_STATE_MASK) On 11/22/2013 04:48 PM, Thomas Monjalon wrote: > Hello, > > 22/11/2013 13:29, Dmitry Vyal : >> EAL: PCI device 0000:02:00.0 on NUMA socket -1 >> EAL: probe driver: 8086:10fb rte_ixgbe_pmd >> EAL: PCI memory mapped at 0x7f6b83687000 >> EAL: PCI memory mapped at 0x7f6b83683000 >> EAL: PCI device 0000:02:00.1 on NUMA socket -1 >> EAL: probe driver: 8086:10fb rte_ixgbe_pmd >> EAL: PCI memory mapped at 0x7f6b83663000 >> EAL: PCI memory mapped at 0x7f6b8365f000 > [...] >> EAL: Error - exiting with code: 1 >> Cause: No Ethernet ports - bye >> >> Any ideas how to investigate this? > Could you try this patch in order to see the root cause of your issue ? > > --- a/lib/librte_pmd_ixgbe/ixgbe_logs.h > +++ b/lib/librte_pmd_ixgbe/ixgbe_logs.h > @@ -34,41 +34,44 @@ > #ifndef _IXGBE_LOGS_H_ > #define _IXGBE_LOGS_H_ > > +#define PMD_LOG(level, fmt, args...) \ > + RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ##args) > + > #ifdef RTE_LIBRTE_IXGBE_DEBUG_INIT > -#define PMD_INIT_LOG(level, fmt, args...) \ > - RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ## args) > +#define PMD_INIT_LOG(level, fmt, args...) PMD_LOG(level, fmt, ##args) > #define PMD_INIT_FUNC_TRACE() PMD_INIT_LOG(DEBUG, " >>") > #else > -#define PMD_INIT_LOG(level, fmt, args...) do { } while(0) > +#define PMD_INIT_LOG(level, fmt, args...) \ > + (void)(RTE_LOG_##level <= RTE_LOG_ERR ? PMD_LOG(level, fmt, ##args) : 0) > #define PMD_INIT_FUNC_TRACE() do { } while(0) > #endif > > #ifdef RTE_LIBRTE_IXGBE_DEBUG_RX > -#define PMD_RX_LOG(level, fmt, args...) \ > - RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ## args) > +#define PMD_RX_LOG(level, fmt, args...) PMD_LOG(level, fmt, ##args) > #else > -#define PMD_RX_LOG(level, fmt, args...) do { } while(0) > +#define PMD_RX_LOG(level, fmt, args...) \ > + (void)(RTE_LOG_##level <= RTE_LOG_ERR ? PMD_LOG(level, fmt, ##args) : 0) > #endif > > #ifdef RTE_LIBRTE_IXGBE_DEBUG_TX > -#define PMD_TX_LOG(level, fmt, args...) \ > - RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ## args) > +#define PMD_TX_LOG(level, fmt, args...) PMD_LOG(level, fmt, ##args) > #else > -#define PMD_TX_LOG(level, fmt, args...) do { } while(0) > +#define PMD_TX_LOG(level, fmt, args...) \ > + (void)(RTE_LOG_##level <= RTE_LOG_ERR ? PMD_LOG(level, fmt, ##args) : 0) > #endif > > #ifdef RTE_LIBRTE_IXGBE_DEBUG_TX_FREE > -#define PMD_TX_FREE_LOG(level, fmt, args...) \ > - RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ## args) > +#define PMD_TX_FREE_LOG(level, fmt, args...) PMD_LOG(level, fmt, ##args) > #else > -#define PMD_TX_FREE_LOG(level, fmt, args...) do { } while(0) > +#define PMD_TX_FREE_LOG(level, fmt, args...) \ > + (void)(RTE_LOG_##level <= RTE_LOG_ERR ? PMD_LOG(level, fmt, ##args) : 0) > #endif > > #ifdef RTE_LIBRTE_IXGBE_DEBUG_DRIVER > -#define PMD_DRV_LOG(level, fmt, args...) \ > - RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ## args) > +#define PMD_DRV_LOG(level, fmt, args...) PMD_LOG(level, fmt, ##args) > #else > -#define PMD_DRV_LOG(level, fmt, args...) do { } while(0) > +#define PMD_DRV_LOG(level, fmt, args...) \ > + (void)(RTE_LOG_##level <= RTE_LOG_ERR ? PMD_LOG(level, fmt, ##args) : 0) > #endif > > #endif /* _IXGBE_LOGS_H_ */ >