admin 管理员组文章数量: 1184232
问题描述
在某款新导入的硬件中,业务口使用四光口的 x710 网卡,dpdk 程序初始化的时候报了如下错误:
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;}这里的判断其数据来源是通过访问网卡硬件获取的,加之此款驱动已经在很多 x710 网卡上正常运行的数据,故而判断 大概率是硬件问题 。
提问环节
1. 四光口网卡,四个口的软件配置是否一致?
l2fwd 对所有的接口统一配置,可以确认软件配置一致。
2. 是否是单点故障?
经过测试确认,多张网卡有同样的问题。
3. 在新适配的硬件环境中主要差异点在哪里?
主要 差异点 为 物理网卡本身而非驱动 ,驱动的版本是相同的。在分层的视角上应该优先排查硬件问题。
最终确认的问题
排查问题确认,厂商烧录的固件信息异常,导致问题,重新烧录固件后,问题得到解决。
总结
排查问题时优先寻找 基线数据 ,在这个问题里基线数据是 x710 驱动的版本以及此版本在多个环境的 x710 网卡上都能正常运行的事实依据。
有了基线数据,使用分层的思想先找到 重要的差异点所在的层次 ,然后优先排查此层的问题。在这个问题里,变化的项目指向网卡本身,故而需要优先排查网卡硬件问题,不能过早的陷入到驱动细节中。这个问题最终定位到为硬件问题,证明了驱动是正常的这一结论,进一步说明了分层方法的合理性。
版权声明:本文标题:DPDK下的X710网卡:为何独缺某光口的灵性? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1771253692a3542503.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论