BUG:无法处理内核分页请求,DPDK

时间:2017-02-16 22:41:06

标签: linux-kernel paging dpdk

我尝试使用dpdk版本16.07.2运行DPDK KNI个应用程序,

为此,我首先从ixgbe取消绑定端口,并使用以下命令将它们绑定到igb_uio模块

echo 0000:05:00.1 > /sys/bus/pci/drivers/ixgbe/unbind  
echo 0000:05:00.0 > /sys/bus/pci/drivers/ixgbe/unbind  
echo 0x8086 0x1528 > /sys/bus/pci/drivers/igb_uio/new_id

我用Linux版本4.4.20编译了目标机器的kni应用程序(sushila @ dev03)(gcc版本4.9.2(crosstool-NG 1.20.0))#1 SMP Fri 2月24日14:32:28 CST 2017

当我运行应用程序时,它挂起了以下消息

Feb 28 10:09:37 (none) user.alert kernel: [   87.029554] BUG: unable to handle kernel paging request at 0000077e1d012900
Feb 28 10:09:37 (none) user.alert kernel: [   87.029695] IP: [<ffffffffa0033722>] kni_net_rx_normal+0x2e2/0x440 [rte_kni]
Feb 28 10:09:37 (none) user.warn kernel: [   87.029801] PGD 0
Feb 28 10:09:37 (none) user.warn kernel: [   87.029889] Oops: 0000 [#1] SMP
Feb 28 10:09:37 (none) user.warn kernel: [   87.030010] Modules linked in: rte_kni(O) igb_uio(O)
Feb 28 10:09:37 (none) user.warn kernel: [   87.030167] CPU: 7 PID: 709 Comm: kni_single Tainted: G          IO    4.4.20 #1
Feb 28 10:09:37 (none) user.warn kernel: [   87.030242] Hardware name:                  /DX58SO2, BIOS SOX5820J.86A.0603.2010.1117.1506 11/17/2010
Feb 28 10:09:37 (none) user.warn kernel: [   87.030320] task: ffff8805a8ad8000 ti: ffff8805a7ae0000 task.ti: ffff8805a7ae0000
Feb 28 10:09:37 (none) user.warn kernel: [   87.030395] RIP: 0010:[<ffffffffa0033722>]  [<ffffffffa0033722>] kni_net_rx_normal+0x2e2/0x440 [rte_kni]
Feb 28 10:09:37 (none) user.warn kernel: [   87.030517] RSP: 0018:ffff8805a7ae3d30  EFLAGS: 00010286
Feb 28 10:09:37 (none) user.warn kernel: [   87.030576] RAX: 0000077e1d012900 RBX: 0000000000000020 RCX: 0000000000000010
Feb 28 10:09:37 (none) user.warn kernel: [   87.030639] RDX: 0000000000000001 RSI: 0000000000000246 RDI: ffffffffa00388a3
Feb 28 10:09:37 (none) user.warn kernel: [   87.030701] RBP: ffff8805a7ae3e80 R08: 000000000000000a R09: 00000000fffffffe
Feb 28 10:09:37 (none) user.warn kernel: [   87.030766] R10: 00000000ffff2fea R11: 0000000000000006 R12: ffff8805a8a75000
Feb 28 10:09:37 (none) user.warn kernel: [   87.030829] R13: ffff8800b8c12800 R14: 0000000000000000 R15: ffff8805a8a75800
Feb 28 10:09:37 (none) user.warn kernel: [   87.030893] FS:  0000000000000000(0000) GS:ffff88062fce0000(0000) knlGS:0000000000000000
Feb 28 10:09:37 (none) user.warn kernel: [   87.030971] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Feb 28 10:09:37 (none) user.warn kernel: [   87.031031] CR2: 0000077e1d012900 CR3: 0000000001e0a000 CR4: 00000000000006e0
Feb 28 10:09:37 (none) user.warn kernel: [   87.031094] Stack:
Feb 28 10:09:37 (none) user.warn kernel: [   87.031148]  ffff88062fcf5940 ffff8805a8ad8560 0000000000000000 ffff88060000054e
Feb 28 10:09:37 (none) user.warn kernel: [   87.031367]  0000077e1d012900 00000000b8c12800 00000000b8c11ec0 00000000b8c11580
Feb 28 10:09:37 (none) user.warn kernel: [   87.031587]  00000000b8c10c40 00000000b8c10300 00000000b8c0f9c0 00000000b8c0f080
Feb 28 10:09:37 (none) user.warn kernel: [   87.031811] Call Trace:
Feb 28 10:09:37 (none) user.warn kernel: [   87.031871]  [<ffffffffa00343af>] kni_net_rx+0xf/0x20 [rte_kni]
Feb 28 10:09:37 (none) user.warn kernel: [   87.031937]  [<ffffffffa0032f05>] kni_thread_single+0x45/0xb0 [rte_kni]
Feb 28 10:09:37 (none) user.warn kernel: [   87.032004]  [<ffffffffa0032ec0>] ? kni_init_net+0x50/0x50 [rte_kni]
Feb 28 10:09:37 (none) user.warn kernel: [   87.032067]  [<ffffffff8107b7cb>] kthread+0xdb/0x100
Feb 28 10:09:37 (none) user.warn kernel: [   87.032125]  [<ffffffff8107b6f0>] ? kthread_park+0x60/0x60
Feb 28 10:09:37 (none) user.warn kernel: [   87.032186]  [<ffffffff81834c2f>] ret_from_fork+0x3f/0x70
Feb 28 10:09:37 (none) user.warn kernel: [   87.032246]  [<ffffffff8107b6f0>] ? kthread_park+0x60/0x60
Feb 28 10:09:37 (none) user.warn kernel: [   87.032306] Code: 48 89 85 d0 fe ff ff eb 80 41 f6 c6 0f 75 0e 48 c7 c7 9f 88 03 a0 31 c0 e8 02 e9 11 e1 48 8b 85 d0 fe ff ff 48 c7 c7 a3 88 03 a0 <42> 0f b6 34 30 31 c0 49 83 c6 01 e8 e4 e8 11 e1 e9 5e fe ff ff
Feb 28 10:09:37 (none) user.alert kernel: [   87.034742] RIP  [<ffffffffa0033722>] kni_net_rx_normal+0x2e2/0x440 [rte_kni]
Feb 28 10:09:37 (none) user.warn kernel: [   87.034844]  RSP <ffff8805a7ae3d30>
Feb 28 10:09:37 (none) user.warn kernel: [   87.034900] CR2: 0000077e1d012900
Feb 28 10:09:37 (none) user.warn kernel: [   87.034956] ---[ end trace 5b31765eb0372d51 ]---

在那里,我看到它在kni_net_rx_normal() kni_net.c文件的kva data addresses: data_kva 0000077e1d012900 kva->buff_add 00007f7e1d012880 kva->data_off 128 kni->mbuf_va (null) and kni->mbuf_kva ffff880000000000 函数中失败了。

所以我缩小了它失败的代码行,它来到第169行,memcpy发生了 接下来我尝试在该功能中打印一些地址,它给了我

|-----------|-----------------------------|
|  name  |             skillset            |
|-----------|-----------------------------|
|   John  | 01001101110             |
|-----------|-----------------------------|

接下来我试着看看我是否可以在data_kva地址中打印数据并且在那里失败了,所以当我尝试访问data_kva @ 0000077e1d012900时看起来它失败了,我猜地址错了,我不知道为什么,你能不能给我一些关于这个或一些事情的想法,试着调试问题。

0 个答案:

没有答案