All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Lutomirski <luto@kernel.org>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	David Woodhouse <dwmw2@infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	sparclinux@vger.kernel.org, Joerg Roedel <jroedel@suse.de>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>,
	Sebastian Ott <sebott@linux.vnet.ibm.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Christoph Hellwig <hch@lst.de>, KVM <kvm@vger.kernel.org>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	linux-s390 <linux-s390@vger.kernel.org>,
	Linux Virtualization <virtualization@lists.linux-foundation.org>,
	David Vrabel <david.vrabel@citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	xen-devel@lists.xenproject.org, Andy Lutomirski <luto@kernel.org>
Subject: [PATCH v7 4/9] vring: Introduce vring_use_dma_api()
Date: Tue,  2 Feb 2016 21:46:35 -0800	[thread overview]
Message-ID: <14db226dda9e0d6af5d2bfab0f75ffddfb116bf9.1454477782.git.luto@kernel.org> (raw)
In-Reply-To: <cover.1454477782.git.luto@kernel.org>
In-Reply-To: <cover.1454477782.git.luto@kernel.org>

This is a kludge, but no one has come up with a a better idea yet.
We'll introduce DMA API support guarded by vring_use_dma_api().
Eventually we may be able to return true on more and more systems,
and hopefully we can get rid of vring_use_dma_api() entirely some
day.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
---
 drivers/virtio/virtio_ring.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index e12e385f7ac3..ab0be6c084f6 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -104,6 +104,30 @@ struct vring_virtqueue {
 
 #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq)
 
+/*
+ * The interaction between virtio and a possible IOMMU is a mess.
+ *
+ * On most systems with virtio, physical addresses match bus addresses,
+ * and it doesn't particularly matter whether we use the DMA API.
+ *
+ * On some systems, including Xen and any system with a physical device
+ * that speaks virtio behind a physical IOMMU, we must use the DMA API
+ * for virtio DMA to work at all.
+ *
+ * On other systems, including SPARC and PPC64, virtio-pci devices are
+ * enumerated as though they are behind an IOMMU, but the virtio host
+ * ignores the IOMMU, so we must either pretend that the IOMMU isn't
+ * there or somehow map everything as the identity.
+ *
+ * For the time being, we preserve historic behavior and bypass the DMA
+ * API.
+ */
+
+static bool vring_use_dma_api(struct virtio_device *vdev)
+{
+	return false;
+}
+
 static struct vring_desc *alloc_indirect(struct virtqueue *_vq,
 					 unsigned int total_sg, gfp_t gfp)
 {
-- 
2.5.0

WARNING: multiple messages have this Message-ID (diff)
From: Andy Lutomirski <luto@kernel.org>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Joerg Roedel <jroedel@suse.de>, KVM <kvm@vger.kernel.org>,
	linux-s390 <linux-s390@vger.kernel.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Sebastian Ott <sebott@linux.vnet.ibm.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Christoph Hellwig <hch@lst.de>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	David Vrabel <david.vrabel@citrix.com>,
	Andy Lutomirski <luto@kernel.org>,
	xen-devel@lists.xenproject.org, sparclinux@vger.kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Linux Virtualization <virtualization@lists.linux-foundation.org>,
	David Woodhouse <dwmw2@infradead.org>,
	"David S. Miller" <davem@davemloft.net>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>
Subject: [PATCH v7 4/9] vring: Introduce vring_use_dma_api()
Date: Tue,  2 Feb 2016 21:46:35 -0800	[thread overview]
Message-ID: <14db226dda9e0d6af5d2bfab0f75ffddfb116bf9.1454477782.git.luto@kernel.org> (raw)
In-Reply-To: <cover.1454477782.git.luto@kernel.org>
In-Reply-To: <cover.1454477782.git.luto@kernel.org>

This is a kludge, but no one has come up with a a better idea yet.
We'll introduce DMA API support guarded by vring_use_dma_api().
Eventually we may be able to return true on more and more systems,
and hopefully we can get rid of vring_use_dma_api() entirely some
day.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
---
 drivers/virtio/virtio_ring.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index e12e385f7ac3..ab0be6c084f6 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -104,6 +104,30 @@ struct vring_virtqueue {
 
 #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq)
 
+/*
+ * The interaction between virtio and a possible IOMMU is a mess.
+ *
+ * On most systems with virtio, physical addresses match bus addresses,
+ * and it doesn't particularly matter whether we use the DMA API.
+ *
+ * On some systems, including Xen and any system with a physical device
+ * that speaks virtio behind a physical IOMMU, we must use the DMA API
+ * for virtio DMA to work at all.
+ *
+ * On other systems, including SPARC and PPC64, virtio-pci devices are
+ * enumerated as though they are behind an IOMMU, but the virtio host
+ * ignores the IOMMU, so we must either pretend that the IOMMU isn't
+ * there or somehow map everything as the identity.
+ *
+ * For the time being, we preserve historic behavior and bypass the DMA
+ * API.
+ */
+
+static bool vring_use_dma_api(struct virtio_device *vdev)
+{
+	return false;
+}
+
 static struct vring_desc *alloc_indirect(struct virtqueue *_vq,
 					 unsigned int total_sg, gfp_t gfp)
 {
-- 
2.5.0

WARNING: multiple messages have this Message-ID (diff)
From: Andy Lutomirski <luto@kernel.org>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Joerg Roedel <jroedel@suse.de>, KVM <kvm@vger.kernel.org>,
	linux-s390 <linux-s390@vger.kernel.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Sebastian Ott <sebott@linux.vnet.ibm.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Christoph Hellwig <hch@lst.de>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	David Vrabel <david.vrabel@citrix.com>,
	Andy Lutomirski <luto@kernel.org>,
	xen-devel@lists.xenproject.org, sparclinux@vger.kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Linux Virtualization <virtualization@lists.linux-foundation.org>,
	David Woodhouse <dwmw2@infradead.org>,
	"David S. Miller" <davem@davemloft.net>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>
Subject: [PATCH v7 4/9] vring: Introduce vring_use_dma_api()
Date: Wed, 03 Feb 2016 05:46:35 +0000	[thread overview]
Message-ID: <14db226dda9e0d6af5d2bfab0f75ffddfb116bf9.1454477782.git.luto@kernel.org> (raw)
In-Reply-To: <cover.1454477782.git.luto@kernel.org>

This is a kludge, but no one has come up with a a better idea yet.
We'll introduce DMA API support guarded by vring_use_dma_api().
Eventually we may be able to return true on more and more systems,
and hopefully we can get rid of vring_use_dma_api() entirely some
day.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
---
 drivers/virtio/virtio_ring.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index e12e385f7ac3..ab0be6c084f6 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -104,6 +104,30 @@ struct vring_virtqueue {
 
 #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq)
 
+/*
+ * The interaction between virtio and a possible IOMMU is a mess.
+ *
+ * On most systems with virtio, physical addresses match bus addresses,
+ * and it doesn't particularly matter whether we use the DMA API.
+ *
+ * On some systems, including Xen and any system with a physical device
+ * that speaks virtio behind a physical IOMMU, we must use the DMA API
+ * for virtio DMA to work at all.
+ *
+ * On other systems, including SPARC and PPC64, virtio-pci devices are
+ * enumerated as though they are behind an IOMMU, but the virtio host
+ * ignores the IOMMU, so we must either pretend that the IOMMU isn't
+ * there or somehow map everything as the identity.
+ *
+ * For the time being, we preserve historic behavior and bypass the DMA
+ * API.
+ */
+
+static bool vring_use_dma_api(struct virtio_device *vdev)
+{
+	return false;
+}
+
 static struct vring_desc *alloc_indirect(struct virtqueue *_vq,
 					 unsigned int total_sg, gfp_t gfp)
 {
-- 
2.5.0


  parent reply	other threads:[~2016-02-03  5:48 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-03  5:46 [PATCH v7 0/9] virtio DMA API, yet again Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46 ` [PATCH v7 1/9] dma: Provide simple noop dma ops Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46 ` [PATCH v7 2/9] alpha/dma: use common " Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46 ` [PATCH v7 3/9] s390/dma: Allow per device " Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46 ` [PATCH v7 4/9] vring: Introduce vring_use_dma_api() Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski [this message]
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46 ` [PATCH v7 5/9] virtio_ring: Support DMA APIs Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03 13:52   ` Michael S. Tsirkin
2016-02-03 13:52   ` Michael S. Tsirkin
2016-02-03 13:52     ` Michael S. Tsirkin
2016-02-03 13:52     ` Michael S. Tsirkin
2016-02-03 17:53     ` Andy Lutomirski
2016-02-03 17:53     ` Andy Lutomirski
2016-02-03 17:53     ` Andy Lutomirski
2016-02-03 17:53       ` Andy Lutomirski
2016-02-03  5:46 ` [PATCH v7 6/9] virtio: Add improved queue allocation API Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46 ` [PATCH v7 7/9] virtio_mmio: Use the DMA API if enabled Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46 ` [PATCH v7 8/9] virtio_pci: " Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46 ` [PATCH v7 9/9] vring: Use the DMA API on Xen Andy Lutomirski
2016-02-03  5:46   ` Andy Lutomirski
2016-02-03  9:49   ` David Vrabel
2016-02-03  9:49     ` David Vrabel
2016-02-03  9:49     ` David Vrabel
2016-02-04 17:49     ` Andy Lutomirski
2016-02-04 17:49     ` Andy Lutomirski
2016-02-04 17:49       ` Andy Lutomirski
2016-02-04 17:49       ` Andy Lutomirski
2016-02-03  9:49   ` David Vrabel
2016-02-03  9:49   ` David Vrabel
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03  5:46 ` Andy Lutomirski
2016-02-03 17:52 ` [PATCH v7 0/9] virtio DMA API, yet again Stefano Stabellini
2016-02-03 17:52 ` Stefano Stabellini
2016-02-03 17:52   ` Stefano Stabellini
2016-02-03 17:52   ` Stefano Stabellini
2016-02-03 17:52 ` Stefano Stabellini
2016-02-17  5:48 ` Andy Lutomirski
2016-02-17  5:48   ` Andy Lutomirski
2016-02-17  9:29   ` Michael S. Tsirkin
2016-02-17  9:29   ` Michael S. Tsirkin
2016-02-17  9:29     ` Michael S. Tsirkin
2016-02-17  9:29     ` Michael S. Tsirkin
2016-02-17  9:42     ` David Woodhouse
2016-02-17  9:42     ` David Woodhouse
2016-02-17  9:42     ` David Woodhouse
2016-02-17  5:48 ` Andy Lutomirski
2016-02-17  5:48 ` Andy Lutomirski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=14db226dda9e0d6af5d2bfab0f75ffddfb116bf9.1454477782.git.luto@kernel.org \
    --to=luto@kernel.org \
    --cc=benh@kernel.crashing.org \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=davem@davemloft.net \
    --cc=david.vrabel@citrix.com \
    --cc=dwmw2@infradead.org \
    --cc=hch@lst.de \
    --cc=jroedel@suse.de \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=schwidefsky@de.ibm.com \
    --cc=sebott@linux.vnet.ibm.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.