vring: Use the DMA API on Xen
Signed-off-by: Andy Lutomirski <luto@kernel.org> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: David Vrabel <david.vrabel@citrix.com> Reviewed-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
parent
7a5589b240
commit
78fe398723
|
@ -25,6 +25,7 @@
|
|||
#include <linux/hrtimer.h>
|
||||
#include <linux/kmemleak.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <xen/xen.h>
|
||||
|
||||
#ifdef DEBUG
|
||||
/* For development, we want to crash whenever the ring is screwed. */
|
||||
|
@ -136,6 +137,17 @@ struct vring_virtqueue {
|
|||
|
||||
static bool vring_use_dma_api(struct virtio_device *vdev)
|
||||
{
|
||||
/*
|
||||
* In theory, it's possible to have a buggy QEMU-supposed
|
||||
* emulated Q35 IOMMU and Xen enabled at the same time. On
|
||||
* such a configuration, virtio has never worked and will
|
||||
* not work without an even larger kludge. Instead, enable
|
||||
* the DMA API if we're a Xen guest, which at least allows
|
||||
* all of the sensible Xen configurations to work correctly.
|
||||
*/
|
||||
if (xen_domain())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue