[vfio-users] Passthrough USB PCI Controller

Jayme Howard g.prime at gmail.com
Tue Oct 25 14:30:52 UTC 2016

I'm doing exactly this with no significant problem.  The way I handle it is
that I've got a script that binds the specific card to vfio-pci at runtime,
and I call that as a part of my startup script for the VM.


modprobe vfio-pci

for dev in "$@"; do
        vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
        device=$(cat /sys/bus/pci/devices/$dev/device)
        if [ -e /sys/bus/pci/devices/$dev/driver ]; then
                echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
        echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id

Then I just add "-device vfio-pci,host=<address>" to the args to qemu.
Works like a charm.  The script is called with the format "0000:06:00.0",
the args to qemu are "06:00.0".  Your address may vary, of course.

On Tue, Oct 25, 2016 at 6:11 AM, Andrei Grigore <andrei.grg at gmail.com>

> Hi,
> Does anyone know of an easy way to pass through a USB PCI controller in
> QEMU w/o libvirt? Since libvirt automatically binds the controller to VFIO,
> without it I get VFIO not found error messages.
> I am getting slightly better performance with a QEMU script rather than
> using virt-manager. I cannot bind them on boot since I have the same id for
> all USBs.
> Thanks!
> _______________________________________________
> vfio-users mailing list
> vfio-users at redhat.com
> https://www.redhat.com/mailman/listinfo/vfio-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/vfio-users/attachments/20161025/51fcdc96/attachment.htm>

More information about the vfio-users mailing list