From: Peter Xu <peterx@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: David Gibson <david@gibson.dropbear.id.au>,
Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel@nongnu.org,
Maxime Coquelin <maxime.coquelin@redhat.com>,
Jason Wang <jasowang@redhat.com>,
Alex Williamson <alex.williamson@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/3] exec: simplify address_space_get_iotlb_entry
Date: Fri, 9 Jun 2017 09:58:47 +0800 [thread overview]
Message-ID: <20170609015847.GG3628@pxdev.xzpeter.org> (raw)
In-Reply-To: <20170608215918-mutt-send-email-mst@kernel.org>
On Thu, Jun 08, 2017 at 09:59:50PM +0300, Michael S. Tsirkin wrote:
> On Thu, Jun 08, 2017 at 02:11:50PM +0800, Peter Xu wrote:
> > On Wed, Jun 07, 2017 at 04:07:20PM +0300, Michael S. Tsirkin wrote:
> > > On Wed, Jun 07, 2017 at 11:44:43AM +0800, Peter Xu wrote:
> > > > On Wed, Jun 07, 2017 at 09:47:05AM +1000, David Gibson wrote:
> > > > > On Tue, Jun 06, 2017 at 04:34:30PM +0200, Paolo Bonzini wrote:
> > > > > >
> > > > > >
> > > > > > On 05/06/2017 05:07, Peter Xu wrote:
> > > > > > > I don't sure whether it'll be a good interface for IOTLB. AFAIU at
> > > > > > > least for VT-d, the IOMMU translation is page aligned which is defined
> > > > > > > by spec, so it makes sense that (again at least for VT-d) here we'd
> > > > > > > better just use page_mask/addr_mask.
> > > > > > >
> > > > > > > That's also how I know about IOMMU in general - I assume it do the
> > > > > > > translations always with page masks (never arbitary length), though
> > > > > > > page size can differ from platfrom to platform, that's why here the
> > > > > > > IOTLB interface used addr_mask, then it works for all platforms. I
> > > > > > > don't know whether I'm 100% correct here though.
> > > > > > >
> > > > > > > Maybe David/Paolo/... would comment as well?
> > > > > >
> > > > > > I would ask David. There are PowerPC MMUs that allow fast lookup of
> > > > > > arbitrarily-sized windows (not necessarily power of two),
> > > > >
> > > > > Uh.. I'm not sure what you mean here. You might be thinking of the
> > > > > BATs which really old (32-bit) PowerPC MMUs had - those allow
> > > > > arbitrary large block translations, but they do have to be a power of
> > > > > two.
> > > > >
> > > > > > so maybe the
> > > > > > IOMMUs can do the same.
> > > > >
> > > > > The only Power IOMMU I know about uses a fixed, power-of-two page size
> > > > > per DMA window.
> > > >
> > > > If so, I would still be inclined to keep using masks for QEMU IOTLB.
> > > > Then, my first two patches should still stand.
> > > >
> > > > I am just afraid that not using masks will diverge the emulation from
> > > > real hardware and brings trouble one day.
> > > >
> > > > For vhost IOTLB interface, it does not need to be strictly aligned to
> > > > QEMU IOMMU IOTLB definition, and that's how it's working now (current
> > > > vhost iotlb allows arbitary length, and I think it's good). So imho we
> > > > don't really need to worry about the performance - after all, we can
> > > > do everything customized for vhost, just like what patch 3 did (yeah,
> > > > it can be better...).
> > > >
> > > > Thanks,
> > >
> > > Pre-faults is also something that does not happen on real hardware.
> > > And it's about security so a bigger issue.
> > >
> > > If I had to choose between that and using non-power-of-2 in
> > > the API, I'd go for non-power-of-2. Let backends that can only
> > > support power of 2 split it up to multiple transactions.
> >
> > The problem is that when I was fixing the problem that vhost had with
> > PT (a764040, "exec: abstract address_space_do_translate()"), I did
> > broke the IOTLB translation a bit (it was using page masks). IMHO we
> > need to fix it first for correctness (patch 1/2).
> >
> > For patch 3, if we can have Jason's patch to allow dynamic
> > iommu_platform switching, that'll be the best, then I can rewrite
> > patch 3 with the switching logic rather than caching anything. But
> > IMHO that can be separated from patch 1/2 if you like.
> >
> > Or do you have better suggestion on how should we fix it?
> >
> > Thanks,
>
> Can we drop masks completely and replace with length? I think we
> should do that instead of trying to fix masks.
Do you mean to modify IOMMUTLBEntry.addr_mask into length?
Again, I am not sure this is good... At least we need to get ack from
David since spapr should be the initial user of it, and possibly also
Alex since vfio should be assuming that (IIUC both in QEMU and kernel)
addr_mask is page masks rather than arbirary length.
(CC Alex)
Thanks,
--
Peter Xu
next prev parent reply other threads:[~2017-06-09 1:59 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-02 11:50 [Qemu-devel] [PATCH 0/3] exec: further refine address_space_get_iotlb_entry() Peter Xu
2017-06-02 11:50 ` [Qemu-devel] [PATCH 1/3] exec: add page_mask for address_space_do_translate Peter Xu
2017-06-02 16:45 ` Michael S. Tsirkin
2017-06-05 2:52 ` Peter Xu
2017-06-02 11:50 ` [Qemu-devel] [PATCH 2/3] exec: simplify address_space_get_iotlb_entry Peter Xu
2017-06-02 16:49 ` Michael S. Tsirkin
2017-06-05 3:07 ` Peter Xu
2017-06-06 14:34 ` Paolo Bonzini
2017-06-06 23:47 ` David Gibson
2017-06-07 3:44 ` Peter Xu
2017-06-07 13:07 ` Michael S. Tsirkin
2017-06-08 6:11 ` Peter Xu
2017-06-08 18:59 ` Michael S. Tsirkin
2017-06-09 1:58 ` Peter Xu [this message]
2017-06-09 2:37 ` David Gibson
2017-06-11 10:09 ` Michael S. Tsirkin
2017-06-11 12:10 ` David Gibson
2017-06-12 2:34 ` Peter Xu
2017-06-12 3:07 ` Michael S. Tsirkin
2017-06-12 4:04 ` Peter Xu
2017-06-14 18:34 ` Michael S. Tsirkin
2017-06-15 2:31 ` Peter Xu
2017-06-15 2:57 ` Peter Xu
2017-06-16 15:33 ` Michael S. Tsirkin
2017-06-07 13:01 ` Paolo Bonzini
2017-06-02 11:50 ` [Qemu-devel] [PATCH 3/3] vhost: iommu: cache static mapping if there is Peter Xu
2017-06-02 15:45 ` Michael S. Tsirkin
2017-06-05 3:15 ` Peter Xu
2017-06-05 4:07 ` Jason Wang
2017-06-05 15:05 ` Michael S. Tsirkin
2017-06-02 16:51 ` Michael S. Tsirkin
2017-06-02 14:51 ` [Qemu-devel] [PATCH 0/3] exec: further refine address_space_get_iotlb_entry() Michael S. Tsirkin
2017-06-05 3:20 ` Peter Xu
2017-06-06 15:29 ` Michael S. Tsirkin
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=20170609015847.GG3628@pxdev.xzpeter.org \
--to=peterx@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=jasowang@redhat.com \
--cc=maxime.coquelin@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.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.