From: "Michael S. Tsirkin" <mst@redhat.com>
To: David Woodhouse <dwmw2@infradead.org>
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 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, 1 Feb 2016 15:23:24 +0200 [thread overview]
Message-ID: <20160201133556-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <1454325723.133285.285.camel@infradead.org>
On Mon, Feb 01, 2016 at 11:22:03AM +0000, David Woodhouse wrote:
> 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').
Good catch, hopefully will be fixed in v2.
> > +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*)?
I'm fine with this.
> 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
>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: David Woodhouse <dwmw2@infradead.org>
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 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 13:23:24 +0000 [thread overview]
Message-ID: <20160201133556-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <1454325723.133285.285.camel@infradead.org>
On Mon, Feb 01, 2016 at 11:22:03AM +0000, David Woodhouse wrote:
> 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').
Good catch, hopefully will be fixed in v2.
> > +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*)?
I'm fine with this.
> 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
>
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Andy Lutomirski <luto@kernel.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.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
Subject: Re: [PATCH v5 04/10] vring: Introduce vring_use_dma_api()
Date: Mon, 1 Feb 2016 15:23:24 +0200 [thread overview]
Message-ID: <20160201133556-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <1454325723.133285.285.camel@infradead.org>
On Mon, Feb 01, 2016 at 11:22:03AM +0000, David Woodhouse wrote:
> 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').
Good catch, hopefully will be fixed in v2.
> > +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*)?
I'm fine with this.
> 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
>
next prev parent reply other threads:[~2016-02-01 13:23 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-01-29 2:31 ` 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 [this message]
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 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 13:23 ` Michael S. Tsirkin
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 2:31 ` Andy Lutomirski
2016-01-29 10:34 ` [Xen-devel] " 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 ` [Xen-devel] " 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 10:34 ` [Xen-devel] " David Vrabel
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-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-29 11:01 ` David Woodhouse
2016-01-29 11:01 ` David Woodhouse
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-01-31 20:12 ` Michael S. Tsirkin
2016-02-01 11:00 ` Wei Liu
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 ` [Xen-devel] " Wei Liu
2016-02-01 21:22 ` Wei Liu
2016-02-01 21:22 ` 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=20160201133556-mutt-send-email-mst@redhat.com \
--to=mst@redhat.com \
--cc=benh@kernel.crashing.org \
--cc=borntraeger@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=luto@kernel.org \
--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.