Hide Forgot
Description of problem: if parameter vectors is set more than 32 , it can't be analysed correctly when booting guest with serial driver Version-Release number of selected component (if applicable): #uname -r 2.6.32-220.el6.x86_64 #rpm -qa | grep qemu-kvm qemu-kvm-0.12.1.2-2.210.el6.x86_64 guest version: win2008-32 How reproducible: mostly Steps to Reproduce: 1.boot a guest: /usr/libexec/qemu-kvm -m 4G -smp 2 -cpu cpu64-rhel6,+x2apic -drive file=/mnt/xigao/win2008-32-virtio.raw,format=raw,if=none,id=drive-virtio-0-0,werror=stop,rerror=stop,cache=none -device virtio-blk-pci,drive=drive-virtio-0-0,id=virtio-0-0,bus=pci.0,addr=0x3,bootindex=1 -netdev tap,id=hostnet0,script=/etc/qemu-ifup -device virtio-net-pci,netdev=hostnet0,mac=ff:10:20:2d:31:21,bus=pci.0,addr=0x4,id=net0 -uuid `uuidgen` -rtc base=localtime,clock=host,driftfix=slew -no-kvm-pit-reinjection -monitor stdio -name win2008-32 -spice port=8000,disable-ticketing -vga qxl -balloon none -usb -device usb-tablet -device virtio-serial-pci,id=virtio-serial0,max_ports=10,vectors=33,bus=pci.0,addr=0x5,id=bus1 -chardev socket,id=channel0,server,nowait,path=/tmp/tty1 -device virtserialport,chardev=channel0,name=com.redhat.rhevm.vdsm1,bus=virtio-serial0.0,nr=1 2.info qtree: (qemu) info qtree bus: main-system-bus type System dev: i440FX-pcihost, id "" bus: pci.0 type PCI dev: virtio-serial-pci, id "virtio-serial0" dev-prop: vectors = 0---------------------------->vectors is set 0 dev-prop: class = 0x780 dev-prop: indirect_desc = on dev-prop: event_idx = on dev-prop: max_ports = 10 dev-prop: flow_control = 1 bus-prop: addr = 05.0 bus-prop: romfile = <null> bus-prop: rombar = 1 bus-prop: multifunction = off class Class 0780, addr 00:05.0, pci id 1af4:1003 (sub 1af4:0003) bar 0: i/o at 0xc0e0 [0xc0ff] 3. when setting vectors up to certain value in CLI,vectors also show other value(max_ports+1) -device virtio-serial-pci,id=virtio-serial0,max_ports=10,vectors=999999999999999999999,bus=pci.0,addr=0x5,id=bus1 -chardev socket,id=channel0,server,nowait,path=/tmp/tty1 -device virtserialport,chardev=channel0,name=com.redhat.rhevm.vdsm1,bus=virtio-serial0.0,nr=1 4 info qtree: (qemu) info qtree bus: main-system-bus type System dev: i440FX-pcihost, id "" bus: pci.0 type PCI dev: virtio-serial-pci, id "virtio-serial0" dev-prop: vectors = 11---------------------------->max_ports+1 dev-prop: class = 0x780 dev-prop: indirect_desc = on dev-prop: event_idx = on dev-prop: max_ports = 10 dev-prop: flow_control = 1 bus-prop: addr = 05.0 bus-prop: romfile = <null> bus-prop: rombar = 1 bus-prop: multifunction = off class Class 0780, addr 00:05.0, pci id 1af4:1003 (sub 1af4:0003) bar 0: i/o at 0xc0e0 [0xc0ff] bar 1: mem at 0xf4040000 [0xf4040fff] Actual results: parameter vectors can not be analysed correctly Expected results: parameter vectors can be analysed correctly Additional info:
It is not related to Windows drivers, and it's not a bug. Steps 1 and 2 - QEMU cannot initialize more than 32 vectors. Hence, the number of vectors is 0. Steps 3 and 4. Parameter "vectors" defined as 32-bit integer. QEMU cannot convert 999999999999999999999 into integer and calculates number of vectors as max_ports + 1. BTW, current Windows implementation of virtio-serial doesn't support MSI-X mode. Windows will work with vioserial in IRQ mode only, no matter what value was assigned to vectors. Best, Vadim.
(In reply to comment #2) > It is not related to Windows drivers, and it's not a bug. > Yes ,It is a qemu-kvm bug . > Steps 1 and 2 - QEMU cannot initialize more than 32 vectors. Hence, the number > of vectors is 0. > > Steps 3 and 4. Parameter "vectors" defined as 32-bit integer. QEMU cannot > convert > 999999999999999999999 into integer and calculates number of vectors as > max_ports + 1. > > BTW, current Windows implementation of virtio-serial doesn't support MSI-X > mode. > Windows will work with vioserial in IRQ mode only, no matter what value was > assigned to vectors. BTW ,what about virtio-balloon,virtio-netkVM and virtio-blk ? (/me think virtio-netKVM support MSI-X, but not sure ) Thanks , Mike > > Best, > Vadim.
(In reply to comment #3) > (In reply to comment #2) > > It is not related to Windows drivers, and it's not a bug. > > > > Yes ,It is a qemu-kvm bug . > > > Steps 1 and 2 - QEMU cannot initialize more than 32 vectors. Hence, the number > > of vectors is 0. > > > > Steps 3 and 4. Parameter "vectors" defined as 32-bit integer. QEMU cannot > > convert > > 999999999999999999999 into integer and calculates number of vectors as > > max_ports + 1. > > > > BTW, current Windows implementation of virtio-serial doesn't support MSI-X > > mode. > > Windows will work with vioserial in IRQ mode only, no matter what value was > > assigned to vectors. > > BTW ,what about virtio-balloon,virtio-netkVM and virtio-blk ? (/me think > virtio-netKVM support MSI-X, but not sure ) Yes, net and block support MSI-X. Even more, they both have MSI-X enabled by default on W2K8 and higher. MSI-X is not supported on XP & W2K3. Balloon by design doesn't support MSI-X on any platform. Cheers, Vadim. > > Thanks , > Mike > > > > > Best, > > Vadim.