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 v5 04/10] vring: Introduce vring_use_dma_api() Date: Thu, 28 Jan 2016 18:31:17 -0800 [thread overview] Message-ID: <cab70812b0a46a5a5b36e6de4110c5c66a6f6916.1454034075.git.luto@kernel.org> (raw) In-Reply-To: <cover.1454034075.git.luto@kernel.org> In-Reply-To: <cover.1454034075.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..4b8dab4960bb 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -25,6 +25,30 @@ #include <linux/hrtimer.h> #include <linux/kmemleak.h> +/* + * 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 DMI API. + * + * On some sytems, 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 preseve historic behavior and bypass the DMA + * API. + */ + +static bool vring_use_dma_api(void) +{ + return false; +} + #ifdef DEBUG /* For development, we want to crash whenever the ring is screwed. */ #define BAD_RING(_vq, fmt, args...) \ -- 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: 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 v5 04/10] vring: Introduce vring_use_dma_api() Date: Fri, 29 Jan 2016 02:31:17 +0000 [thread overview] Message-ID: <cab70812b0a46a5a5b36e6de4110c5c66a6f6916.1454034075.git.luto@kernel.org> (raw) In-Reply-To: <cover.1454034075.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..4b8dab4960bb 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -25,6 +25,30 @@ #include <linux/hrtimer.h> #include <linux/kmemleak.h> +/* + * 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 DMI API. + * + * On some sytems, 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 preseve historic behavior and bypass the DMA + * API. + */ + +static bool vring_use_dma_api(void) +{ + return false; +} + #ifdef DEBUG /* For development, we want to crash whenever the ring is screwed. */ #define BAD_RING(_vq, fmt, args...) \ -- 2.5.0
next prev parent reply other threads:[~2016-01-29 2:31 UTC|newest] Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-01-29 2:31 [PATCH v5 00/10] virtio DMA API, yet again Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` [PATCH v5 01/10] dma: Provide simple noop dma ops Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` [PATCH v5 02/10] alpha/dma: use common " Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` [PATCH v5 03/10] s390/dma: Allow per device " Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski [this message] 2016-01-29 2:31 ` [PATCH v5 04/10] vring: Introduce vring_use_dma_api() Andy Lutomirski 2016-02-01 11:22 ` David Woodhouse 2016-02-01 11:22 ` David Woodhouse 2016-02-01 11:22 ` David Woodhouse 2016-02-01 11:22 ` David Woodhouse 2016-02-01 13:23 ` Michael S. Tsirkin 2016-02-01 13:23 ` Michael S. Tsirkin 2016-02-01 13:23 ` Michael S. Tsirkin 2016-02-01 15:39 ` Andy Lutomirski 2016-02-01 15:39 ` Andy Lutomirski 2016-02-01 15:39 ` Andy Lutomirski 2016-02-01 16:11 ` David Woodhouse 2016-02-01 16:11 ` David Woodhouse 2016-02-01 16:11 ` David Woodhouse 2016-02-01 15:39 ` Andy Lutomirski 2016-02-01 13:23 ` Michael S. Tsirkin 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` [PATCH v5 05/10] virtio_ring: Support DMA APIs Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` [PATCH v5 06/10] virtio: Add improved queue allocation API Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` [PATCH v5 07/10] virtio_mmio: Use the DMA API if enabled Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` [PATCH v5 08/10] virtio_pci: " Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` [PATCH v5 09/10] vring: Use the DMA API on Xen Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 10:34 ` [Xen-devel] " David Vrabel 2016-01-29 10:34 ` David Vrabel 2016-01-29 10:34 ` David Vrabel 2016-01-31 20:09 ` Michael S. Tsirkin 2016-01-31 20:09 ` Michael S. Tsirkin 2016-01-31 20:09 ` Michael S. Tsirkin 2016-01-31 20:13 ` Andy Lutomirski 2016-01-31 20:13 ` Andy Lutomirski 2016-01-31 20:13 ` Andy Lutomirski 2016-01-31 20:18 ` Michael S. Tsirkin 2016-01-31 20:18 ` [Xen-devel] " Michael S. Tsirkin 2016-01-31 20:18 ` Michael S. Tsirkin 2016-01-31 20:18 ` Michael S. Tsirkin 2016-01-31 20:27 ` Andy Lutomirski 2016-01-31 20:27 ` Andy Lutomirski 2016-01-31 20:27 ` Andy Lutomirski 2016-01-31 20:27 ` Andy Lutomirski 2016-01-31 20:13 ` Andy Lutomirski 2016-02-01 21:24 ` [Xen-devel] " Wei Liu 2016-02-01 21:24 ` Wei Liu 2016-02-01 21:24 ` Wei Liu 2016-02-01 21:24 ` Wei Liu 2016-01-31 20:09 ` Michael S. Tsirkin 2016-01-29 10:34 ` David Vrabel 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` [PATCH v5 10/10] vring: Add a module parameter to force-enable the DMA API Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 2:31 ` Andy Lutomirski 2016-01-29 11:01 ` [PATCH v5 00/10] virtio DMA API, yet again David Woodhouse 2016-01-29 11:01 ` David Woodhouse 2016-01-29 11:01 ` David Woodhouse 2016-01-31 19:06 ` Christoph Hellwig 2016-01-31 19:06 ` Christoph Hellwig 2016-01-31 19:06 ` Christoph Hellwig 2016-01-31 19:06 ` Christoph Hellwig 2016-01-31 20:12 ` Michael S. Tsirkin 2016-01-31 20:12 ` Michael S. Tsirkin 2016-01-31 20:12 ` Michael S. Tsirkin 2016-01-31 20:12 ` Michael S. Tsirkin 2016-01-31 20:16 ` Andy Lutomirski 2016-01-31 20:16 ` Andy Lutomirski 2016-01-31 20:16 ` Andy Lutomirski 2016-01-31 20:16 ` Andy Lutomirski 2016-02-01 11:00 ` [Xen-devel] " Wei Liu 2016-02-01 11:00 ` Wei Liu 2016-02-01 11:00 ` Wei Liu 2016-02-01 18:04 ` Andy Lutomirski 2016-02-01 18:04 ` [Xen-devel] " Andy Lutomirski 2016-02-01 18:04 ` Andy Lutomirski 2016-02-01 18:04 ` Andy Lutomirski 2016-02-01 21:22 ` Wei Liu 2016-02-01 21:22 ` Wei Liu 2016-02-01 21:22 ` Wei Liu 2016-02-01 21:22 ` Wei Liu 2016-02-01 11:00 ` Wei Liu
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=cab70812b0a46a5a5b36e6de4110c5c66a6f6916.1454034075.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: linkBe 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.