Thanks Alex, for your kind and detailed response: please keep up with the good work!

I'm interested in learning more about this and I have access to Quadro 4000 and 5000 cards, so please tell me if I can help with testing. I do not mind compiling from sources or doing some debug, but I have almost zero practical knowledge on GPU cards so I'll need some pointers :)

Best,

Mario


On 20 June 2013 23:19, Alex Williamson <alex.williamson@redhat.com> wrote:
On Thu, 2013-06-20 at 09:30 +0200, Mario Ceresa wrote:
> Dear all,
> does anybody know if it is currently possible to do GPU passthrough in kvm?
> I have access to a dual Quadro 4000 setup and I would like to pass the
> second one to kvm for use in a VM.
>
> I read a lot on internet and it seems feasible [1, 2, 3] and there is even
> a reported success case [5].
>
> However when I start the VM the host reboots with PCIe error 928:
> Completion timeout.
>
> My current setup is:
>
> * Fedora 18 with 3.9.4-200 x86_64
> * dmesg | grep -e DMAR -e IOMMU shows that they are both enabled
> * nvidia driver installed from rpmfusion
> * I use vfio assignment as per [4]

GPUs are not well supported yet and you're probably not going to get
very far unless you're willing to compile a kernel and qemu and use qemu
from the commandline instead of through libvirt.  Some people have luck
assigning a GPU as a secondary graphics device to the emulated video,
others do not.  Sometimes I suspect this has more to do with addresses
assigned to the physical device possibly matching the virtual device...
so it really is luck.

I've posted branches of qemu and kernel that seem to work well for
several people (this is what was pointed to in the Arch Linux thread you
footnoted).  That code attempts to use the assigned GPU as the primary
graphics head for the guest.  I have one Quadro card on hand and it
never works as well as the GeForce cards, YMMV.  Graphics cards have all
sorts of interesting backdoors to get to PCI config space and I suspect
the Quadro cards are not as well supported by the Nouveau project, which
we've used for reverse engineered documentation of some of these quirks.

There's still some work to do before that code can be posted upstream,
in particular I've seen cases where a PCI bus won't come back from reset
without resetting the host system.  We need to make it more stable
before pushing to get it upstream.  Thanks,

Alex