[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] exec: fix address_space_get_iotlb_entry page
From: |
Peter Xu |
Subject: |
Re: [Qemu-devel] [PATCH v2] exec: fix address_space_get_iotlb_entry page mask |
Date: |
Wed, 31 May 2017 14:23:57 +0800 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Tue, May 30, 2017 at 06:23:14PM +0200, Paolo Bonzini wrote:
>
>
> On 29/05/2017 06:02, Peter Xu wrote:
> > The IOTLB that it returned didn't guarantee that page_mask is indeed a
> > so-called page mask. That won't affect current usage since now only
> > vhost is using it (vhost API allows arbitary IOTLB range). However we
> > have IOTLB scemantic and we should best follow it. This patch fixes this
> > issue to make sure the page_mask is always a valid page mask.
> >
> > Fixes: a764040 ("exec: abstract address_space_do_translate()")
> > Signed-off-by: Peter Xu <address@hidden>
> > ---
> > Sorry please use this one. The codes is merely the same, just avoided
> > moving the codes around unnecessarily.
> > ---
> > exec.c | 14 ++++++--------
> > 1 file changed, 6 insertions(+), 8 deletions(-)
> >
> > diff --git a/exec.c b/exec.c
> > index ff16f04..3db247c 100644
> > --- a/exec.c
> > +++ b/exec.c
> > @@ -529,16 +529,14 @@ IOMMUTLBEntry
> > address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
> > section.offset_within_region;
> >
> > if (plen == (hwaddr)-1) {
> > - /*
> > - * We use default page size here. Logically it only happens
> > - * for identity mappings.
> > - */
> > - plen = TARGET_PAGE_SIZE;
> > + /* If not specified during translation, use default mask */
> > + plen = TARGET_PAGE_MASK;
> > + } else {
> > + /* Make it a valid page mask */
> > + assert(plen);
> > + plen = (1ULL << (63 - clz64(plen))) - 1;
>
> Would pow2floor be better?
Yes. :) Will respin. Thanks!
--
Peter Xu