Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
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.
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: