Bug 655280

Summary: libvirt does not support vendor/product based USB device passthrough with QEMU
Product: [Fedora] Fedora Reporter: Frank Casper <frankcasper>
Component: libvirtAssignee: Libvirt Maintainers <libvirt-maint>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: low    
Version: 14CC: aquini, berrange, clalance, crobinso, fnb.ml, itamar, jforbes, kayvansylvan, veillard, 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: 2012-01-24 21:58:20 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Frank Casper 2010-11-20 04:50:57 UTC
Description of problem:
libvirt does not support vendor/product based USB device passthrough with QEMU

Version-Release number of selected component (if applicable): Fedora 14 64bit


How reproducible:

Windows XP SP2 Blue screens when trying to add an HP Personal USB backup drive
or Pinnacle USB MovieBox


Steps to Reproduce:
1. Attach Drive
2. usa_add device
3.
  
Actual results:
Blue Screen

Expected results:


Additional info:
I was told by Daniel Berrange <berrange> that this bug was fixed in a prior version of Fedora. I still have the problem in Fedora version 14.I emailed him about this but received no reply.

Comment 1 Frank Casper 2010-11-27 01:57:48 UTC
Let me say how much I appreciate the total lack of response to this issue.

Comment 2 Cole Robinson 2010-11-29 16:25:07 UTC
Please provide

- The exact steps you are taking to reproduce the issue
- The error message you are receiving (if any)
- /var/log/libvirt/qemu/$vmname.log
- virsh dumpxml $vmname

Comment 3 Kayvan Sylvan 2011-06-28 03:03:38 UTC
I have a windows XP guest (virsh dumpxml below).

The steps I am taking:

1) Start the guest with the iPhone plugged into the USB port.
2) Run iTunes in the guest, there is no iPhone showing up.
3) Go to the Device Manager and notice that the USB device is not connected to the guest.

<domain type='kvm' id='1'>
  <name>WinXP</name>
  <uuid>0a108da7-a517-a31b-2444-b08cc07cca15</uuid>
  <memory>4194304</memory>
  <currentMemory>4194304</currentMemory>
  <vcpu>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-0.14'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='localtime'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-kvm</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/vg_virtual/ibmlaptop'/>
      <target dev='hda' bus='ide'/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:8a:d1:29'/>
      <source network='default'/>
      <target dev='vnet0'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/3'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/3'>
      <source path='/dev/pts/3'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes'/>
    <sound model='ich6'>
      <alias name='sound0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
      <model type='vga' vram='9216' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x05ac'/>
        <product id='0x1297'/>
        <address bus='1' device='4'/>
      </source>
      <alias name='hostdev0'/>
    </hostdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='dynamic' model='selinux'>
    <label>system_u:system_r:svirt_t:s0:c154,c991</label>
    <imagelabel>system_u:object_r:svirt_image_t:s0:c154,c991</imagelabel>
  </seclabel>
</domain>


In /var/log/libvirt/qemu/WinXP.log:

2011-06-27 15:28:51.729: starting up
LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -S -M pc-0.14 -enable-kvm -m 4096 -smp 2,sockets=2,cores=1,threads=1 -name WinXP -uuid 0a108da7-a517-a31b-2444-b08cc07cca15 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/WinXP.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -boot c -drive file=/dev/vg_virtual/ibmlaptop,if=none,id=drive-ide0-0-0,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -netdev tap,fd=21,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:8a:d1:29,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -device usb-tablet,id=input0 -vnc 127.0.0.1:0 -vga std -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device usb-host,hostbus=1,hostaddr=4,id=hostdev0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
char device redirected to /dev/pts/1
husb: open device 1.4
husb: config #1 need -1
husb: 1 interfaces claimed for configuration 1
husb: grabbed usb device 1.4
husb: open device 1.4
husb: config #1 need -1
husb: 1 interfaces claimed for configuration 1
husb: grabbed usb device 1.4
husb: open device 1.4
[... the last 4 lines keep getting repeated ...]

The iPhone (USB device 1.4) is plugged in and none of its components are mounted by the host device.

In /var/log/messages, I see:

Jun 27 19:58:12 heidegger setroubleshoot: SELinux is preventing /usr/sbin/usbmuxd from read access on the chr_file /dev/bus/usb/001/004. For complete SELinux messages. run sealert -l a95476b2-ff82-447c-8875-880eea17c8e6

The virt related SELinux booleans:

# getsebool -a | grep virt
virt_use_comm --> off
virt_use_fusefs --> off
virt_use_nfs --> off
virt_use_samba --> off
virt_use_sysfs --> off
virt_use_usb --> on
virt_use_xserver --> off

And the related device file info:

# ls -ltZ /dev/bus/usb/001
crw-rw-r--+ qemu qemu system_u:object_r:svirt_image_t:s0:c154,c991 004
crw-rw-r--. root root system_u:object_r:usb_device_t:s0 001

Is there anything else I can provide to facilitate getting USB pass-through to the libvirt/qemu/KVM guests working?

Thanks!

Comment 4 Fedora Admin XMLRPC Client 2011-09-22 17:57:40 UTC
This package has changed ownership in the Fedora Package Database.  Reassigning to the new owner of this component.

Comment 5 Fedora Admin XMLRPC Client 2011-09-22 18:01:06 UTC
This package has changed ownership in the Fedora Package Database.  Reassigning to the new owner of this component.

Comment 6 Fedora Admin XMLRPC Client 2011-11-30 19:57:29 UTC
This package has changed ownership in the Fedora Package Database.  Reassigning to the new owner of this component.

Comment 7 Fedora Admin XMLRPC Client 2011-11-30 19:58:47 UTC
This package has changed ownership in the Fedora Package Database.  Reassigning to the new owner of this component.

Comment 8 Fedora Admin XMLRPC Client 2011-11-30 20:03:43 UTC
This package has changed ownership in the Fedora Package Database.  Reassigning to the new owner of this component.

Comment 9 Fedora Admin XMLRPC Client 2011-11-30 20:04:18 UTC
This package has changed ownership in the Fedora Package Database.  Reassigning to the new owner of this component.

Comment 10 Cole Robinson 2012-01-24 21:58:20 UTC
This is definitely fixed in at least f16. Closing since f14 is EOL