[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-discuss] MSI-X based DMA Engine Passthrough Support

From: Forrest Franks
Subject: [Qemu-discuss] MSI-X based DMA Engine Passthrough Support
Date: Wed, 30 Oct 2013 15:21:04 +0000

I’m working with a Fedora host running Qemu 1.6.0 and Libvirt 1.1.2.  I am attempting to pass the DMA engines from my Sandybridge based system to a FreeBSD guest.  I’ve had success in making the devices visible to the FreeBSD guest, but when actually attempting to use the DMA engines, I am not receiving any DMA complete interrupts.  The driver code in the FreeBSD guest works correctly when run on bare metal.


I am using the grub command line extras of “intel_iommu=on modprobe.blacklist=ioatdma pci-stub.ids=8086:3c20,8086:3c21,8086:3c22,8086:3c23,8086:3c24,8086:3c25,8086:3c26,8086:3c27 vfio_iommu_type1.allow_unsafe_interrupts=1”


My intent was to guarantee that the DMA device is fully assigned to the stub driver during system startup, and it seems to be the case.  I have tried assigning the device to the guest with either a series of commands for each DMA device:

<qemu:arg value='-device'/>

<qemu:arg value='pci-assign,host=0:04.0,bus=pcie.0,addr=06.0,multifunction=on'/>




<qemu:arg value='-device'/>

<qemu:arg value='vfio-pci,host=0:04.0,bus=pcie.0,addr=06.0,multifunction=on'/>


statements the virsh’s XML file. 


Dumping the capabilities from the Host with lspci shows this current state:

Capabilities: [80] MSI-X: Enable+ Count=1 Masked-

                Vector table: BAR=0 offset=00002000

                PBA: BAR=0 offset=00003000


After running some tests within the guest, a dump of the Host’s /proc/interrupts shows that there have been no interrupts generated by the DMA devices.  I do have another device running with MSI enabled that appears to be functioning properly.


Is this approach for mapping the DMA hardware expected to work? 

How is the current state of MSI-X support, are there known issues that may be preventing this?

Any other suggestions?


Thank you,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]