EAL: PCI device 0000:16:00.0 on NUMA socket -1
EAL: probe driver: 8086:1581 rte_i40e_pmd
EAL: PCI memory mapped at 0x4200120000
EAL: PCI memory mapped at 0x4200920000
PMD: eth_i40e_dev_init(): FW 6.2 API 1.5 NVM 06.08.00 eetrack 80004cf1
PMD: i40e_dcb_init_configure(): Failed to stop lldp
EAL: PCI device 0000:16:00.1 on NUMA socket -1
EAL: probe driver: 8086:1581 rte_i40e_pmd
EAL: PCI memory mapped at 0x4200928000
EAL: PCI memory mapped at 0x4201128000
PMD: eth_i40e_dev_init(): FW 6.2 API 1.5 NVM 06.08.00 eetrack 80004cf1
PMD: i40e_dcb_init_configure(): Failed to stop lldp
EAL: PCI device 0000:16:00.2 on NUMA socket -1
EAL: probe driver: 8086:1581 rte_i40e_pmd
EAL: PCI memory mapped at 0x4201130000
EAL: PCI memory mapped at 0x4201930000
PMD: eth_i40e_dev_init(): FW 6.2 API 1.5 NVM 06.08.00 eetrack 80004cf1
PMD: eth_i40e_dev_init(): Failed to do parameter init: -22
EAL: Error - exiting with code: 1
16:00.0、16:00.1 正常初始化,16:00.2 初始化的时候报了
参数错误
。
问题定位过程
1. dpdk-16.04 l2fwd 测试
开始相关调试信息后,增加了如下错误打印:
PMD: eth_i40e_dev_init(): FW 6.1 API 1.7 NVM 06.08.00 eetrack 80003cf1
PMD: i40e_configure_registers(): Read from 0x26ce00: 0x10000200
PMD: i40e_configure_registers(): Read from 0x26ce08: 0x11f0200
PMD: i40e_configure_registers(): Read from 0x269fbc: 0x3030303
PMD: i40e_pf_parameter_init(): No queue or VSI left for VMDq
PMD: i40e_pf_parameter_init(): Failed to allocate 2 VSIs, which exceeds the hardware maximum 0
PMD: eth_i40e_dev_init(): Failed to do parameter init: -22
PMD: i40e_free_dma_mem_d(): memzone i40e_dma_664339303382194
上述信息表明在 i40e_pf_parameter_init 函数中创建 2 个 VSI 结构失败,这个数目超过了硬件限制。
为了快速验证是否为驱动问题,使用 dpdk-19.11 继续测试。
2. dpdk-19.11 l2fwd 测试
相关报错:
i40e_pf_parameter_init(): Failed to allocate 2 VSIs, which exceeds the hardware maximum 0
eth_i40e_dev_init(): Failed to do parameter init: -22
EAL: ethdev initialisation failedEAL: Requested device 0000:16:00.2 cannot be used
EAL: PCI device 0000:16:00.3 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:1581 net_i40e
i40e_pf_parameter_init(): Failed to allocate 2 VSIs, which exceeds the hardware maximum 0
eth_i40e_dev_init(): Failed to do parameter init: -22
EAL: ethdev initialisation failedEAL: Requested device 0000:16:00.3 cannot be used
报错内容一致,基本排除驱动问题!
3. 相关代码分析
i40e_pf_parameter_init 函数中与此判断相关的代码如下:
if(qp_count > hw->func_caps.num_tx_qp){PMD_DRV_LOG(ERR,"Failed to allocate %u queues, which exceeds ""the hardware maximum %u", qp_count,
hw->func_caps.num_tx_qp);return-EINVAL;}if(vsi_count > hw->func_caps.num_vsis){PMD_DRV_LOG(ERR,"Failed to allocate %u VSIs, which exceeds ""the hardware maximum %u", vsi_count,
hw->func_caps.num_vsis);return-EINVAL;}
发表评论