Bug 921200

Summary: [NetKVM] Do not use VIRTIO_PCI_ISR for debug purposes in production code
Product: Red Hat Enterprise Linux 6 Reporter: Yan Vugenfirer <yvugenfi>
Component: virtio-winAssignee: Yan Vugenfirer <yvugenfi>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: high    
Version: 6.5CC: acathrow, bcao, bsarathy, kzhang, lijin, lnovich, mdeng, michen, qzhang
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Cause: Driver was using undocumented QEMU feature and using VIRTO_ISR to to trigger debug prints in case of BSOD or hangs in outgoing transfer. Consequence: Debug print out"virtio_ioport_write: unexpected address 0x13 value" might appear on the host. Fix: Do not use writes to VIRTIO_ISR register for debug purposes. Result: No debug printouts on the host. Guest BSODs and network hangs should be detected by other methods.
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-11-22 00:05:34 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:

Description Yan Vugenfirer 2013-03-13 16:52:53 UTC
Description of problem:

Current code will use VIRTIO_PCI_ISR register to notify host regarding two conditions on the guest:

1. BSOD (write 0).
2. Hanged TX transfer (write 1).

This is a hacky way that was used for host\guest debugging. Should be removed from production code as such behavior is not described in virtio spec.

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

How reproducible:

Steps to Reproduce:
Actual results:

Expected results:

Additional info:

Comment 1 Yan Vugenfirer 2013-04-07 14:47:17 UTC
Guest driver will no longer write to VIRTIO_PCI_ISR register.

This behavior could be enabled for debugging in compile time with  DBG_USE_VIRTIO_PCI_ISR_FOR_HOST_REPORT define.

Comment 3 Mike Cao 2013-04-12 06:41:35 UTC
Pls provide a way for QE to verify it ,

Comment 4 Yan Vugenfirer 2013-04-18 08:25:07 UTC

1. Cause BSOD on guest.

2. You QEMU shouldn't see QEMU printouts on the host notifying of incorrect write to virtio register.

Comment 6 guo jiang 2013-06-17 03:37:37 UTC
Verified this issue on virtio-win-prewhql-0.1.64

Steps same as comment #4

Actual Result:
on virtio-win-prewhql-0.1-64 QEMU didn't see QEMU printouts on the host notifying of incorrect write to virtio register.

Based on above, this issue has been fixed already.

Comment 7 guo jiang 2013-06-17 06:06:33 UTC
Reproduced this issue on virtio-win-prewhql-0.1.49
Verified this issue on virtio-win-prewhql-0.1.64

1.Boot guest with CLI:
/usr/libexec/qemu-kvm -M rhel6.4.0 -m 2G -smp 4,cores=4 -cpu cpu64-rhel6,+x2apic -usb -device usb-tablet -drive file=win2k3-32.raw,format=raw,if=none,id=drive-ide0-0-0,werror=stop,rerror=stop,cache=none -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -netdev tap,sndbuf=0,id=hostnet0,vhost=on,script=/etc/qemu-ifup-private,downscript=no -device virtio-net-pci,netdev=hostnet0,mac=00:13:34:25:22:41,bus=pci.0,addr=0x4,id=virtio-net-pci0 -netdev tap,sndbuf=0,id=hostnet2,script=/etc/qemu-ifup,downscript=no -device e1000,netdev=hostnet2,mac=00:23:30:25:12:10,bus=pci.0,addr=0x6 -uuid d9a27a4b-13f5-4d6a-8a8c-25269bcc1535 -rtc-td-hack -no-kvm-pit-reinjection -rtc base=localtime,clock=host,driftfix=slew -chardev socket,id=111a,path=/tmp/monitor-win2k3-32-network,server,nowait -mon chardev=111a,mode=readline -name win2k3-32-network -vnc :1 -vga cirrus -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 -monitor stdio

2.Enable the keyboard-initiated crash in the registry. In the registry key HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters, create a DWORD key named CrashOnCtrlScroll and value is 0x01.


4.Press "CTRL+SCROLL LOCK+SCROLL LOCK" keyboard shortcut to generate a BSOD.

Actual Result:
on virtio-win-prewhql-0.1-49 QEMU monitor show "virtio_ioport_write: unexpected address 0x13 value 0x1" on the host.
on virtio-win-prewhql-0.1-64 QEMU didn't see QEMU printouts on the host notifying of incorrect write to virtio register.

Based on above, this issue has been fixed already.

Comment 8 Mike Cao 2013-06-17 06:29:48 UTC
Move Status to VERIFIED according to comment #7

Comment 13 errata-xmlrpc 2013-11-22 00:05:34 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.