On 12/22/2013 10:41 PM, Zhi Yong Wu wrote: > On Sat, Dec 21, 2013 at 11:01 PM, Alexey Kardashevskiy <a...@ozlabs.ru> wrote: >> Hi! > HI, Alexey > >> >> I am having a problem with virtio-net + vhost on POWER7 machine - it does >> not survive reboot of the guest. > Can you let me login to your environment for debug? I am interested in > trying to fix this issue.
You do not need my environment, just make sure your guest does not bring the virtio's ethernet up, wait for 4 minutes and try to bring it up and use (ping, for example). Any POWER7, POWER8 machine should be able to reproduce it. > >> >> Steps to reproduce: >> 1. boot the guest >> 2. configure eth0 and do ping - everything works >> 3. reboot the guest (i.e. type "reboot") >> 4. when it is booted, eth0 can be configured but will not work at all. >> >> The test is: >> ifconfig eth0 172.20.1.2 up >> ping 172.20.1.23 >> >> If to run tcpdump on the host's "tap-id3" interface, it shows no trafic >> coming from the guest. If to compare how it works before and after reboot, >> I can see the guest doing an ARP request for 172.20.1.23 and receives the >> response and it does the same after reboot but the answer does not come. >> >> If to remove vhost=on, it is all good. If to try Fedora19 >> (v3.10-something), it all good again - works before and after reboot. >> >> >> And there 2 questions: >> >> 1. does anybody have any clue what might go wrong after reboot? >> >> 2. Is there any good material to read about what exactly and how vhost >> accelerates? >> >> My understanding is that packets from the guest to the real network are >> going as: >> 1. guest's virtio-pci-net does ioport(VIRTIO_PCI_QUEUE_NOTIFY) >> 2. QEMU's net/virtio-net.c calls qemu_net_queue_deliver() >> 3. QEMU's net/tap.c calls tap_write_packet() and this is how the host knows >> that there is a new packet. >> >> >> Thanks! >> >> >> This how I run QEMU: >> ./qemu-system-ppc64 \ >> -enable-kvm \ >> -m 2048 \ >> -machine pseries \ >> -initrd 1.cpio \ >> -kernel vml312_virtio_net_dbg \ >> -nographic \ >> -vga none \ >> -netdev >> tap,id=id3,ifname=tap-id3,script=ifup.sh,downscript=ifdown.sh,vhost=on \ >> -device virtio-net-pci,id=id4,netdev=id3,mac=C0:41:49:4b:00:00 >> >> >> That is bridge config: >> [aik@dyn232 ~]$ brctl show >> bridge name bridge id STP enabled interfaces >> brtest 8000.00145e992e88 no pin eth4 >> >> >> The ifup.sh script: >> ifconfig $1 hw ether ee:01:02:03:04:05 >> /sbin/ifconfig $1 up >> /usr/sbin/brctl addif brtest $1 -- Alexey