From: Jeff Guo <jia.guo@intel.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: marko.kovacevic@intel.com, john.mcnamara@intel.com,
qi.z.zhang@intel.com, ferruh.yigit@intel.com,
thomas@monjalon.net, dev@dpdk.org, helin.zhang@intel.com,
konstantin.ananyev@intel.com, shaopeng.he@intel.com,
bruce.richardson@intel.com, gaetan.rivet@6wind.com
Subject: Re: [PATCH] doc: add known igb_uio device hot-unplug issue
Date: Wed, 21 Nov 2018 15:42:26 +0800 [thread overview]
Message-ID: <2464fbf5-20dd-519d-596b-5fa12e92dc2a@intel.com> (raw)
In-Reply-To: <20181120100212.150a6c73@xeon-e3>
On 11/21/2018 2:02 AM, Stephen Hemminger wrote:
> On Tue, 20 Nov 2018 23:09:31 +0800
> Jeff Guo <jia.guo@intel.com> wrote:
>
>> When device has been bound to igb_uio driver and application is running,
>> hot-unplugging the device may cause kernel crash.
>>
>> Signed-off-by: Jeff Guo <jia.guo@intel.com>
>> ---
>> doc/guides/rel_notes/known_issues.rst | 21 +++++++++++++++++++++
>> 1 file changed, 21 insertions(+)
>>
>> diff --git a/doc/guides/rel_notes/known_issues.rst b/doc/guides/rel_notes/known_issues.rst
>> index 95e4ce6..dfe0565 100644
>> --- a/doc/guides/rel_notes/known_issues.rst
>> +++ b/doc/guides/rel_notes/known_issues.rst
>> @@ -759,3 +759,24 @@ Netvsc driver and application restart
>>
>> **Driver/Module**:
>> ``uio_hv_generic`` module.
>> +
>> +
>> +kernel crash when hot-unplug igb_uio device while DPDK application is running
>> +-----------------------------------------------------------------------------
>> +
>> +**Description**:
>> + When device has been bound to igb_uio driver and application is running, hot-unplugging
>> + the device may cause kernel crash.
>> +
>> +**Reason**:
>> + When device is hot-unplugged, igb_uio driver will be removed which will destroy uio resources.
>> + Later trying to access any uio resource will cause kernel crash.
>> +
>> +**Resolution/Workaround**:
>> + If using DPDK for PCI HW hot-unplug, prefer to bind device with VFIO instead of IGB_UIO.
>> +
>> +**Affected Environment/Platform**:
>> + ALL.
>> +
>> +**Driver/Module**:
>> + ``igb_uio`` module.
> Surely this is fixable. What is the back trace in the kernel? How can it be reproduced with some
> common hardware (or hypervisor). Will it happen with KVM?
I think the final fix should be at uio_module in the linux kernel, and
workaround could be in user space and igb_uio kernel driver if there is
a better one. So that is why we need a document here.
you could reference the back trace as below.
[ 1078.006709] RIP: 0010:uio_write+0x2e/0xc0 [uio]
[ 1078.006727] Call Trace: [ 1078.006765]
__vfs_write+0x18/0x40 [ 1078.006768]
vfs_write+0xb8/0x1b0 [ 1078.006770]
SyS_write+0x55/0xc0 [ 1078.006791]
entry_SYSCALL_64_fastpath+0x1e/0xad [ 1078.006793]
RIP: 0033:0x7f75a10224bd
you could check the whole info at below link which i have attach.
http://patches.dpdk.org/patch/47923/
The system env:
Host kernel: 4.17.0-041700rc1-generic
Vm kernel: Linux ubuntu 4.10.0-28-generic #32~16.04.2-Ubuntu.
QEMU emulator version: 2.5.0
DPDK: version: 18.11-rc4
NIC: ixgbe or i40e nic or other(igb_uio pci nic)
Reproduce step:
Host environment
1. Host: Bind port 0 to vfio-pci
modprobe vfio_pci
./usertools/dpdk-devbind.py -b vfio-pci 81:10.0
2. start qemu scripts
taskset -c 12-21 qemu-system-x86_64 \
-enable-kvm -m 8192 -smp cores=10,sockets=1 -cpu host -name dpdk1-vm1 \
-monitor stdio \
-drive file=/home/vm/ubuntu-14.04.img \
-device vfio-pci,host=0000:81:10.0,id=dev1 \
-netdev tap,id=ipvm1,ifname=tap5,script=/etc/qemu-ifup -device
rtl8139,netdev=ipvm1,id=net0,mac=00:00:00:00:00:01 \
-localtime -vnc :2
VM environment
1. Bind port 0 to igb_uio
./usertools/dpdk-devbind.py --st
./usertools/dpdk-devbind.py -b igb_uio 00:03.0
2. Start testpmd and enable hotplug feature
./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -- -i --hot-plug
3. testpmd>set fwd txonly
4. testpmd>start
5. Qemu: remove device for unplug:
(qemu) device_del dev1
6.Qemu : add device for plug:
(qemu) device_add vfio-pci,host=0000:81:10.0,id=dev1
7. Bind port 0 to igb_uio:
./usertools/dpdk-devbind.py -b igb_uio 00:03.0
8. testpmd>stop
9. testpmd>port attach 0000: 00:03.0
10. testpmd>port start all
11. testpmd>start
12. Repeat 5 -- 12 until the kernel crash occur.
next prev parent reply other threads:[~2018-11-21 7:42 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-20 15:09 [PATCH] doc: add known igb_uio device hot-unplug issue Jeff Guo
2018-11-20 18:02 ` Stephen Hemminger
2018-11-21 7:42 ` Jeff Guo [this message]
2018-11-22 17:46 ` Ferruh Yigit
2018-11-22 17:57 ` Mcnamara, John
2018-11-23 2:12 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2464fbf5-20dd-519d-596b-5fa12e92dc2a@intel.com \
--to=jia.guo@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=gaetan.rivet@6wind.com \
--cc=helin.zhang@intel.com \
--cc=john.mcnamara@intel.com \
--cc=konstantin.ananyev@intel.com \
--cc=marko.kovacevic@intel.com \
--cc=qi.z.zhang@intel.com \
--cc=shaopeng.he@intel.com \
--cc=stephen@networkplumber.org \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.