Bug 1025743

Summary: USB tablet device does't work when USB bus is defined as EHCI (instead of the default one)
Product: Red Hat Enterprise Linux 6 Reporter: Juan Rodriguez <jrodrigu>
Component: qemu-kvmAssignee: Virtualization Maintenance <virt-maint>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: high    
Version: 6.4CC: acathrow, aglotov, bsarathy, chayang, juzhang, kraxel, michen, mkenneth, qzhang, sluo, virt-maint
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-11-11 09:01:43 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:
Attachments:
Description Flags
libvirt ehci setup none

Description Juan Rodriguez 2013-11-01 12:26:57 UTC
Description of problem:

When you modify xml VM definition file and introduce a USB EHCI bus definition like http://pastebin.gsslab.fab.redhat.com/mypaste/W7jd/, USB tablet doesn't work and it's not possible to start the VM.


Version-Release number of selected component (if applicable):
qemu-kvm version package: 0.12.1.2-2.255.el6_4.9
libvirt-0.10.2-18.el6_4.14
kernel version 2.6.32-358.23.2.el6.x86_64

How reproducible:
Create passthrough setup similar to the one mentioned in the pastebin link

Actual results:
Table device fails to work with error when this passthrough is defined

Expected results:
It should work

Additional info:
Logs are attached in attachments

Comment 1 Sibiao Luo 2013-11-11 03:32:58 UTC
Reproduce this issue on qemu-kvm-0.12.1.2-2.415.el6.x86_64 that passthrough usb tablet device doesn't work well with EHCI controller. If used uhci controller to test that worked well. 
BTW, i don't think there is bugging here, as QEMU has gave speed mismatch warning message for your using wrong controller, this suggestion that you should use the 1.1 UHCI controller for the low speed device i think.

host info:
# uname -r && rpm -q qemu-kvm
2.6.32-425.el6.x86_64
qemu-kvm-0.12.1.2-2.415.el6.x86_64

Steps:
1.insert a usb mouse to host, get the vendorid and productid info.
# lsusb | grep USB
Bus 002 Device 003: ID 046d:c06a Logitech, Inc. USB Optical Mouse
2.passthroug the usb mouse to guest with EHCI controller.
e.g:...-device usb-ehci,id=ehci -device usb-host,vendorid=046d,productid=c06a,port=1

Results:
after step 2, there are many speed mismatch warning message prompt in HMP monitor, and the passthrough usb mouse can't work in guest.
(qemu) info usb
  Device 0.0, Port 1, Speed 1.5 Mb/s, Product USB Host Device
(qemu) c
husb: open device 2.3
husb: grabbed usb device 2.3
Warning: speed mismatch trying to attach usb device USB Optical Mouse to bus ehci.0

(qemu) husb: open device 2.3
husb: grabbed usb device 2.3
qemu-kvm: Warning: speed mismatch trying to attach usb device USB Optical Mouse to bus ehci.0

husb: open device 2.3
husb: grabbed usb device 2.3
qemu-kvm: Warning: speed mismatch trying to attach usb device USB Optical Mouse to bus ehci.0


(qemu) info usb
  Device 0.0, Port 1, Speed 1.5 Mb/s, Product USB Optical Mouse

Base on above, i make qa_ack+ this issue first, please correct me if any mistake.

Best Regards,
sluo

Comment 2 Sibiao Luo 2013-11-11 03:49:27 UTC
(In reply to Sibiao Luo from comment #1)
> BTW, i don't think there is bugging here, as QEMU has gave speed mismatch
> warning message for your using wrong controller, this suggestion that you
> should use the 1.1 UHCI controller for the low speed device i think.
> 
According above, i should remove the qa_ack+ first, this maybe not a bug form QE side. Gerd Hoffmann, could you help check this issue, thanks in advance.

Best Regards,
sluo

Comment 3 Gerd Hoffmann 2013-11-11 09:01:06 UTC
Created attachment 822323 [details]
libvirt ehci setup

Tablet is a usb1.1 device and doesn't work with ehci (usb 2.0 controller).

If you need a usb bus which can handle both 1.1 and 2.0 devices you'll need
a bunch of uhci companion controllers for the ehci controller.  The attachment
shows how to configure this in libvirt.