Bug 1253522

Summary: fail to passthrough USB3.0 drives to windows guests with xHCI controller under pc-i440fx-1.4
Product: [Fedora] Fedora Reporter: Louis van Dyk <louis>
Component: qemuAssignee: Fedora Virtualization Maintainers <virt-maint>
Status: CLOSED WORKSFORME QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: 22CC: amit.shah, berrange, cfergeau, clalancette, crobinso, dwmw2, ehabkost, extras-orphan, itamar, louis, markmc, pbonzini, quintela, rjones, virt-maint
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-05-02 20:29:11 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 Louis van Dyk 2015-08-14 01:38:09 UTC
Description of problem:
1.  Using Virt Manager set the "Controller USB" item to Model: USB3.  When inserting a USB Drive, Virt-Manager automatically redirects it to the host as can be confirmed under "Virtual Machine / Redirect USB Device".
a) Windows 8.1 detects the USB controller and loads the driver (Renesas USB 3.0 eXtensible Host Controller)
- Inserting a USB 3.0 drive in a USB 3.0 port results in error: Unknown USB Device (Invalid Device Descriptor)
- Inserting a USB 3.0 drive in a USB 2.0 port results in error: Unknown USB Device (Invalid Device Descriptor)
b) Windows 7 places the USB Controller under "Other Devices".  There appears to be no driver for this.
- Both USB 3.0 and 2.0 ports don't respond when a drive is connected.

2.  Using Virt Manager set the "Controller USB" item to Model: USB2  When inserting a USB Drive, Virt-Manager automatically redirects it to the host as can be confirmed under "Virtual Machine / Redirect USB Device".
a) Windows 8.1 detects the USB controller and loads the driver (Intel(R) ICH9 Family USB2 Enhanced Host Controller)
- Inserting a USB 3.0 drive in a USB 3.0 port results in error: Unknown USB Device (Invalid Device Descriptor)
- Inserting a USB 3.0 drive in a USB 2.0 port succeeds.  The drive is listed under "Disk Drives" in Device Manager, and is accessible through Windows Explorer.
b) Windows 7 detects the USB controller and loads the driver (Intel(R) ICH9 Family USB2 Enhanced Host Controller)
- Inserting a USB 3.0 drive in a USB 3.0 port results in error: Unknown Device, and a pop-up stating that "Device Driver software was not successfully installed".
- Inserting a USB 3.0 drive in a USB 2.0 port succeeds.  The drive is listed under "Disk Drives" in Device Manager, and is accessible through Windows Explorer.



Version-Release number of selected component (if applicable):
libvirt-daemon-kvm-1.2.13.1-2.fc22.x86_64
libvirt-daemon-qemu-1.2.13.1-2.fc22.x86_64
qemu-2.3.0-6.fc22.x86_64
qemu-common-2.3.0-6.fc22.x86_64
qemu-guest-agent-2.3.0-6.fc22.x86_64
qemu-img-2.3.0-6.fc22.x86_64
qemu-kvm-2.3.0-6.fc22.x86_64
kernel-4.1.4-200.fc22.x86_64


How reproducible:
Always, as per the steps in "Description".  It occurs on different hosts running Fedora 22 x86_64 with independent guest installations.


Steps to Reproduce:
1. Set USB Controller to USB3 or USB2 in Virt-Manager.
2. Start the Virtual Machine
3. Insert USB drive


Actual results:
As in description


Expected results:
The drive should be mounted and accessible in the guest when using the USB3 controller and ports.


Additional info:
All the drivers that would install on the "virtio-win-0.1.105.iso" image have been installed, as well as vdagent 0.7.3.
All guest "windows update" patches have been installed.

Comment 1 Cole Robinson 2015-08-29 23:45:12 UTC
You mention pc-i440fx-1.4 explicitly in the subject, but that's quite an old machine type for f22 qemu. Have you tried switching to the latest machine type and seeing if it makes any difference? Newer machine types usually come with many bug fixes

Comment 2 Louis van Dyk 2015-09-08 12:10:23 UTC
Apologies for my late reply.

When I created a new VM, the only machine offered was i440FX. On my home PC, on which I did the bulk of the testing, it still was set to the -1.4 version, but on my laptop (a later VM) it is set to pc-i440fx-2.3.  Both hosts are running Fedora 22. Yesterday, I changed the version to 2.3 on my home machine.  The same issue occurred on the USB 3 ports. 

However, when I installed the UEFI component, which I discovered completely by accident, it brought with it a Q35 chipset, which I had never heard of before.

I created a new VM, since it seems I cannot just change the chipset value, and using the same hard disk, created a machine with the Q35 chipset.  It warned me that this chipset had not been well tested, but I proceeded.  I am very happy to report that USB 3 worked perfectly with that chipset!!


*** May I then ask the QEMU maintainers, PLEASE could you either fix the 440FX chipset with USB 3, or else, by default, package the Q35 chipset WITH the standard QEMU installation? ***

Comment 3 Cole Robinson 2016-05-02 20:29:11 UTC
I suspect this was just due to some xhci quirk associated with the old pc-1.4 machine type (vs a more modern i440fx machine type like pc-2.3) which isn't readily fixable. A VM created with default i440fx setup+usb3 works with windows for me on f24 at least