[vfio-users] Passthrough USB PCI Controller

Andrei Grigore andrei.grg at gmail.com
Wed Oct 26 06:40:04 UTC 2016


I've tried the script solution and it works perfectly. Thanks!!

I will also try to test the kernel module and let you know how it works.

On Oct 25, 2016 20:35, "Jayme Howard" <g.prime at gmail.com> wrote:

> I appreciate the patch, but it's not a great one for me to test,
> personally.  My issue wasn't actually that I have two identical
> controllers.  Rather, I have one specific controller that I sometimes want
> to use on the host, so I don't want to assign it to the guest at boot of
> the host.  That's why I actually use the script.  On a quick glance though
> the patch looked solid to me, though I'm not a kernel dev.
>
> On Tue, Oct 25, 2016 at 1:32 PM, Laszlo Ersek <lersek at redhat.com> wrote:
>
>> On 10/25/16 16:30, Jayme Howard wrote:
>> > 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.
>> >
>> > /usr/local/bin/vfio-bind
>> > #!/bin/bash
>> >
>> > 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
>> >         fi
>> >         echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
>> > done
>> >
>> > 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.
>>
>> I posted a kernel patch for this, and CC'd you guys on it. If you could
>> test it, that would be great.
>>
>> The intended use is that you keep your current pci-stub.ids=... options,
>> but add pci-stub.except=0000:03:00.0,... for those devices that you want
>> pci-stub to ignore. This will cause 0000:03:00.0 to be bound by the
>> appropriate host driver, while the rest of the ID- and class-matched
>> devices will be claimed by pci-stub (and therefore they'll be eligible
>> for assignment, assuming all other conditions are met).
>>
>> If I misunderstood the original problem (~ having two identical PCI USB
>> controllers and intending to assign only one of them), then my bad.
>>
>> Thanks
>> Laszlo
>>
>>
>> > On Tue, Oct 25, 2016 at 6:11 AM, Andrei Grigore <andrei.grg at gmail.com
>> > <mailto:andrei.grg at gmail.com>> wrote:
>> >
>> >     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 <mailto:vfio-users at redhat.com>
>> >     https://www.redhat.com/mailman/listinfo/vfio-users
>> >     <https://www.redhat.com/mailman/listinfo/vfio-users>
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > 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/20161026/21223ac4/attachment.htm>


More information about the vfio-users mailing list