Bug 1002888

Summary: usb hub doesn't work properly (win2012 sees downstream port #1 only)
Product: Red Hat Enterprise Linux 6 Reporter: zhonglinzhang <zhzhang>
Component: qemu-kvmAssignee: Gerd Hoffmann <kraxel>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.5CC: acathrow, bsarathy, juzhang, kraxel, michen, mkenneth, qzhang, virt-maint, xfu, xuhan
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: qemu-kvm-0.12.1.2-2.405.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-11-21 07:12:33 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:
Embargoed:

Description zhonglinzhang 2013-08-30 07:25:34 UTC
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

Comment 4 Gerd Hoffmann 2013-08-30 09:40:39 UTC
Patch posted.

Comment 7 zhonglinzhang 2013-09-27 02:03:54 UTC
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.

Comment 9 errata-xmlrpc 2013-11-21 07:12:33 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.

http://rhn.redhat.com/errata/RHSA-2013-1553.html