From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Blue Swirl <blauwirbel@gmail.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
qemu-devel@nongnu.org, liu ping fan <qemulist@gmail.com>,
Alex Williamson <alex.williamson@redhat.com>,
Avi Kivity <avi@redhat.com>,
Anthony Liguori <anthony@codemonkey.ws>,
Paolo Bonzini <pbonzini@redhat.com>,
David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [Qemu-devel] [RFC v1 3/7] memory: iommu support
Date: Sat, 13 Oct 2012 22:37:32 +1100 [thread overview]
Message-ID: <1350128252.20486.171.camel@pasglop> (raw)
In-Reply-To: <CAAu8pHtXuorjFvVNSpRkSTbXerRLMdPWxoh+TkwBMSZC02ZFoA@mail.gmail.com>
On Sat, 2012-10-13 at 09:30 +0000, Blue Swirl wrote:
> > The problem with map and unmap is invalidations. How do you convey to
> > the devices having done a map that the guest has invalidated a
> > translation entry.
>
> Also in Sparc32, IOMMU uses a table in RAM which the guest can change,
> so a callback to update the translation tables should be available. On
> Sparc64 there's IOTLB but also a fallback to TSB translation table in
> memory. We could rely on the guest issuing demaps/flushes when the
> memory changes and invalidate the translations then.
Right, the table's in memory on power too, but such tables generally
also have a cache (TLB) with some MMIO based logic to perform
invalidations.
Typically that logic involves a bit to perform a TLB kill and some
status bit to read back to get confirmation that the flush is completed.
In that case we can probably delay that later status bit until all the
maps we kept track of are gone ....
... but that means tracking them which is expensive.
Also the IBM iommu's are nasty here... some of them, if we ever emulate
them, actually participate in the fabric coherency protocol and thus
don't require an explicit MMIO for invalidations.
So if we were to emulate such HW we would have to intercept accesses to
the portion of RAM that is configured as an iommu table.
Thankfully we only emulate those machines as "paravirt" with a
hypervisor interface to the iommu (aka TCEs) so we are fine for now.
Also if we ever emulate the real HW, well, the latter models don't do
that anymore (but their MMIO for killing the cache doesn't have a status
bit either, the kill is that the latency of a simple read back is
enough).
Overall, a bloody can of worms... under the rug sounds like a nice place
to leave it for now :-)
Cheers,
Ben.
next prev parent reply other threads:[~2012-10-13 12:02 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-11 13:26 [Qemu-devel] [RFC v1 0/7] IOMMU support Avi Kivity
2012-10-11 13:26 ` [Qemu-devel] [RFC v1 1/7] memory: fix address space initialization/destruction Avi Kivity
2012-10-11 13:31 ` Paolo Bonzini
2012-10-11 13:33 ` Avi Kivity
2012-10-13 9:14 ` Blue Swirl
2012-10-11 13:26 ` [Qemu-devel] [RFC v1 2/7] memory: limit sections in the radix tree to the actual address space size Avi Kivity
2012-10-11 13:26 ` [Qemu-devel] [RFC v1 3/7] memory: iommu support Avi Kivity
2012-10-11 13:42 ` Paolo Bonzini
2012-10-11 13:45 ` Avi Kivity
2012-10-11 13:54 ` Paolo Bonzini
2012-10-11 13:57 ` Avi Kivity
2012-10-12 2:51 ` Benjamin Herrenschmidt
2012-10-15 16:54 ` Avi Kivity
2012-10-12 2:45 ` Benjamin Herrenschmidt
2012-10-13 9:30 ` Blue Swirl
2012-10-13 11:37 ` Benjamin Herrenschmidt [this message]
2012-10-11 14:29 ` Avi Kivity
2012-10-11 13:27 ` [Qemu-devel] [RFC v1 4/7] pci: switch iommu to using the memory API Avi Kivity
2012-10-11 13:53 ` Paolo Bonzini
2012-10-11 13:56 ` Avi Kivity
2012-10-13 9:13 ` Blue Swirl
2012-10-15 10:31 ` Avi Kivity
2012-10-11 13:27 ` [Qemu-devel] [RFC v1 5/7] i440fx: add an iommu Avi Kivity
2012-10-11 13:27 ` [Qemu-devel] [RFC v1 6/7] vfio: abort if an emulated iommu is used Avi Kivity
2012-10-11 13:27 ` [Qemu-devel] [RFC v1 7/7] vhost: " Avi Kivity
2012-10-11 13:31 ` Michael S. Tsirkin
2012-10-11 13:34 ` Avi Kivity
2012-10-11 13:44 ` Michael S. Tsirkin
2012-10-11 13:44 ` Avi Kivity
2012-10-11 14:35 ` Michael S. Tsirkin
2012-10-11 14:35 ` Avi Kivity
2012-10-11 15:34 ` Michael S. Tsirkin
2012-10-11 15:48 ` Avi Kivity
2012-10-11 19:38 ` Alex Williamson
2012-10-15 10:24 ` Avi Kivity
2012-10-15 8:44 ` liu ping fan
2012-10-15 10:32 ` Avi Kivity
2012-10-12 2:36 ` [Qemu-devel] [RFC v1 0/7] IOMMU support Benjamin Herrenschmidt
2012-10-15 10:45 ` Avi Kivity
2012-10-15 19:52 ` Benjamin Herrenschmidt
2012-10-16 9:30 ` Avi Kivity
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=1350128252.20486.171.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=alex.williamson@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemulist@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).