欢迎来到 DPDK交流社区 ,有什么问题可以尽管在这里提问,您将会收到社区其他成员的回答;也可以将您的总结写在这里,为社区其他成员提供帮助。 (QQ交流群:127163755)

添加两个网卡的时候,运行examples/ethtool 的时候,内核出现general protection fault 错误

+1 投票

问题如题,截图如下

最新提问 8月 3, 2016 分类:默认分类 | 用户: philar (210 分)

3 个回答

0 投票
没有人回答啊!大家都没有遇到这个问题吗?
最新回答 8月 4, 2016 用户: philar (210 分)
0 投票
还真的没遇到过这个问题。。

建议把启动命令,以及前面的打印全贴出来,有助于大家的判断。
最新回答 8月 4, 2016 用户: sysight (12,100 分)
0 投票

命令是这样的:

./examples/ethtool/ethtool-app/ethtool-app/x86_64-native-linuxapp-gcc/ethtool -c f -n 4

运行后的结果是这样的,就是卡在那里了,红色圈出来的是我自己添加的打印信息

 

分析内核(版本是3.14.67的),是在 linux-3.14.67/drivers/uio/uio.c 中的uio_open 函数的#if(idev->info->open)# 这一句代码出错

根据dpdk 中源码文件./lib/librte_eal/linuxapp/igb_uio/igb_uio.c 中函数igbuio_pci_probe注册的uio (注册语句uio_register_device(&dev->dev, &udev->info))设备的info.open 是没有赋值的,所以当rte_eal_init 初始化的时候,运行到内核的uio_open 函数中#f(idev->info->open)# 这一句的时候应该是走不到if里面去的。跟踪过流程,正常初始化的那个网卡,确实是没有走到if条件里面,不能正常初始化的网卡,走到了if条件去了,打印过idev->info->open 的地址,每次打印都是同样的地址,打印结果如下图

 

 

最新回答 8月 4, 2016 用户: philar (210 分)
最后一张图片贴的不是很完整,补充说明一下
第一个红框,就是能正常初始化的网卡的,调用到uio_open的#if(idev->info->open)# 的时候,是走不进去的,
第二个红框,是不能正常初始化的网卡,调用到uio_open的#if(idev->info->open)# 的时候,是进入了if 条件里面的,打印出来的open 函数指针的值就如图所示
真心折腾,换了centos7 就没有这个问题了
...