Bug 1666940

Summary: [virtio-win][netkvm] cannot get valid ip when boot guest with "vectors=1"
Product: Red Hat Enterprise Linux 8 Reporter: Yu Wang <wyu>
Component: virtio-winAssignee: ybendito
virtio-win sub component: virtio-win-prewhql QA Contact: lijin <lijin>
Status: CLOSED ERRATA Docs Contact:
Severity: medium    
Priority: medium CC: ailan, dkutalek, kanderso, leiyang, phou, wyu, ybendito, yvugenfi
Version: 8.0Keywords: Regression
Target Milestone: rc   
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1721244 (view as bug list) Environment:
Last Closed: 2019-07-30 14:22:06 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1721244, 1725380    

Description Yu Wang 2019-01-17 02:55:18 UTC
Description of problem:
cannot get valid ip when boot guest with "vectors=1"  on windows guest

Version-Release number of selected component (if applicable):
kernel-4.18.0-57.el8.x86_64
qemu-kvm-3.1.0-1.module+el8+2538+1516be75.x86_64
virtio-win-prewhql-162/163


How reproducible:
100%

Steps to Reproduce:
1. boot with virtio-net-pci and vectors=1

-device pcie-root-port,id=pcie.0-root-port-7,slot=7,chassis=7,addr=0x7,b    us=pcie.0 \
-device virtio-net-pci,mac=9a:99:9a:9b:9c:9d,id=id5gwWho,netdev=id2eDVCu    ,bus=pcie.0-root-port-7,addr=0x0,mq=on,vectors=1 \


2. ipconfig
3. ping external host

Actual results:
cannot get ip and ping failed

Expected results:
get valid ip and ping successfully

Additional info:
1 it is normal with vector=0/2/3/4/8/10
2 it is normal with build 160 (rhel7.6 released driver)

Comment 1 Yvugenfi@redhat.com 2019-01-19 20:12:15 UTC
Hi,

1. Can you please add the full QEMU command line?

2. On which Windows versions do you observe the bug?

Thanks,
Yan.

Comment 2 Yu Wang 2019-01-21 02:42:48 UTC
Full command line:

 /usr/libexec/qemu-kvm -S -name avocado-vt-vm1 -sandbox off -machine q35 -nodefaults -device VGA,bus=pcie.0,addr=0x1 -device pcie-root-port,id=pcie_root_port_0,slot=2,chassis=2,addr=0x2,bus=pcie.0 -device pcie-root-port,id=pcie_root_port_1,slot=3,chassis=3,addr=0x3,bus=pcie.0 -device pcie-root-port,id=pcie_root_port_2,slot=4,chassis=4,addr=0x4,bus=pcie.0 -chardev socket,id=qmp_id_qmpmonitor1,path=/var/tmp/123,server,nowait -mon chardev=qmp_id_qmpmonitor1,mode=control -chardev socket,id=qmp_id_catch_monitor,path=/var/tmp/123,server,nowait -mon chardev=qmp_id_catch_monitor,mode=control -device pvpanic,ioport=0x505,id=idAwNOdW -chardev socket,id=serial_id_serial0,path=/var/tmp/123,server,nowait -device isa-serial,chardev=serial_id_serial0 -chardev socket,id=seabioslog_id_20181205-071836-9rDqsWyl,path=/var/tmp/123,server,nowait -device isa-debugcon,chardev=seabioslog_id_20181205-071836-9rDqsWyl,iobase=0x402 -device pcie-root-port,id=pcie.0-root-port-5,slot=5,chassis=5,addr=0x5,bus=pcie.0 -device qemu-xhci,id=usb1,bus=pcie.0-root-port-5,addr=0x0 -drive file=/home/win7-32-sp1-virtio-scsi.qcow2,if=none,id=drive-ide0-0-0,format=qcow2,cache=none -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -device pcie-root-port,id=pcie.0-root-port-7,slot=7,chassis=7,addr=0x7,bus=pcie.0 -device virtio-net-pci,mac=9a:99:9a:9b:9c:9d,id=id5gwWho,netdev=id2eDVCu,bus=pcie.0-root-port-7,addr=0x0,mq=on,vectors=1 -netdev tap,id=id2eDVCu,vhost=on,queues=4 -m 4096 -smp 4,maxcpus=4,cores=2,threads=1,sockets=2 -cpu Broadwell,+kvm_pv_unhalt,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time -drive id=drive_cd1,if=none,snapshot=off,aio=threads,cache=none,media=cdrom,file=/home/kvm_autotest_root/iso/windows/virtio-win-1.9.3-1.el7.iso -device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1 -vnc :9 -rtc base=localtime,clock=host,driftfix=slew -boot order=cdn,once=c,menu=off,strict=off -enable-kvm -monitor stdio


I tested on win7-32, win8.1-32 and ws2019, all hit this issue. And tried on pc and q35, both hit this issue.

Comment 3 ybendito 2019-01-23 06:42:07 UTC
Indeed, the functionality with single MSIX vector is broken by commit
https://github.com/virtio-win/kvm-guest-drivers-windows/commit/861e27206ea84abf8d385c21cbe9c631d640df1f
As I can see the functionality with 2 vectors is also broken (partially), the adapter in general works, but process the data only on RX interrupts (not on TX interrupt), so may stuck by chance on driver disable.

Comment 5 Pei Zhang 2019-03-01 09:11:17 UTC
*** Bug 1684337 has been marked as a duplicate of this bug. ***

Comment 6 Pei Zhang 2019-03-01 09:12:47 UTC
*** Bug 1684063 has been marked as a duplicate of this bug. ***

Comment 7 Peixiu Hou 2019-03-05 06:08:43 UTC
Reproduced this issue with virtio-win-prewhql-162.

Verified this issue with virtio-win-prewhql-168, can get valid ip address and ping external host successfully.

Steps as comment#0.

Used versions:
kernel-4.18.0-70.el8.x86_64
qemu-kvm-3.1.0-11.module+el8+2747+40c9b77e.x86_64
seabios-bin-1.12.0-1.module+el8+2706+3c6581b6.noarch

Best Regards~
Peixiu

Comment 12 errata-xmlrpc 2019-07-30 14:22:06 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2019:1997