Bug 988206

Summary: [virtio-win][netkvm]Error message popped up in monitor after the guest with one hot-plug nic resumed from S4
Product: Red Hat Enterprise Linux 7 Reporter: Min Deng <mdeng>
Component: virtio-winAssignee: Yvugenfi <yvugenfi>
Status: CLOSED WONTFIX QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: acathrow, bcao, bsarathy, juzhang, michen, rhod, virt-maint
Target Milestone: rc   
Target Release: 7.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-02-23 14:23:21 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: 923626    

Description Min Deng 2013-07-25 06:05:35 UTC
Description of problem:
Hibernate&resume a guest that hot-plug a nic,though the guest resumed successfully,but some unexpected messages pop up in monitor. 

Version-Release number of selected component (if applicable):

build 65
qemu-kvm-1.5.1-2.el7.x86_64
seabios-1.7.2.2-2.el7.x86_64
seavgabios-bin-1.7.2.2-2.el7.noarch
vgabios-0.6c-9.el7.noarch
on rhel7 host.

How reproducible:
3 times

Steps to Reproduce:
1.boot up guest with the following 

  /usr/libexec/qemu-kvm -smp 4 -m 2G -device virtio-balloon-pci,id=balloon0 -k en-us -usb -device usb-tablet,id=tablet0 -device intel-hda,id=sound0 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -drive file=/home/win732.qcow3,format=qcow2,cache=none,if=none,werror=stop,rerror=stop,id=drive-disk0,media=disk,cache=writethrough,serial=systemdisk -device ide-drive,drive=drive-disk0,id=disk0,bootindex=2 -spice port=5931,disable-ticketing -vga qxl -uuid `uuidgen` -monitor stdio -drive file=NFS.qcow3,if=none,format=qcow2,id=drive-virtio-data1,werror=stop,rerror=stop,cache=writeback -device virtio-blk-pci,id=virtio-data1,drive=drive-virtio-data1 -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 -vnc :1 -cdrom en_windows_7_ultimate_with_sp1_x86_dvd_u_677460.iso -qmp tcp:0:4444,server,nowait

2.hot-plug a virtio nic to the guest.

{"execute": "qmp_capabilities"}
{"return": {}}
{ "execute": "netdev_add", "arguments": { "type":"tap","id":"hostnet0","vhost":"on","script":"/etc/qemu-ifup"}}
{"return": {}}
{"execute": "device_add", "arguments": { "driver":"virtio-net-pci","netdev":"hostnet0","mac":"00:1a:4a:42:0b:01","id": "net0"}}
{"return": {}}

3.resume it with the following CLI -

  /usr/libexec/qemu-kvm -smp 4 -m 2G -device virtio-balloon-pci,id=balloon0 -k en-us -usb -device usb-tablet,id=tablet0 -device intel-hda,id=sound0 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -drive file=/home/win732.qcow3,format=qcow2,cache=none,if=none,werror=stop,rerror=stop,id=drive-disk0,media=disk,cache=writethrough,serial=systemdisk -device ide-drive,drive=drive-disk0,id=disk0,bootindex=2 -netdev tap,id=hostnet0,vhost=on,script=/etc/qemu-ifup -device virtio-net-pci,netdev=hostnet0,id=net0,mac=00:11:41:54:33:8a -spice port=5931,disable-ticketing -vga qxl -uuid `uuidgen` -monitor stdio -drive file=NFS.qcow3,if=none,format=qcow2,id=drive-virtio-data1,werror=stop,rerror=stop,cache=writeback -device virtio-blk-pci,id=virtio-data1,drive=drive-virtio-data1 -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 -vnc :1 -cdrom en_windows_7_ultimate_with_sp1_x86_dvd_u_677460.iso -qmp tcp:0:4444,server,nowait

Actual results:

The guest was resumed successfully but some unexpected message popped up in monitor
qemu-kvm: virtio_ioport_write: unexpected address 0x0 value 0x0
qemu-kvm: virtio_ioport_write: unexpected address 0x0 value 0x2

Expected results:
No such error messages there.

Additional info:

Comment 2 Mike Cao 2013-07-25 06:55:05 UTC
Which version netkvm are you using ,this should fixed in netkvm build 59

Comment 3 Min Deng 2013-07-25 07:05:34 UTC
(In reply to Mike Cao from comment #2)
> Which version netkvm are you using ,this should fixed in netkvm build 59

Hi Mike,

   Double check the version I used,it's build 65.Any issues please let me know.

Thanks
Min

Comment 4 Yvugenfi@redhat.com 2013-07-29 12:23:16 UTC
Hi Mike, 

It looks like a different issue - the bug that was fixe was writing to ISR register: #define VIRTIO_PCI_ISR          19

Best regards,
Yan.

Comment 5 Yvugenfi@redhat.com 2014-02-23 14:23:21 UTC
This is something that should be documented, but cannot be handled by the driver. Windows cannot handle change of HW during S4.

There are two issues with command lines used for the test:

1. QEMU creates default network device in first command line (e1000).

2. There is no address on PCI bus for the devices.

Will following changes to command line and QMP the VM will function correctly after hot add/S4/resume sequence:

1. Start VM with:
-netdev tap,id=hostnet1,vhost=on,script=/home/yanv/dev/scripts/whql-ifup \
-device e1000,netdev=hostnet1,addr=0x5,id=net1,mac=00:11:41:54:33:82 \

(Pay attention to addr=5. You can observe it later in device manager or "info pci" in qemu monitor).

2. Add device with following command:

{"execute": "device_add", "arguments": { "driver":"virtio-net-pci","netdev":"hostnet0","addr":"6","mac":"00:1a:4a:42:0b:01","id": "net0"}}

(Once again - pay attention to explicit address parameter. Same as before you should see it in device manager or with "info lci")

3. After S4 start VM with following addition to command line:
-netdev tap,id=hostnet1,vhost=on,script=/home/yanv/dev/scripts/whql-ifup \
-device e1000,netdev=hostnet1,addr=0x5,id=net1,mac=00:11:41:54:33:82 \
-netdev tap,id=hostnet0,vhost=on,script=/home/yanv/dev/scripts/whql-ifup \
-device virtio-net-pci,netdev=hostnet0,addr=0x6,id=net0,mac=00:11:41:54:33:8a \

(Provide exactly the same address to added device).



* Please change test procedure and documentation accordingly. In libvirt is adding  devices to Windows VMs without explicit address indication, please open bug for libvirt.