Message ID | 41aeb1bd026494e277ea5827d99df4a4f41b8b8f.1454349471.git.luto@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 01/02/16 18:00, Andy Lutomirski wrote: > Signed-off-by: Andy Lutomirski <luto@kernel.org> Reviewed-by: David Vrabel <david.vrabel@citrix.com> Thanks. David -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Feb 01, 2016 at 10:00:59AM -0800, Andy Lutomirski wrote: > Signed-off-by: Andy Lutomirski <luto@kernel.org> Reviewed-by: Wei Liu <wei.liu2@citrix.com> -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index cf2840c7e500..2a921e5b1809 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -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(const struct vring_virtqueue *vq) { + /* + * 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; }
Signed-off-by: Andy Lutomirski <luto@kernel.org> --- drivers/virtio/virtio_ring.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)