Red Hat Bugzilla – Bug 1002888
usb hub doesn't work properly (win2012 sees downstream port #1 only)
Last modified: 2014-01-27 19:53:37 EST
Description of problem: +++ This bug was initially created as a clone of Bug #1001604 +++ Version-Release number of selected component (if applicable): host kernel: 2.6.32-414.el6.x86_64 qemu-kvm: qemu-kvm-0.12.1.2-2.398.el6.x86_64 How reproducible: 100% Steps to Reproduce: 1. boot a win2012 guest: /usr/libexec/qemu-kvm -M pc -cpu SandyBridge -nodefaults -enable-kvm -m 4G -smp 4,sockets=2,cores=2,threads=1 -name usb-test -rtc base=localtime,clock=host,driftfix=slew -drive file=/home/win2012-64-virtio.qcow2,if=none,id=drive-system-disk,format=qcow2,cache=none,aio=native,werror=stop,rerror=stop -device ide-drive,bus=ide.0,unit=0,drive=drive-system-disk,id=system-disk,bootindex=1 -k en-us -boot menu=on -spice disable-ticketing,port=5931 -vga qxl -monitor stdio \ [root@dell-per815-01 home]# cat cli-uhci-ehci.sh /usr/libexec/qemu-kvm -M pc -cpu SandyBridge -enable-kvm -m 4G -smp 4,sockets=2,cores=2,threads=1 -name usb-test -rtc base=localtime,clock=host,driftfix=slew -drive file=/home/win2012-64-virtio.qcow2,if=none,id=drive-system-disk,format=qcow2,cache=none,aio=native,werror=stop,rerror=stop -device ide-drive,bus=ide.0,unit=0,drive=drive-system-disk,id=system-disk,bootindex=1 -qmp tcp:0:4444,server,nowait -k en-us -boot menu=on -vnc :1 -spice disable-ticketing,port=5931 -vga qxl -monitor stdio \ -readconfig /home/ich9-ehci-uhci.cfg \ -drive file=/home/disk/disk1.qcow2,if=none,id=drive-usb-0-1,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-1,id=usb-0-1,removable=on \ -drive file=/home/disk/disk2.qcow2,if=none,id=drive-usb-0-2,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-2,id=usb-0-2,removable=on \ -drive file=/home/disk/disk3.qcow2,if=none,id=drive-usb-0-3,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-3,id=usb-0-3,removable=on \ -drive file=/home/disk/disk4.qcow2,if=none,id=drive-usb-0-4,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-4,id=usb-0-4,removable=on \ -drive file=/home/disk/disk5.qcow2,if=none,id=drive-usb-0-5,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-5,id=usb-0-5,removable=on \ -drive file=/home/disk/disk6.qcow2,if=none,id=drive-usb-0-6,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-6,id=usb-0-6,removable=on \ -drive file=/home/disk/disk7.qcow2,if=none,id=drive-usb-0-7,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-7,id=usb-0-7,removable=on \ -drive file=/home/disk/disk8.qcow2,if=none,id=drive-usb-0-8,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-8,id=usb-0-8,removable=on \ -drive file=/home/disk/disk9.qcow2,if=none,id=drive-usb-0-9,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-9,id=usb-0-9,removable=on \ -drive file=/home/disk/disk10.qcow2,if=none,id=drive-usb-0-10,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-10,id=usb-0-10,removable=on \ -drive file=/home/disk/disk11.qcow2,if=none,id=drive-usb-0-11,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-11,id=usb-0-11,removable=on \ -drive file=/home/disk/disk12.qcow2,if=none,id=drive-usb-0-12,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-12,id=usb-0-12,removable=on \ -drive file=/home/disk/disk13.qcow2,if=none,id=drive-usb-0-13,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-13,id=usb-0-13,removable=on \ -drive file=/home/disk/disk14.qcow2,if=none,id=drive-usb-0-14,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-14,id=usb-0-14,removable=on \ -drive file=/home/disk/disk15.qcow2,if=none,id=drive-usb-0-15,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-15,id=usb-0-15,removable=on \ -drive file=/home/disk/disk16.qcow2,if=none,id=drive-usb-0-16,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-16,id=usb-0-16,removable=on cat ich9-ehci-uhci.cfg [device "ehci"] driver = "ich9-usb-ehci1" addr = "1d.7" multifunction = "on" [device "uhci-1"] driver = "ich9-usb-uhci1" addr = "1d.0" multifunction = "on" masterbus = "ehci.0" firstport = "0" [device "uhci-2"] driver = "ich9-usb-uhci2" addr = "1d.1" multifunction = "on" masterbus = "ehci.0" firstport = "2" [device "uhci-3"] driver = "ich9-usb-uhci3" addr = "1d.2" multifunction = "on" masterbus = "ehci.0" firstport = "4" 2. (qemu) info usb Device 0.1, Port 1, Speed 480 Mb/s, Product QEMU USB MSD Device 0.2, Port 2, Speed 480 Mb/s, Product QEMU USB MSD Device 0.3, Port 3, Speed 480 Mb/s, Product QEMU USB MSD Device 0.4, Port 4, Speed 480 Mb/s, Product QEMU USB MSD Device 0.5, Port 5, Speed 480 Mb/s, Product QEMU USB MSD Device 0.1, Port 6, Speed 12 Mb/s, Product QEMU USB Hub Device 0.2, Port 6.1, Speed 12 Mb/s, Product QEMU USB MSD Device 0.3, Port 6.2, Speed 12 Mb/s, Product QEMU USB MSD Device 0.4, Port 6.3, Speed 12 Mb/s, Product QEMU USB MSD Device 0.5, Port 6.4, Speed 12 Mb/s, Product QEMU USB MSD Device 0.6, Port 6.5, Speed 12 Mb/s, Product QEMU USB MSD Device 0.7, Port 6.6, Speed 12 Mb/s, Product QEMU USB MSD Device 0.8, Port 6.7, Speed 12 Mb/s, Product QEMU USB MSD Device 0.9, Port 6.8, Speed 12 Mb/s, Product QEMU USB Hub Device 0.10, Port 6.8.1, Speed 12 Mb/s, Product QEMU USB MSD Device 0.11, Port 6.8.2, Speed 12 Mb/s, Product QEMU USB MSD Device 0.12, Port 6.8.3, Speed 12 Mb/s, Product QEMU USB MSD Device 0.13, Port 6.8.4, Speed 12 Mb/s, Product QEMU USB MSD 3. In device manager check guest (Universal Serial Bus controllers) Actual results: only 6 usb device would be recognized Expected results: all 16 usb device will be recognized. Additional info: linux guest won't hit this issue. rhel6 host won't hit this issue
Patch posted.
Reproduce with qemu-kvm-0.12.1.2-2.404.el6.x86_64 Steps to Reproduce: 1. Boot win2012 guest: #cat cli-uhci-ehci.sh /usr/libexec/qemu-kvm -M pc -cpu SandyBridge -enable-kvm -m 4G -smp 4,sockets=2,cores=2,threads=1 -name usb-test -rtc base=localtime,clock=host,driftfix=slew -drive file=/home/win2012-64-virtio.qcow2,if=none,id=drive-system-disk,format=qcow2,cache=none,aio=native,werror=stop,rerror=stop -device ide-drive,bus=ide.0,unit=0,drive=drive-system-disk,id=system-disk,bootindex=1 -qmp tcp:0:4444,server,nowait -k en-us -boot menu=on -vnc :1 -spice disable-ticketing,port=5931 -vga qxl -monitor stdio \ -readconfig /home/ich9-ehci-uhci.cfg \ -drive file=/home/disk/disk1.qcow2,if=none,id=drive-usb-0-1,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-1,id=usb-0-1,removable=on \ -drive file=/home/disk/disk2.qcow2,if=none,id=drive-usb-0-2,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-2,id=usb-0-2,removable=on \ -drive file=/home/disk/disk3.qcow2,if=none,id=drive-usb-0-3,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-3,id=usb-0-3,removable=on \ -drive file=/home/disk/disk4.qcow2,if=none,id=drive-usb-0-4,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-4,id=usb-0-4,removable=on \ -drive file=/home/disk/disk5.qcow2,if=none,id=drive-usb-0-5,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-5,id=usb-0-5,removable=on \ -drive file=/home/disk/disk6.qcow2,if=none,id=drive-usb-0-6,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-6,id=usb-0-6,removable=on \ -drive file=/home/disk/disk7.qcow2,if=none,id=drive-usb-0-7,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-7,id=usb-0-7,removable=on \ -drive file=/home/disk/disk8.qcow2,if=none,id=drive-usb-0-8,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-8,id=usb-0-8,removable=on \ -drive file=/home/disk/disk9.qcow2,if=none,id=drive-usb-0-9,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-9,id=usb-0-9,removable=on \ -drive file=/home/disk/disk10.qcow2,if=none,id=drive-usb-0-10,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-10,id=usb-0-10,removable=on \ -drive file=/home/disk/disk11.qcow2,if=none,id=drive-usb-0-11,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-11,id=usb-0-11,removable=on \ -drive file=/home/disk/disk12.qcow2,if=none,id=drive-usb-0-12,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-12,id=usb-0-12,removable=on \ -drive file=/home/disk/disk13.qcow2,if=none,id=drive-usb-0-13,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-13,id=usb-0-13,removable=on \ -drive file=/home/disk/disk14.qcow2,if=none,id=drive-usb-0-14,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-14,id=usb-0-14,removable=on \ -drive file=/home/disk/disk15.qcow2,if=none,id=drive-usb-0-15,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-15,id=usb-0-15,removable=on \ -drive file=/home/disk/disk16.qcow2,if=none,id=drive-usb-0-16,media=disk,format=qcow2,cache=none,aio=native -device usb-storage,drive=drive-usb-0-16,id=usb-0-16,removable=on # cat ich9-ehci-uhci.cfg [device "ehci"] driver = "ich9-usb-ehci1" addr = "1d.7" multifunction = "on" [device "uhci-1"] driver = "ich9-usb-uhci1" addr = "1d.0" multifunction = "on" masterbus = "ehci.0" firstport = "0" [device "uhci-2"] driver = "ich9-usb-uhci2" addr = "1d.1" multifunction = "on" masterbus = "ehci.0" firstport = "2" [device "uhci-3"] driver = "ich9-usb-uhci3" addr = "1d.2" multifunction = "on" masterbus = "ehci.0" firstport = "4" 2. (qemu) info usb Device 0.5, Port 1, Speed 480 Mb/s, Product QEMU USB MSD Device 0.2, Port 2, Speed 480 Mb/s, Product QEMU USB MSD Device 0.3, Port 3, Speed 480 Mb/s, Product QEMU USB MSD Device 0.1, Port 4, Speed 480 Mb/s, Product QEMU USB MSD Device 0.4, Port 5, Speed 480 Mb/s, Product QEMU USB MSD Device 0.1, Port 6, Speed 12 Mb/s, Product QEMU USB Hub Device 0.2, Port 6.1, Speed 12 Mb/s, Product QEMU USB MSD Device 0.3, Port 6.2, Speed 12 Mb/s, Product QEMU USB MSD Device 0.4, Port 6.3, Speed 12 Mb/s, Product QEMU USB MSD Device 0.5, Port 6.4, Speed 12 Mb/s, Product QEMU USB MSD Device 0.6, Port 6.5, Speed 12 Mb/s, Product QEMU USB MSD Device 0.7, Port 6.6, Speed 12 Mb/s, Product QEMU USB MSD Device 0.8, Port 6.7, Speed 12 Mb/s, Product QEMU USB MSD Device 0.9, Port 6.8, Speed 12 Mb/s, Product QEMU USB Hub Device 0.10, Port 6.8.1, Speed 12 Mb/s, Product QEMU USB MSD Device 0.11, Port 6.8.2, Speed 12 Mb/s, Product QEMU USB MSD Device 0.12, Port 6.8.3, Speed 12 Mb/s, Product QEMU USB MSD Device 0.13, Port 6.8.4, Speed 12 Mb/s, Product QEMU USB MSD 3. In device manager check guest (Universal Serial Bus controllers) Actual results: only 6 usb device would be recognized Verify this issue with qemu-kvm-0.12.1.2-2.406.el6.x86_64 Actual results: All usb devices are recognized Based on above information, this issue has been fixed.
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. http://rhn.redhat.com/errata/RHSA-2013-1553.html