[CentOS-virt] Issues with exposing USB serial dongle to guest VM

Mon Apr 24 22:42:53 UTC 2017
Philip Prindeville <philipp_subx at redfish-solutions.com>

Hi.

I have Centos 7 (updated) running as my host, and I’m using Qemu and KVM, version 2.0.0 and 2.6.0.

I have a Trendnet TU-S9 USB serial dongle attached to the host, which uses the Prolific 2303 chipset.

I blacklisted the pl2303 driver so the host doesn’t grab the device, and want to expose it to the guest.

On the client, I see 2 USB hubs (3.0 and 2.0), and I see 2 USB endpoints (even though 3 are configured).  So the USB CF card readers are visible, but not the USB dongle, even though it’s plugged in.

Here’s what I see on the host:

[philipp at kvm1 ~]$ ps -f -p13468
UID        PID  PPID  C STIME TTY          TIME CMD
qemu     13468     1  2 14:51 ?        00:02:39 /usr/libexec/qemu-kvm -name guest=ubuntu16.04-2,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-2-ubuntu16.04-2/master-key.aes -machine pc-i440fx-rhel7.3.0,accel=kvm,usb=off -cpu Broadwell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,+smx,+est,+tm2,+xtpr,+pdcm,+dca,+osxsave,+f16c,+rdrand,+arat,+tsc_adjust,+xsaveopt,+pdpe1gb,+abm,+rtm,+hle -m 8192 -realtime mlock=off -smp 8,maxcpus=12,sockets=12,cores=1,threads=1 -uuid a9590ac8-e532-4dce-b6ef-d3b35c0db865 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-2-ubuntu16.04-2/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device nec-usb-xhci,id=usb,bus=pci.0,addr=0x5 -device ich9-usb-ehci1,id=usb1,bus=pci.0,addr=0xa.0x7 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -drive file=/var/lib/libvirt/images/ubuntu16.04-2.img,format=raw,if=none,id=drive-virtio-disk0 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive if=none,id=drive-ide0-0-0,readonly=on -device ide-cd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -spice port=5900,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,bus=pci.0,addr=0x2 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=1 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=2 -device usb-host,hostbus=3,hostaddr=13,id=hostdev1,bus=usb.0,port=3 -device usb-host,hostbus=3,hostaddr=12,id=hostdev2,bus=usb.0,port=4 -device usb-host,hostbus=3,hostaddr=15,id=hostdev3,bus=usb1.0,port=1 -device vfio-pci,host=07:10.0,id=hostdev0,bus=pci.0,addr=0x3 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -msg timestamp=on

[philipp at kvm1 ~]$ sudo lsof -p 13468 -n -P
COMMAND    PID USER   FD      TYPE             DEVICE     SIZE/OFF       NODE NAME
qemu-kvm 13468 qemu  cwd       DIR              253,0          242         64 /
qemu-kvm 13468 qemu  rtd       DIR              253,0          242         64 /
qemu-kvm 13468 qemu  txt       REG              253,0      8883768  100834619 /usr/libexec/qemu-kvm
qemu-kvm 13468 qemu  mem       REG              253,0        19984   34091991 /usr/lib64/sasl2/libplain.so.3.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        19984   34091988 /usr/lib64/sasl2/liblogin.so.3.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        57888   33916680 /usr/lib64/sasl2/libdigestmd5.so.3.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        24160   33916677 /usr/lib64/sasl2/libcrammd5.so.3.0.0
qemu-kvm 13468 qemu  mem       REG              253,0      1846280  100701718 /usr/lib64/libdb-5.3.so
qemu-kvm 13468 qemu  mem       REG              253,0        28200   33627120 /usr/lib64/sasl2/libsasldb.so.3.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        19952   33627117 /usr/lib64/sasl2/libanonymous.so.3.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        62184  100664409 /usr/lib64/libnss_files-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0        68192  100701681 /usr/lib64/libbz2.so.1.0.6
qemu-kvm 13468 qemu  mem       REG              253,0        99952  100701712 /usr/lib64/libelf-0.166.so
qemu-kvm 13468 qemu  mem       REG              253,0       398264  100701630 /usr/lib64/libpcre.so.1.2.0
qemu-kvm 13468 qemu  mem       REG              253,0        28360  100702508 /usr/lib64/libogg.so.0.8.0
qemu-kvm 13468 qemu  mem       REG              253,0       189256  100882393 /usr/lib64/libvorbis.so.0.4.6
qemu-kvm 13468 qemu  mem       REG              253,0      2944120  100882395 /usr/lib64/libvorbisenc.so.2.0.9
qemu-kvm 13468 qemu  mem       REG              253,0       285608  100882391 /usr/lib64/libFLAC.so.8.3.0
qemu-kvm 13468 qemu  mem       REG              253,0        48848  100960245 /usr/lib64/libgsm.so.1.0.12
qemu-kvm 13468 qemu  mem       REG              253,0       113584  100664401 /usr/lib64/libnsl-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0       157424  100701670 /usr/lib64/liblzma.so.5.2.2
qemu-kvm 13468 qemu  mem       REG              253,0        65648  101002376 /usr/lib64/libXi.so.6.1.0
qemu-kvm 13468 qemu  mem       REG              253,0        75848  101002374 /usr/lib64/libXext.so.6.4.0
qemu-kvm 13468 qemu  mem       REG              253,0        15512  100984172 /usr/lib64/libXau.so.6.0.0
qemu-kvm 13468 qemu  mem       REG              253,0       301576  100701829 /usr/lib64/libdw-0.166.so
qemu-kvm 13468 qemu  mem       REG              253,0       155744  100701646 /usr/lib64/libselinux.so.1
qemu-kvm 13468 qemu  mem       REG              253,0        15624  100701842 /usr/lib64/libgmodule-2.0.so.0.4600.2
qemu-kvm 13468 qemu  mem       REG              253,0        32304  100701834 /usr/lib64/libffi.so.6.0.1
qemu-kvm 13468 qemu  mem       REG              253,0        11384  100667805 /usr/lib64/libfreebl3.so
qemu-kvm 13468 qemu  mem       REG              253,0        23824  101229361 /usr/lib64/libasyncns.so.0.3.1
qemu-kvm 13468 qemu  mem       REG              253,0       378904  100960252 /usr/lib64/libsndfile.so.1.0.25
qemu-kvm 13468 qemu  mem       REG              253,0        42520  100702401 /usr/lib64/libwrap.so.0.7.6
qemu-kvm 13468 qemu  mem       REG              253,0        24104  101002378 /usr/lib64/libXtst.so.6.1.0
qemu-kvm 13468 qemu  mem       REG              253,0        32312  100826893 /usr/lib64/libSM.so.6.0.1
qemu-kvm 13468 qemu  mem       REG              253,0       100472  100826878 /usr/lib64/libICE.so.6.3.0
qemu-kvm 13468 qemu  mem       REG              253,0       141080  101002368 /usr/lib64/libxcb.so.1.1.0
qemu-kvm 13468 qemu  mem       REG              253,0      1318920  101002372 /usr/lib64/libX11.so.6.3.0
qemu-kvm 13468 qemu  mem       REG              253,0         6848  101002370 /usr/lib64/libX11-xcb.so.1.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        15688  100702424 /usr/lib64/libkeyutils.so.1.5
qemu-kvm 13468 qemu  mem       REG              253,0        62744  100667837 /usr/lib64/libkrb5support.so.0.1
qemu-kvm 13468 qemu  mem       REG              253,0        19384  100701739 /usr/lib64/libgpg-error.so.0.10.0
qemu-kvm 13468 qemu  mem       REG              253,0        48672  100984118 /usr/lib64/libunwind.so.8.0.1
qemu-kvm 13468 qemu  mem       REG              253,0       285296  100702506 /usr/lib64/libjpeg.so.62.1.0
qemu-kvm 13468 qemu  mem       REG              253,0       334904  100701844 /usr/lib64/libgobject-2.0.so.0.4600.2
qemu-kvm 13468 qemu  mem       REG              253,0      1595056  100701838 /usr/lib64/libgio-2.0.so.0.4600.2
qemu-kvm 13468 qemu  mem       REG              253,0        62688  100882399 /usr/lib64/libcelt051.so.0.0.0
qemu-kvm 13468 qemu  mem       REG              253,0       139008  100664438 /usr/lib64/libnl-3.so.200.23.0
qemu-kvm 13468 qemu  mem       REG              253,0       444832  100664446 /usr/lib64/libnl-route-3.so.200.23.0
qemu-kvm 13468 qemu  mem       REG              253,0       494440  100702458 /usr/lib64/libgmp.so.10.2.0
qemu-kvm 13468 qemu  mem       REG              253,0       160776  100702524 /usr/lib64/libhogweed.so.2.5
qemu-kvm 13468 qemu  mem       REG              253,0        82176  100702502 /usr/lib64/libtasn1.so.6.2.3
qemu-kvm 13468 qemu  mem       REG              253,0       465360  101027983 /usr/lib64/libtspi.so.1.2.0
qemu-kvm 13468 qemu  mem       REG              253,0       290864  100702407 /usr/lib64/libp11-kit.so.0.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        41080  100664395 /usr/lib64/libcrypt-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0       111080  100664419 /usr/lib64/libresolv-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0        20024  100701747 /usr/lib64/libcap.so.2.22
qemu-kvm 13468 qemu  mem       REG              253,0       304576  100701679 /usr/lib64/libdbus-1.so.3.7.4
qemu-kvm 13468 qemu  mem       REG              253,0       502608     375140 /usr/lib64/pulseaudio/libpulsecommon-6.0.so
qemu-kvm 13468 qemu  mem       REG              253,0        45456  100701728 /usr/lib64/libjson-c.so.2.0.1
qemu-kvm 13468 qemu  mem       REG              253,0       454008  100702586 /usr/lib64/libssl.so.1.0.1e
qemu-kvm 13468 qemu  mem       REG              253,0      2025760  100702584 /usr/lib64/libcrypto.so.1.0.1e
qemu-kvm 13468 qemu  mem       REG              253,0        19888  100701744 /usr/lib64/libattr.so.1.1.0
qemu-kvm 13468 qemu  mem       REG              253,0        15608  100702497 /usr/lib64/libboost_system-mt.so.1.53.0
qemu-kvm 13468 qemu  mem       REG              253,0        94320  100702518 /usr/lib64/libboost_thread-mt.so.1.53.0
qemu-kvm 13468 qemu  mem       REG              253,0       344280  100868642 /usr/lib64/libldap-2.4.so.2.10.3
qemu-kvm 13468 qemu  mem       REG              253,0        61872  100868640 /usr/lib64/liblber-2.4.so.2.10.3
qemu-kvm 13468 qemu  mem       REG              253,0        15848  100701657 /usr/lib64/libcom_err.so.2.1
qemu-kvm 13468 qemu  mem       REG              253,0       202568  100667824 /usr/lib64/libk5crypto.so.3.1
qemu-kvm 13468 qemu  mem       REG              253,0       959008  100667833 /usr/lib64/libkrb5.so.3.3
qemu-kvm 13468 qemu  mem       REG              253,0       324888  100667817 /usr/lib64/libgssapi_krb5.so.2.2
qemu-kvm 13468 qemu  mem       REG              253,0        19776  100664397 /usr/lib64/libdl-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0       251784  101017300 /usr/lib64/libnspr4.so
qemu-kvm 13468 qemu  mem       REG              253,0        20048  101017301 /usr/lib64/libplc4.so
qemu-kvm 13468 qemu  mem       REG              253,0        15744  101017302 /usr/lib64/libplds4.so
qemu-kvm 13468 qemu  mem       REG              253,0       186216  100706671 /usr/lib64/libnssutil3.so
qemu-kvm 13468 qemu  mem       REG              253,0      1236840  100702603 /usr/lib64/libnss3.so
qemu-kvm 13468 qemu  mem       REG              253,0       164040  100702605 /usr/lib64/libsmime3.so
qemu-kvm 13468 qemu  mem       REG              253,0       315080  101072314 /usr/lib64/libssl3.so
qemu-kvm 13468 qemu  mem       REG              253,0       208920  100701832 /usr/lib64/libidn.so.11.6.11
qemu-kvm 13468 qemu  mem       REG              253,0       534768  100667864 /usr/lib64/libgcrypt.so.11.8.2
qemu-kvm 13468 qemu  mem       REG              253,0      2118128  100664059 /usr/lib64/libc-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0       143944  100664417 /usr/lib64/libpthread-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0        88720  100663365 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
qemu-kvm 13468 qemu  mem       REG              253,0      1141928  100664399 /usr/lib64/libm-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0       999944  100667871 /usr/lib64/libstdc++.so.6.0.19
qemu-kvm 13468 qemu  mem       REG              253,0        44448  100664421 /usr/lib64/librt-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0         6944  100701846 /usr/lib64/libgthread-2.0.so.0.4600.2
qemu-kvm 13468 qemu  mem       REG              253,0       305168  100984122 /usr/lib64/libtcmalloc.so.4.2.6
qemu-kvm 13468 qemu  mem       REG              253,0        31904  100827014 /usr/lib64/libusbredirparser.so.1.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        99528  100826629 /usr/lib64/libusb-1.0.so.0.1.0
qemu-kvm 13468 qemu  mem       REG              253,0      1287896  100701840 /usr/lib64/libglib-2.0.so.0.4600.2
qemu-kvm 13468 qemu  mem       REG              253,0        49800  100702607 /usr/lib64/libcacard.so.0.0.0
qemu-kvm 13468 qemu  mem       REG              253,0      1230208  100749039 /usr/lib64/libspice-server.so.1.10.1
qemu-kvm 13468 qemu  mem       REG              253,0        80096  101153158 /usr/lib64/libibverbs.so.1.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        92032  101153164 /usr/lib64/librdmacm.so.1.0.0
qemu-kvm 13468 qemu  mem       REG              253,0       266680  100984135 /usr/lib64/libseccomp.so.2.3.1
qemu-kvm 13468 qemu  mem       REG              253,0        23800  100826840 /usr/lib64/libsnappy.so.1.1.4
qemu-kvm 13468 qemu  mem       REG              253,0       135112  100702462 /usr/lib64/liblzo2.so.2.0.0
qemu-kvm 13468 qemu  mem       REG              253,0      1292416  101027989 /usr/lib64/libgnutls.so.28.41.16
qemu-kvm 13468 qemu  mem       REG              253,0       201296  100702526 /usr/lib64/libnettle.so.4.7
qemu-kvm 13468 qemu  mem       REG              253,0       121296  100701724 /usr/lib64/libsasl2.so.3.0.0
qemu-kvm 13468 qemu  mem       REG              253,0       179296  100768842 /usr/lib64/libpng15.so.15.13.0
qemu-kvm 13468 qemu  mem       REG              253,0       320984  101017286 /usr/lib64/libpulse.so.0.18.0
qemu-kvm 13468 qemu  mem       REG              253,0      1033536  100826787 /usr/lib64/libasound.so.2.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        50712  100702422 /usr/lib64/libnuma.so.1
qemu-kvm 13468 qemu  mem       REG              253,0        14872  100664425 /usr/lib64/libutil-2.17.so
qemu-kvm 13468 qemu  mem       REG              253,0       698744  100826854 /usr/lib64/libpixman-1.so.0.34.0
qemu-kvm 13468 qemu  mem       REG              253,0       174088  100826406 /usr/lib64/libssh2.so.1.0.1
qemu-kvm 13468 qemu  mem       REG              253,0        20040  100706670 /usr/lib64/libuuid.so.1.3.0
qemu-kvm 13468 qemu  mem       REG              253,0        99304  100794835 /usr/lib64/libgfxdr.so.0.0.1
qemu-kvm 13468 qemu  mem       REG              253,0       115088  100794833 /usr/lib64/libgfrpc.so.0.0.1
qemu-kvm 13468 qemu  mem       REG              253,0       896344  100794837 /usr/lib64/libglusterfs.so.0.0.1
qemu-kvm 13468 qemu  mem       REG              253,0       150056  100826654 /usr/lib64/libgfapi.so.0.0.0
qemu-kvm 13468 qemu  mem       REG              253,0        37056  100701754 /usr/lib64/libacl.so.1.1.0
qemu-kvm 13468 qemu  mem       REG              253,0      5342808  100841989 /usr/lib64/librados.so.2.0.0
qemu-kvm 13468 qemu  mem       REG              253,0      5789632  100768762 /usr/lib64/librbd.so.1.0.0
qemu-kvm 13468 qemu  mem       REG              253,0       435120  100842007 /usr/lib64/libcurl.so.4.3.0
qemu-kvm 13468 qemu  mem       REG              253,0       125336   33843740 /usr/lib64/iscsi/libiscsi.so.2.0.10900
qemu-kvm 13468 qemu  mem       REG              253,0         6264  100702465 /usr/lib64/libaio.so.1.0.1
qemu-kvm 13468 qemu  mem       REG              253,0        90664  100701649 /usr/lib64/libz.so.1.2.7
qemu-kvm 13468 qemu  mem       REG              253,0       155464  100664052 /usr/lib64/ld-2.17.so
qemu-kvm 13468 qemu  mem       REG                0,9                    6936 anon_inode:[vfio-device] (stat: No such file or directory)
qemu-kvm 13468 qemu  mem       REG              253,0       162552  100706665 /usr/lib64/libsystemd.so.0.6.0
qemu-kvm 13468 qemu  mem       REG              253,0        83208  100706667 /usr/lib64/libudev.so.1.6.2
qemu-kvm 13468 qemu  DEL       REG                0,4                   37202 /dev/zero
qemu-kvm 13468 qemu  DEL       REG                0,4                   37201 /dev/zero
qemu-kvm 13468 qemu  mem       REG               0,18         4024      38290 /dev/shm/spice.13468
qemu-kvm 13468 qemu  DEL       REG                0,4                   38287 /dev/zero
qemu-kvm 13468 qemu    0u      CHR                1,3          0t0       1028 /dev/null
qemu-kvm 13468 qemu    1w     FIFO                0,8          0t0      45255 pipe
qemu-kvm 13468 qemu    2w     FIFO                0,8          0t0      45255 pipe
qemu-kvm 13468 qemu    3r      CHR                1,9          0t0       1033 /dev/urandom
qemu-kvm 13468 qemu    4u  a_inode                0,9            0       6936 [signalfd]
qemu-kvm 13468 qemu    5u  a_inode                0,9            0       6936 [eventpoll]
qemu-kvm 13468 qemu    6u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu    7u  a_inode                0,9            0       6936 [eventpoll]
qemu-kvm 13468 qemu    8u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu    9u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   10u     unix 0xffff88102b7c1000          0t0      38284 /var/lib/libvirt/qemu/domain-2-ubuntu16.04-2/monitor.sock
qemu-kvm 13468 qemu   11u      CHR                5,2          0t0       1158 /dev/ptmx
qemu-kvm 13468 qemu   12u      CHR             10,232          0t0      12724 /dev/kvm
qemu-kvm 13468 qemu   13u  a_inode                0,9            0       6936 kvm-vm
qemu-kvm 13468 qemu   14u     unix 0xffff88102b7c3c00          0t0      38288 socket
qemu-kvm 13468 qemu   15u     unix 0xffff88102b7c2800          0t0      38289 socket
qemu-kvm 13468 qemu   16u      REG               0,18         4024      38290 /dev/shm/spice.13468
qemu-kvm 13468 qemu   17u     IPv4              38293          0t0        TCP 127.0.0.1:5900 (LISTEN)
qemu-kvm 13468 qemu   18u      REG              253,1 171825168384 1074520646 /var/lib/libvirt/images/ubuntu16.04-2.img
qemu-kvm 13468 qemu   19u  a_inode                0,9            0       6936 kvm-vcpu
qemu-kvm 13468 qemu   20u  a_inode                0,9            0       6936 kvm-vcpu
qemu-kvm 13468 qemu   21u  a_inode                0,9            0       6936 kvm-vcpu
qemu-kvm 13468 qemu   22u  a_inode                0,9            0       6936 kvm-vcpu
qemu-kvm 13468 qemu   23u  a_inode                0,9            0       6936 kvm-vcpu
qemu-kvm 13468 qemu   24u  a_inode                0,9            0       6936 kvm-vcpu
qemu-kvm 13468 qemu   25u  a_inode                0,9            0       6936 kvm-vcpu
qemu-kvm 13468 qemu   26u  a_inode                0,9            0       6936 kvm-vcpu
qemu-kvm 13468 qemu   27u     unix 0xffff881026898000          0t0      40135 socket
qemu-kvm 13468 qemu   28u     unix 0xffff88102689f400          0t0      40136 socket
qemu-kvm 13468 qemu   29u  netlink                             0t0      40137 KOBJECT_UEVENT
qemu-kvm 13468 qemu   30r     FIFO                0,8          0t0      40138 pipe
qemu-kvm 13468 qemu   31w     FIFO                0,8          0t0      40138 pipe
qemu-kvm 13468 qemu   32r     FIFO                0,8          0t0      40139 pipe
qemu-kvm 13468 qemu   33w     FIFO                0,8          0t0      40139 pipe
qemu-kvm 13468 qemu   34u  a_inode                0,9            0       6936 [timerfd]
qemu-kvm 13468 qemu   35u      CHR              245,0          0t0      22111 /dev/vfio/30
qemu-kvm 13468 qemu   36u      CHR             10,196          0t0      11903 /dev/vfio/vfio
qemu-kvm 13468 qemu   37u  a_inode                0,9            0       6936 kvm-vfio
qemu-kvm 13468 qemu   38u  a_inode                0,9            0       6936 [vfio-device]
qemu-kvm 13468 qemu   39u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   40u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   41u     unix 0xffff88102de37000          0t0      40140 /var/lib/libvirt/qemu/domain-2-ubuntu16.04-2/monitor.sock
qemu-kvm 13468 qemu   42u      CHR            189,268          0t0      11444 /dev/bus/usb/003/013
qemu-kvm 13468 qemu   43u      CHR            189,267          0t0      11441 /dev/bus/usb/003/012
qemu-kvm 13468 qemu   44u     unix 0xffff88102d675c00          0t0      47483 socket
qemu-kvm 13468 qemu   45u     unix 0xffff88102689a400          0t0      40142 socket
qemu-kvm 13468 qemu   46u     unix 0xffff88102d674400          0t0      47488 socket
qemu-kvm 13468 qemu   47u     unix 0xffff880e32a7a400          0t0      44457 socket
qemu-kvm 13468 qemu   48u     unix 0xffff88102b200c00          0t0      45264 socket
qemu-kvm 13468 qemu   49u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   50u     unix 0xffff8810392a1000          0t0      22123 socket
qemu-kvm 13468 qemu   51u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   52u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   53u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   54u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   55u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   56u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   57u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   58u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   59u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   60u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   61u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   62u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   63u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   64u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   65u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   66u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   67u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   68u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   69u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   70u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   71u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   72u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   73u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   74u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   75u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   76u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   77u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   78u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   79u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   80u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   81u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   82u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   83u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   84u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   85u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   86u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   87u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   88u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   89u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   90u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   91u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   92u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   93u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   94u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   95u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   96u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   97u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   98u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu   99u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  100u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  101u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  102u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  103u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  104u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  105u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  106u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  107u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  108u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  109u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  110u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  111u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  112u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  113u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  114u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  115u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  116u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  117u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  118u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  119u  a_inode                0,9            0       6936 [eventfd]
qemu-kvm 13468 qemu  120u  a_inode                0,9            0       6936 [eventfd]
[philipp at kvm1 ~]$ lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 003: ID 1058:25da Western Digital Technologies, Inc. 
Bus 004 Device 002: ID 2109:8110 VIA Labs, Inc. Hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 007: ID 0557:2419 ATEN International Co., Ltd 
Bus 003 Device 004: ID 0557:7000 ATEN International Co., Ltd Hub
Bus 003 Device 015: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 003 Device 013: ID 05dc:ba04 Lexar Media, Inc. 
Bus 003 Device 012: ID 0bda:0309 Realtek Semiconductor Corp. 
Bus 003 Device 009: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 003 Device 006: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 003 Device 011: ID 045e:000b Microsoft Corp. Natural Keyboard Elite
Bus 003 Device 010: ID 046d:c016 Logitech, Inc. Optical Wheel Mouse
Bus 003 Device 008: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 003 Device 005: ID 0451:2046 Texas Instruments, Inc. TUSB2046 Hub
Bus 003 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 003 Device 002: ID 2109:2811 VIA Labs, Inc. Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[philipp at kvm1 ~]$ sudo cat /etc/libvirt/qemu/ubuntu16.04-2.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit ubuntu16.04-2
or other application using the libvirt API.
-->

<domain type='kvm'>
  <name>ubuntu16.04-2</name>
  <uuid>a9590ac8-e532-4dce-b6ef-d3b35c0db865</uuid>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <vcpu placement='static' current='8'>12</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.3.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-model'>
    <model fallback='allow'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/ubuntu16.04-2.img'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </controller>
    <controller type='usb' index='0' model='nec-xhci'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    <controller type='usb' index='1' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x7'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:fc:0f:5e'/>
      <source network='hostdev-net0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='spice' autoport='yes'>
      <listen type='address'/>
      <image compression='off'/>
    </graphics>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x05dc'/>
        <product id='0xba04'/>
      </source>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x0bda'/>
        <product id='0x0309'/>
      </source>
      <address type='usb' bus='0' port='4'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x067b'/>
        <product id='0x2303'/>
      </source>
      <address type='usb' bus='1' port='1'/>
    </hostdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='1'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </memballoon>
  </devices>
</domain>
[philipp at kvm1 ~]$ 


and here’s what I see on the guest:

philipp at ubuntu16:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0bda:0309 Realtek Semiconductor Corp. 
Bus 001 Device 002: ID 05dc:ba04 Lexar Media, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
philipp at ubuntu16:~$


I’m not sure what I’m missing.

How do I verify that the parameters in the .xml domain definition are correct, and that they’re resulting in the correct args being passed to qemu-kvm when it gets exec’d?

And why do the args:

-device usb-host,hostbus=3,hostaddr=15,id=hostdev3,bus=usb1.0,port=1

seem to be silently ignored?  I understand that USB is inherently pluggable and hence the device may or may not be present at the time that Qemu gets kicked off…

Looking at https://github.com/esminc/qemu/blob/master/Source/device-qemu/android/android-goldfish-2.6.29/Documentation/usb/usb-serial.txt it claims that the PL2303 driver is supported.

What am I missing?  I need to access serial ports from several of my guest VMs, and my host doesn’t have built-in serial ports to USB dongles are my only option.

Thanks,

-Philip