From: "Michael S. Tsirkin" <mst@redhat.com>
To: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Jason Wang <jasowang@redhat.com>,
qemu-devel@nongnu.org, pbonzini@redhat.com, peterx@redhat.com,
wexu@redhat.com, vkaplans@redhat.com,
Stefan Hajnoczi <stefanha@redhat.com>,
Kevin Wolf <kwolf@redhat.com>, Amit Shah <amit.shah@redhat.com>,
qemu-block@nongnu.org
Subject: Re: [Qemu-devel] [PATCH for 2.8 02/11] virtio: convert to use DMA api
Date: Tue, 30 Aug 2016 13:21:23 +0300 [thread overview]
Message-ID: <20160830130926-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20160830130128-mutt-send-email-mst@kernel.org>
On Tue, Aug 30, 2016 at 01:02:14PM +0300, Michael S. Tsirkin wrote:
> On Tue, Aug 30, 2016 at 09:31:27AM +0200, Cornelia Huck wrote:
> > On Tue, 30 Aug 2016 11:06:50 +0800
> > Jason Wang <jasowang@redhat.com> wrote:
> >
> > > Currently, all virtio devices bypass IOMMU completely. This is because
> > > address_space_memory is assumed and used during DMA emulation. This
> > > patch converts the virtio core API to use DMA API. This idea is
> > >
> > > - introducing a new transport specific helper to query the dma address
> > > space. (only pci version is implemented).
> > > - query and use this address space during virtio device guest memory
> > > accessing when iommu platform (VIRTIO_F_IOMMU_PLATFORM) was enabled
> > > for this device.
> > >
> > > Cc: Michael S. Tsirkin <mst@redhat.com>
> > > Cc: Stefan Hajnoczi <stefanha@redhat.com>
> > > Cc: Kevin Wolf <kwolf@redhat.com>
> > > Cc: Amit Shah <amit.shah@redhat.com>
> > > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > > Cc: qemu-block@nongnu.org
> > > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > > ---
> > > hw/block/virtio-blk.c | 2 +-
> > > hw/char/virtio-serial-bus.c | 3 +-
> > > hw/scsi/virtio-scsi.c | 4 ++-
> > > hw/virtio/virtio-pci.c | 14 +++++++++
> > > hw/virtio/virtio.c | 62 ++++++++++++++++++++++++---------------
> > > include/hw/virtio/virtio-access.h | 43 ++++++++++++++++++++-------
> > > include/hw/virtio/virtio-bus.h | 1 +
> > > include/hw/virtio/virtio.h | 8 +++--
> > > 8 files changed, 98 insertions(+), 39 deletions(-)
> > >
> >
> > > diff --git a/include/hw/virtio/virtio-access.h b/include/hw/virtio/virtio-access.h
> > > index 440b455..4071dad 100644
> > > --- a/include/hw/virtio/virtio-access.h
> > > +++ b/include/hw/virtio/virtio-access.h
> > > @@ -17,12 +17,25 @@
> > > #define QEMU_VIRTIO_ACCESS_H
> > >
> > > #include "hw/virtio/virtio.h"
> > > +#include "hw/virtio/virtio-bus.h"
> > > #include "exec/address-spaces.h"
> > >
> > > #if defined(TARGET_PPC64) || defined(TARGET_ARM)
> > > #define LEGACY_VIRTIO_IS_BIENDIAN 1
> > > #endif
> > >
> > > +static inline AddressSpace *virtio_get_dma_as(VirtIODevice *vdev)
> > > +{
> > > + BusState *qbus = qdev_get_parent_bus(DEVICE(vdev));
> > > + VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus);
> > > +
> > > + if (virtio_host_has_feature(vdev, VIRTIO_F_IOMMU_PLATFORM) &&
> > > + k->get_dma_as) {
> > > + return k->get_dma_as(qbus->parent);
> > > + }
> > > + return &address_space_memory;
> > > +}
> >
> > One thing I'm a bit worried about is that we're introducing a check
> > even if we know that the device will never support
> > VIRTIO_F_IOMMU_PLATFORM (i.e. virtio-ccw). The qom incantations will
> > add cycles to any invocation of this.
>
> Yes - let's do container_of calls as opposed to QOM on data path.
BTW downstreams are building with --disable-qom-cast-debug which drops
all QOM casts on data path - one way is to say we just make this the
default upstream as well. Another to say that we want to distinguish
fast path calls from slow path, this way we will be able to bring back
some of the checks.
> > Is the address space likely to change during device lifetime? Can we
> > cache it in some way?
next prev parent reply other threads:[~2016-08-30 10:21 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-30 3:06 [Qemu-devel] [PATCH for 2.8 00/11] virtio/vhost DMAR support Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 01/11] linux-headers: update to 4.8-rc4 Jason Wang
2016-09-05 1:24 ` Wei Xu
2016-09-05 1:26 ` Michael S. Tsirkin
2016-09-06 6:28 ` Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 02/11] virtio: convert to use DMA api Jason Wang
2016-08-30 7:31 ` Cornelia Huck
2016-08-30 10:02 ` Michael S. Tsirkin
2016-08-30 10:21 ` Michael S. Tsirkin [this message]
2016-08-30 11:11 ` [Qemu-devel] qom and debug (was: [PATCH for 2.8 02/11] virtio: convert to use DMA api) Cornelia Huck
2016-08-30 11:15 ` Michael S. Tsirkin
2016-08-30 11:37 ` [Qemu-devel] qom and debug Cornelia Huck
2016-08-30 11:57 ` Michael S. Tsirkin
2016-08-31 2:47 ` [Qemu-devel] [PATCH for 2.8 02/11] virtio: convert to use DMA api Jason Wang
2016-09-05 2:26 ` Wei Xu
2016-09-06 6:30 ` Jason Wang
2016-09-05 2:33 ` Michael S. Tsirkin
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 03/11] intel_iommu: name vtd address space with devfn Jason Wang
2016-09-05 6:56 ` Wei Xu
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 04/11] intel_iommu: allocate new key when creating new address space Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 05/11] exec: introduce address_space_get_iotlb_entry() Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 06/11] intel_iommu: support device iotlb descriptor Jason Wang
2016-08-30 13:16 ` Peter Xu
2016-08-31 2:54 ` Jason Wang
2016-09-01 1:26 ` Peter Xu
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 07/11] virtio-pci: address space translation service (ATS) support Jason Wang
2016-08-30 13:21 ` Peter Xu
2016-08-31 2:55 ` Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 08/11] acpi: add ATSR for q35 Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 09/11] memory: handle alias for iommu notifier Jason Wang
2016-08-30 13:28 ` Peter Xu
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 10/11] Revert "intel_iommu: Throw hw_error on notify_started" Jason Wang
2016-08-30 3:37 ` Alex Williamson
2016-08-31 2:45 ` Jason Wang
2016-09-01 2:29 ` Peter Xu
2016-09-01 2:43 ` Alex Williamson
2016-09-01 3:58 ` Peter Xu
2016-09-02 4:15 ` David Gibson
2016-09-02 5:37 ` Peter Xu
2016-09-02 6:10 ` David Gibson
2016-09-02 6:15 ` Peter Xu
2016-09-02 6:18 ` Peter Xu
2016-09-02 7:00 ` David Gibson
2016-09-02 9:31 ` Peter Xu
2016-09-02 15:13 ` Alex Williamson
2016-09-05 6:28 ` Peter Xu
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 11/11] vhost_net: device IOTLB support Jason Wang
2016-09-01 3:34 ` Peter Xu
2016-09-01 7:36 ` Jason Wang
2016-09-02 5:47 ` Peter Xu
2016-08-30 3:25 ` [Qemu-devel] [PATCH for 2.8 00/11] virtio/vhost DMAR support no-reply
2016-08-30 3:29 ` no-reply
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=20160830130926-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=amit.shah@redhat.com \
--cc=cornelia.huck@de.ibm.com \
--cc=jasowang@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=vkaplans@redhat.com \
--cc=wexu@redhat.com \
/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.