Description of problem: When requesting a serial number from a device after installing windows 2012 with drivers from virtio-win-0.1.171-1.noarch Version-Release number of selected component (if applicable): virtio-win-0.1.171-1.noarch qemu-kvm-1.5.3-167.el7_7.1.x86_64 CentOS Linux release 7.7.1908 (Core) How reproducible: somewhere around 4 requests were enough to see 1 error Steps to Reproduce: 1. install libvirt/qemu/virtio-win 2. Instantiate vm with vioserial drives 3. request serial number with 'Get-WMIObject win32_physicalmedia | Format-List Tag,SerialNumber' in powershell Actual results: PS C:\Users\Administrator> Get-WMIObject win32_physicalmedia | Format-List Tag,SerialNumber Tag : \\.\PHYSICALDRIVE0 SerialNumber : 70daaa7d Tag : \\.\CDROM1 SerialNumber : Tag : \\.\CDROM0 SerialNumber : PS C:\Users\Administrator> Get-WMIObject win32_physicalmedia | Format-List Tag,SerialNumber Tag : \\.\PHYSICALDRIVE0 SerialNumber : 70daaa7d Tag : \\.\CDROM1 SerialNumber : Tag : \\.\CDROM0 SerialNumber : PS C:\Users\Administrator> Get-WMIObject win32_physicalmedia | Format-List Tag,SerialNumber Tag : \\.\PHYSICALDRIVE0 SerialNumber : ø☻ÿÿ4à!•Ð Tag : \\.\CDROM1 SerialNumber : Tag : \\.\CDROM0 SerialNumber : PS C:\Users\Administrator> Get-WMIObject win32_physicalmedia | Format-List Tag,SerialNumber Tag : \\.\PHYSICALDRIVE0 SerialNumber : 70daaa7d Tag : \\.\CDROM1 SerialNumber : Tag : \\.\CDROM0 SerialNumber : PS C:\Users\Administrator> Expected results: 70daaa7d returned as serial number on every request. Additional info: domain xml: <domain type='kvm' id='1'> <name>win-test</name> <uuid>963198a2-0c2a-4456-a066-c459e40d7bf7</uuid> <description>win-test</description> <metadata/> <memory unit='KiB'>67108864</memory> <currentMemory unit='KiB'>67108864</currentMemory> <vcpu placement='static'>8</vcpu> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> </os> <features> <acpi/> <apic/> <pae/> <hyperv> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> </hyperv> </features> <cpu mode='custom' match='exact' check='full'> <model fallback='forbid'>Broadwell</model> <vendor>Intel</vendor> <feature policy='require' name='vme'/> <feature policy='disable' name='ds'/> <feature policy='disable' name='acpi'/> <feature policy='require' name='ss'/> <feature policy='disable' name='ht'/> <feature policy='disable' name='tm'/> <feature policy='disable' name='pbe'/> <feature policy='disable' name='dtes64'/> <feature policy='disable' name='monitor'/> <feature policy='disable' name='ds_cpl'/> <feature policy='disable' name='vmx'/> <feature policy='disable' name='smx'/> <feature policy='disable' name='est'/> <feature policy='disable' name='tm2'/> <feature policy='disable' name='xtpr'/> <feature policy='disable' name='pdcm'/> <feature policy='disable' name='dca'/> <feature policy='disable' name='osxsave'/> <feature policy='require' name='f16c'/> <feature policy='require' name='rdrand'/> <feature policy='disable' name='arat'/> <feature policy='disable' name='tsc_adjust'/> <feature policy='disable' name='intel-pt'/> <feature policy='require' name='xsaveopt'/> <feature policy='require' name='pdpe1gb'/> <feature policy='require' name='abm'/> <feature policy='require' name='hypervisor'/> </cpu> <clock offset='localtime'> <timer name='pit' tickpolicy='delay'/> <timer name='rtc' tickpolicy='catchup'/> <timer name='hypervclock' present='yes'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw' cache='writethrough'/> <source file='/home/win-test/win_2012_r2_x64_dvd_2707946.iso'/> <backingStore/> <target dev='hda' bus='ide'/> <readonly/> <boot order='1'/> <alias name='ide0-0-0'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw' cache='writethrough'/> <source file='/usr/share/virtio-win/virtio-win.iso'/> <backingStore/> <target dev='hdb' bus='ide'/> <readonly/> <alias name='ide0-0-1'/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='writethrough'/> <source file='/home/win-test/main.qcow2'/> <backingStore/> <geometry cyls='16383' heads='16' secs='63' trans='lba'/> <target dev='vda' bus='virtio'/> <serial>70daaa7d</serial> <boot order='2'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x0'/> </controller> <controller type='usb' index='0' model='piix3-uhci'> <alias name='usb'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='pci' index='0' model='pci-root'> <alias name='pci.0'/> </controller> <controller type='ide' index='0'> <alias name='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='bridge'> <mac address='7c:4c:58:25:d2:24'/> <source bridge='br0'/> <target dev='tap0'/> <model type='virtio'/> <driver queues='16'/> <link state='up'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <channel type='unix'> <source mode='bind' path='/tmp/win-test.agent'/> <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='tablet' bus='usb'> <alias name='input0'/> <address type='usb' bus='0' port='1'/> </input> <input type='mouse' bus='ps2'> <alias name='input1'/> </input> <input type='keyboard' bus='ps2'> <alias name='input2'/> </input> <graphics type='vnc' port='5900' autoport='yes' listen='XXX.XXX.XXX.XXX'> <listen type='address' address='XXX.XXX.XXX.XXX'/> </graphics> <video> <model type='vga' vram='16384' heads='1' primary='yes'/> <alias name='video0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='none'/> </devices> <seclabel type='dynamic' model='selinux' relabel='yes'> <label>unconfined_u:unconfined_r:svirt_t:s0:c15,c453</label> <imagelabel>unconfined_u:object_r:svirt_image_t:s0:c15,c453</imagelabel> </seclabel> </domain>
Thank you for reporting the problem. Do you all that "PS C:\Users\Administrator> Get-WMIObject win32_physicalmedia | Format-List Tag,SerialNumber" sequentially, without reboots, viostor driver disabling/enabling or disk off-lining/on-lining in the middle? Best, Vadim.
Yes, those were run one after another, pasted the first time then, hitting up and enter a number of times in succession. No other actions were taken.
Can QE help reproducing this issue ? Thanks, Vadim
Created attachment 1651808 [details] issue
Description of problem: Viostor serial request sometimes returns garbage. Version-Release number of selected component (if applicable): Host: qemu-kvm-1.5.3-167.el7_7.1.x86_64 kernel-3.10.0-1062.9.1.el7.x86_64 seabios-bin-1.11.0-2.el7.noarch Guest: windows 2012 with virtio-win-1.9.9-3.el8(viostor driver version:62.77.104.17100) How reproducible: 1/3 Steps to Reproduce: 1. boot guest with below cmd lines. /usr/libexec/qemu-kvm \ -name 'avocado-vt-vm3' \ -machine pc \ -nodefaults \ -device VGA,bus=pci.0 \ -drive id=drive_stg,readonly=off,snapshot=off,if=none,aio=threads,cache=none,format=qcow2,file=win2012.qcow2 \ -device virtio-blk-pci,id=stg,drive=drive_stg,serial=TARGET_DISK0,bus=pci.0,serial=70daaa7d \ -device virtio-net-pci,mac=9a:36:83:b6:3d:05,id=idJVpmsF,netdev=id23ZUK6,bus=pci.0 \ -netdev tap,id=id23ZUK6,vhost=on \ -m 14336 \ -smp 2,maxcpus=4 \ -cpu 'Skylake-Server' \ -drive id=drive_cd1,if=none,snapshot=off,aio=threads,cache=none,media=cdrom,file=/home/kvm_autotest_root/iso/ISO/Win2012/en_windows_server_2012_x64_dvd_915478.iso \ -device ide-cd,id=cd2,drive=drive_cd1,bus=ide.0,unit=0 \ -cdrom /home/kvm_autotest_root/iso/windows/virtio-win-1.9.9-3.el8.iso \ -device piix3-usb-uhci,id=usb -device usb-tablet,id=input0 \ -vnc :1 \ -rtc base=localtime,clock=host,driftfix=slew \ -boot order=cdn,once=c,menu=off,strict=off \ -enable-kvm \ -qmp tcp:0:1231,server,nowait \ -monitor stdio \ 2. Open PowerShell. 3. Enter the command below into PowerShell, and press Enter. (see screenshot below) Get-WMIObject win32_physicalmedia | Format-List Tag,SerialNumber Note:still reproduce on virtio-win-prewhql-0.1-176.iso (viostor driver version:62.81.104.17600)
Can reproduce this issue on Win10 as well when using Power Shell. But it seems to be working fine when reading VPD page 0x80 with sg_inq utility.
Can we try Win32_DiskDrive instead of win32_physicalmedia ? It doesn't look as viostor problem at all. Get-WmiObject doesn't initiate access to miniport driver on each request, but seems to be fully dependent on data already cached by WMI.
I try Win32_DiskDrive instead of win32_physicalmedia for 200 times,no garbage.
(In reply to menli from comment #8) > I try Win32_DiskDrive instead of win32_physicalmedia for 200 times,no > garbage. Thank you. Vadim.
I have not seen this behavior with IDE or Virtio SCSI Drives, only Virtio blk.