All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Woodhouse <dwmw2@infradead.org>
To: Andy Lutomirski <luto@kernel.org>, "Michael S. Tsirkin" <mst@redhat.com>
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>,
	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>,
	xen-devel@lists.xenproject.org, sparclinux@vger.kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Linux Virtualization <virtualization@lists.linux-foundation.org>,
	"David S. Miller" <davem@davemloft.net>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>
Subject: Re: [PATCH v5 04/10] vring: Introduce vring_use_dma_api()
Date: Mon, 01 Feb 2016 11:22:03 +0000	[thread overview]
Message-ID: <1454325723.133285.285.camel__11355.3057112314$1454325825$gmane$org@infradead.org> (raw)
In-Reply-To: <cab70812b0a46a5a5b36e6de4110c5c66a6f6916.1454034075.git.luto@kernel.org>


[-- Attachment #1.1: Type: text/plain, Size: 2801 bytes --]

On Thu, 2016-01-28 at 18:31 -0800, Andy Lutomirski wrote:
> 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 
>  #include 
>  
> +/*
> + * 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.
> + */

I spot at least three typos in there, FWIW. ('DMI API', 'sytems',
'preseve').

> +static bool vring_use_dma_api(void)
> +{
> +	return false;
> +}
> +

I'd quite like to see this be an explicit opt-out for the known-broken
platforms. We've listed the SPARC and PPC64 issues. For x86 I need to
refresh my memory as a prelude to trying to fix it... was the issue
*just* that Qemu tends to ship with a broken BIOS that misdescribes the
virtio devices (and any assigned PCI devices) as being behind an IOMMU
when they're not, in the rare case that Qemu actually exposes its
partially-implemented virtual IOMMU to the guest?

Could we have an arch_vring_eschew_dma_api(dev) function which the
affected architectures could provide (as a prelude to fixing it so that
the DMA API does the right thing for *itself*)?

It would be functionally equivalent, but it would help to push the
workarounds to the right place — rather than entrenching them for ever
in tricky "OMG we need to audit what all the architectures do... let's
not touch it!" code.

-- 
David Woodhouse                            Open Source Technology Centre
David.Woodhouse@intel.com                              Intel Corporation


[-- Attachment #1.2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5691 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  reply	other threads:[~2016-02-01 11:22 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 ` [PATCH v5 04/10] vring: Introduce vring_use_dma_api() Andy Lutomirski
2016-01-29  2:31   ` Andy Lutomirski
2016-02-01 11:22   ` David Woodhouse [this message]
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='1454325723.133285.285.camel__11355.3057112314$1454325825$gmane$org@infradead.org' \
    --to=dwmw2@infradead.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=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=luto@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.