You are not logged in.
Hi all,
I recently updated to QEMU 2.1 and it seems like it breaks support for the Realtek RTL 8169 NIC using VFIO (IOMMU).
Unfortunately there is very few output on dmesg and in the other logs which I could use to file a bug report or track down the error.
dmesg on the client gives the following (green1 and red0 are the NICs):
...
[ 14.705830] device green1 entered promiscuous mode
[ 14.707133] device green2 entered promiscuous mode
[ 14.707889] device orange1 entered promiscuous mode
[ 14.899043] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.899647] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.900249] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.900851] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.901452] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.902054] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.902656] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.903257] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.903861] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.904463] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.905064] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.905666] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.906268] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.906875] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.907475] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.908075] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.908676] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.909277] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.909877] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.910478] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.911079] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.911733] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.912332] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.912930] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.913528] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.914127] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.914781] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.915379] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.915977] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.916630] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.917231] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.917830] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.918483] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.919082] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.919681] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.920280] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.920934] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.921532] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.932036] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 14.932615] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.933213] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.933867] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.934465] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.935063] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.935660] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.936313] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.936916] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.937515] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.938113] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.938712] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.939310] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.939909] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.940507] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.941105] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.941758] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.942411] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.943010] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 14.953401] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 14.963770] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 14.974138] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 14.984516] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 14.985159] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 15.650184] r8169 0000:00:07.0 green1: rtl_phy_reset_cond == 1 (loop: 100, delay: 1).
[ 15.650770] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 15.651480] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 15.652079] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 15.652677] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 15.653277] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 15.653877] r8169 0000:00:07.0 green1: rtl_phyar_cond == 1 (loop: 20, delay: 25).
[ 15.655326] r8169 0000:00:07.0 green1: rtl_csiar_cond == 1 (loop: 100, delay: 10).
[ 15.656729] r8169 0000:00:07.0 green1: rtl_ephyar_cond == 1 (loop: 100, delay: 10).
[ 15.658148] r8169 0000:00:07.0 green1: rtl_ephyar_cond == 1 (loop: 100, delay: 10).
[ 15.668569] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.678939] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.689307] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.699685] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.710052] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.720420] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.730901] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.741373] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.751813] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.762191] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.772662] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.783133] r8169 0000:00:07.0 green1: rtl_eriar_cond == 1 (loop: 100, delay: 100).
[ 15.783136] r8169 0000:00:07.0 green1: link up
[ 15.873829] perf samples too long (5392 > 4990), lowering kernel.perf_event_max_sample_rate to 25200
[ 16.000204] green0: port 2(green2) entered forwarding state
[ 16.000212] green0: port 2(green2) entered forwarding state
[ 16.000214] green0: port 1(green1) entered forwarding state
[ 16.000215] green0: port 1(green1) entered forwarding state
[ 16.065993] orange0: port 1(orange1) entered forwarding state
[ 16.066001] orange0: port 1(orange1) entered forwarding state
[ 16.926875] r8169 0000:00:06.0 red0: rtl_phy_reset_cond == 1 (loop: 100, delay: 1).
[ 16.929344] r8169 0000:00:06.0 red0: link down
[ 16.929428] IPv6: ADDRCONF(NETDEV_UP): red0: link is not ready
[ 16.929466] r8169 0000:00:06.0 red0: link down
[ 17.201449] DROP_FORWARD IN=green0 OUT=green0 PHYSIN=green2 PHYSOUT=green1 MAC=[removed] SRC=0.0.0.0 DST=255.255.255.255 LEN=307 TOS=0x00 PREC=0xC0 TTL=64 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=287
[ 31.040146] green0: port 2(green2) entered forwarding state
[ 31.040228] green0: port 1(green1) entered forwarding state
[ 31.093435] orange0: port 1(orange1) entered forwarding state
[ 48.822710] DROP_FORWARD IN=green0 OUT=green0 PHYSIN=green2 PHYSOUT=green1 MAC=[removed] SRC=0.0.0.0 DST=255.255.255.255 LEN=307 TOS=0x00 PREC=0xC0 TTL=64 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=287
[ 113.139518] DROP_FORWARD IN=green0 OUT=green0 PHYSIN=green2 PHYSOUT=green1 MAC=[removed] SRC=0.0.0.0 DST=255.255.255.255 LEN=307 TOS=0x00 PREC=0xC0 TTL=64 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=287
[ 113.141107] DROP_FORWARD IN=green0 OUT=green0 PHYSIN=green2 PHYSOUT=green1 MAC=[removed] SRC=0.0.0.0 DST=255.255.255.255 LEN=319 TOS=0x00 PREC=0xC0 TTL=64 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=299
[ 362.910739] perf samples too long (10243 > 9920), lowering kernel.perf_event_max_sample_rate to 12600and libvirt logfile on the host (/var/log/libvirt/qemu/ipfire.log):
2014-09-10 16:57:08.795+0000: starting up
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/sbin/qemu-system-x86_64 -name ipfire -S -machine pc-i440fx-2.0,accel=kvm,usb=off -cpu host -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid [removed] -nographic -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/ipfire.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/var/lib/libvirt/images/ipfire.qcow2,if=none,id=drive-virtio-disk0,format=qcow2 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -netdev tap,fd=20,id=hostnet0,vhost=on,vhostfd=21 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=[removed],bus=pci.0,addr=0x2 -netdev tap,fd=22,id=hostnet1,vhost=on,vhostfd=23 -device virtio-net-pci,netdev=hostnet1,id=net1,mac=[removed],bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device vfio-pci,host=01:00.0,id=hostdev0,bus=pci.0,addr=0x5 -device vfio-pci,host=02:00.0,id=hostdev1,bus=pci.0,addr=0x6 -device vfio-pci,host=03:00.0,id=hostdev2,bus=pci.0,addr=0x7 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -msg timestamp=on
Domain id=2 is tainted: host-cpu
char device redirected to /dev/pts/0 (label charserial0)After a few seconds even the twh LEDs at the ethernet port turn off and the NICs are completely unreachable.
I have to completely shut down the PC and unplug it to get them up again.
The only solution I found so far is downgrading QEMU to 2.0 (and libisci to 1.7).
Any ideas on how to further investigate that problem?
Or is there something wrong on the arguments passed to QEMU that just worked "by accident" on 2.0?
Thanks!
Edit: I filed a bug on the QEMU bug tracker (link). The answer from Alex Williamson solves the problem.
Last edited by float (2014-11-06 22:43:11)
Offline