Bug 1791153

Summary: Windows guest will BSOD,after hot plug virtio-net nic then hot unplug
Product: Red Hat Enterprise Linux 8 Reporter: Lei Yang <leiyang>
Component: virtio-winAssignee: ybendito
virtio-win sub component: virtio-win-prewhql QA Contact: Yu Wang <wyu>
Status: CLOSED ERRATA Docs Contact:
Severity: medium    
Priority: medium CC: chayang, ddepaula, jinzhao, juzhang, jwboyer, lijin, lmiksik, vrozenfe, wyu, ybendito
Version: 8.1   
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: Environment:
Last Closed: 2020-04-28 16:05:16 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:
Attachments:
Description Flags
Driver log from crash dump none

Description Lei Yang 2020-01-15 02:48:20 UTC
Description of problem:
Boot guest of an e1000e nic and set_link false the e1000e nic then hot plug a virtio-net nic.set_link true the e1000e nic then hot unplug the virtio-net nic,guest will BSOD.

Version-Release number of selected component (if applicable):
kernel-4.18.0-169.el8.x86_64
qemu-kvm-4.2.0-5.module+el8.2.0+5389+367d9739.x86_64
virtio-win-prewhql-0.1-176.iso

How reproducible:
5/5

Steps to Reproduce:
1.boot a guest of e1000e nic
/usr/libexec/qemu-kvm \
-name 'avocado-vt-vm1'  \
-sandbox on  \
-machine q35  \
-nodefaults \
-device VGA,bus=pcie.0,addr=0x1 \
-m 7168  \
-smp 6,maxcpus=6,cores=3,threads=1,dies=1,sockets=2  \
-cpu 'Haswell-noTSX',hv_stimer,hv_synic,hv_vpindex,hv_reset,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv-tlbflush,+kvm_pv_unhalt  \
-device pcie-root-port,id=pcie.0-root-port-2,slot=2,chassis=2,addr=0x2,bus=pcie.0 \
-device qemu-xhci,id=usb1,bus=pcie.0-root-port-2,addr=0x0 \
-device pcie-root-port,id=pcie.0-root-port-3,slot=3,chassis=3,addr=0x3,bus=pcie.0 \
-device virtio-scsi-pci,id=virtio_scsi_pci0,bus=pcie.0-root-port-3,addr=0x0 \
-drive id=drive_image1,if=none,snapshot=off,aio=threads,cache=none,format=qcow2,file=/home/kvm_autotest_root/images/win10-64-virtio-scsi.qcow2 \
-device scsi-hd,id=image1,drive=drive_image1 \
-device pcie-root-port,id=pcie.0-root-port-4,slot=4,chassis=4,addr=0x4,bus=pcie.0 \
-device virtio-net-pci,mac=9a:3d:cf:e6:15:e9,id=idH6ALes,netdev=idMG2TxA,bus=pcie.0-root-port-4,addr=0x0  \
-netdev tap,id=idMG2TxA \
-drive id=drive_cd1,if=none,snapshot=off,aio=threads,cache=none,media=cdrom,file=/home/kvm_autotest_root/iso/windows/winutils.iso \
-device scsi-cd,id=cd1,drive=drive_cd1 \
-device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1  \
-vnc :0  \
-rtc base=localtime,clock=host,driftfix=slew  \
-boot menu=off,order=cdn,once=c,strict=off \
-enable-kvm \
-device pcie-root-port,id=pcie_extra_root_port_0,slot=5,chassis=5,addr=0x5,bus=pcie.0 \
-qmp tcp:0:5555,server,nowait \
-monitor stdio \

2.Set network link down
{"execute":"qmp_capabilities"}
{"return": {}}
{"execute":"set_link","arguments":{"name":"idH6ALes","up":false}}
{"return": {}}
3.Hotplug a virito-net-pci nic.
{'execute': 'netdev_add', 'arguments': {'type': 'tap', 'id': 'id5DyGGD'}}
{"return": {}}
{'execute': 'device_add', 'arguments': {'driver': 'virtio-net-pci', 'netdev': 'id5DyGGD', 'mac': '9a:3d:cf:e6:15:ea', 'id': 'idsIfN6P', 'bus': 'pcie_extra_root_port_0', 'addr': '0x0'}}
{"return": {}}
{"timestamp": {"seconds": 1578979135, "microseconds": 38230}, "event": "NIC_RX_FILTER_CHANGED", "data": {"name": "idsIfN6P", "path": "/machine/peripheral/idsIfN6P/virtio-backend"}}

3.Pause VM
{'execute': 'stop'}

4.Resume VM
{'execute': 'cont'}

5.Set network link up
{"execute":"set_link","arguments":{"name":"idH6ALes","up":true}}
{"return": {}}

6.Hot unplug virtio-net-pci nic. Blue screen after wait for one minute.
{'execute': 'device_del', 'arguments': {'id': 'idsIfN6P'}}
{"return": {}}
{"timestamp": {"seconds": 1578979253, "microseconds": 602866}, "event": "DEVICE_DELETED", "data": {"path": "/machine/peripheral/idsIfN6P/virtio-backend"}}

Actual results:
Windows guest BSOD

Expected results:
Guest can works well

Additional info:
BOSD file:http://fileshare.englab.nay.redhat.com/pub/section2/coredump/var/crash/leiyang/

Comment 1 ybendito 2020-01-15 08:16:18 UTC
Created attachment 1652371 [details]
Driver log from crash dump

Comment 7 ybendito 2020-01-16 07:58:32 UTC
Fixed in upstream
https://github.com/virtio-win/kvm-guest-drivers-windows/pull/430

Comment 8 Vadim Rozenfeld 2020-01-22 03:08:44 UTC
can we try new drivers from build 178 ?
https://brewweb.engineering.redhat.com/brew/buildinfo?buildID=1063846

Comment 9 Yu Wang 2020-01-22 09:47:19 UTC
(In reply to Vadim Rozenfeld from comment #8)
> can we try new drivers from build 178 ?
> https://brewweb.engineering.redhat.com/brew/buildinfo?buildID=1063846

I tried both with build178 and this temp driver, all occured BSOD at the second time.

====================================================

Test log

04:33:51 DEBUG| Context: Start test iteration 2 --> (hotplug_nic) --> Opening tap device node for t1-XLlJFA
04:33:51 INFO | Context: Start test iteration 2 --> (hotplug_nic) --> Assigning tap idRPI3sI to qemu by fd
04:33:51 DEBUG| (monitor avocado-vt-vm1.qmpmonitor1) Sending command 'getfd'
04:33:51 DEBUG| Send command: {'execute': 'getfd', 'arguments': {'fdname': 'idRPI3sI'}, 'id': 'yGmuS7QL'}
04:33:51 DEBUG| Context: Start test iteration 2 --> (hotplug_nic) --> Raising interface for nic hotplug_nic1 on vm avocado-vt-vm1 with attach_cmd netdev_add type=tap,id=idaG0A3G,fd=39
04:33:51 DEBUG| Context: Start test iteration 2 --> (hotplug_nic) --> Raising bridge for nic hotplug_nic1 on vm avocado-vt-vm1 with attach_cmd netdev_add type=tap,id=idaG0A3G,fd=39
04:33:51 DEBUG| Host does not support OpenVSwitch: Command 'ovs-vswitchd' could not be found in any of the PATH dirs: ['/bin', '/usr/sbin', '/usr/local/sbin', '/usr/bin', '/usr/local/bin', '/sbin', '/usr/libexec', '/root/bin']
04:33:51 DEBUG| Context: Start test iteration 2 --> (hotplug_nic) --> Hotplugging nic hotplug_nic1 on vm avocado-vt-vm1 with attach_cmd netdev_add type=tap,id=idaG0A3G,fd=39
04:33:51 DEBUG| (monitor avocado-vt-vm1.qmpmonitor1) Sending command 'netdev_add'
04:33:51 DEBUG| Send command: {'execute': 'netdev_add', 'arguments': {'type': 'tap', 'id': 'idaG0A3G', 'fd': 39}, 'id': 'oHbvA89U'}
04:33:51 DEBUG| (monitor avocado-vt-vm1.qmpmonitor1) Sending command 'device_add'
04:33:51 DEBUG| Send command: {'execute': 'device_add', 'arguments': {'driver': 'virtio-net-pci', 'netdev': 'idaG0A3G', 'mac': '9a:fa:6e:05:f9:d1', 'id': 'idL94kwW', 'bus': 'pcie_extra_root_port_0', 'addr': '0x0'}, 'id': 'DDy9ZenU'}
04:33:51 INFO | Check if new interface gets ip address
04:35:21 DEBUG| Attempting to log into 'avocado-vt-vm1' via serial console (timeout 90s)
04:35:32 DEBUG| Sending command: echo %OS%
04:35:32 DEBUG| Sending command: wmic nicconfig where IPEnabled=True get ipaddress, macaddress
04:35:33 WARNI| No VM's NIC got IP address
04:35:33 DEBUG| Sending command: wmic nic where macaddress="9a:fa:6e:05:f9:d1" get netconnectionid
04:35:33 DEBUG| Sending command: echo %errorlevel%
04:35:34 DEBUG| Sending command: netsh interface set interface name="C:\Windows\system32>" admin=DISABLED
04:35:34 DEBUG| Sending command: echo %errorlevel%


Thanks
Yu Wang

Comment 14 Yu Wang 2020-01-23 01:50:36 UTC
Hi,

Reproduce this bug with build 176 and verified this bug with 178, no BSOD at all.

Thanks all

Yu Wang

Comment 20 errata-xmlrpc 2020-04-28 16:05:16 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-2020:1757