UPSTREAM: 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> (cherry picked from commit 78fe39872378b0bef00a91181f1947acb8a08500) Bug: 121166534 Test: Ran cuttlefish with android-4.4 + VSOCKETS, VMWARE_VMCI_VSOCKETS Signed-off-by: Alistair Strachan <astrachan@google.com> Change-Id: Ibf85aad139f319354cd2ee8833ca9434c15640d8
This commit is contained in:
parent
4323356bac
commit
77facbcf65
1 changed files with 12 additions and 0 deletions
|
@ -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. */
|
||||
|
@ -131,6 +132,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…
Add table
Reference in a new issue