xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: "Tian, Kevin" <kevin.tian@intel.com>
To: "Roger Pau Monné" <roger.pau@citrix.com>,
	"Jan Beulich" <jbeulich@suse.com>
Cc: Sergey Dyasli <sergey.dyasli@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@eu.citrix.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Paul Durrant <paul.durrant@citrix.com>,
	"Nakajima, Jun" <jun.nakajima@intel.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [Xen-devel] [PATCH] p2m/ept: pass correct level to atomic_write_ept_entry in ept_invalidate_emt
Date: Wed, 4 Sep 2019 06:50:25 +0000	[thread overview]
Message-ID: <AADFC41AFE54684AB9EE6CBC0274A5D19D562422@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20190829102620.6gut2dmpouynbj44@Air-de-Roger>

> From: Roger Pau Monné [mailto:roger.pau@citrix.com]
> Sent: Thursday, August 29, 2019 6:26 PM
> 
> On Tue, Aug 27, 2019 at 05:23:33PM +0200, Jan Beulich wrote:
> > On 23.08.2019 07:58,  Tian, Kevin  wrote:
> > > > From: Roger Pau Monne [mailto:roger.pau@citrix.com]
> > > > Sent: Tuesday, August 20, 2019 11:38 PM
> > > >
> > > > The level passed to ept_invalidate_emt corresponds to the EPT entry
> > > > passed as the mfn parameter, which is a pointer to an EPT page table,
> > > > hence the entries in that page table will have one level less than the
> > > > parent.
> > > >
> > > > Fix the call to atomic_write_ept_entry to pass the correct level, ie:
> > > > one level less than the parent.
> > > >
> > > > Fixes: 50fe6e73705 ('pvh dom0: add and remove foreign pages')
> > > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > > > ---
> > > > Cc: Jun Nakajima <jun.nakajima@intel.com>
> > > > Cc: Kevin Tian <kevin.tian@intel.com>
> > > > Cc: George Dunlap <george.dunlap@eu.citrix.com>
> > > > Cc: Jan Beulich <jbeulich@suse.com>
> > > > Cc: Andrew Cooper <andrew.cooper3@citrix.com>
> > > > Cc: Wei Liu <wl@xen.org>
> > > > Cc: Sergey Dyasli <sergey.dyasli@citrix.com>
> > > > Cc: Paul Durrant <paul.durrant@citrix.com>
> > > > ---
> > > >   xen/arch/x86/mm/p2m-ept.c | 2 +-
> > > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
> > > > index 6b8468c793..23ae6e9da3 100644
> > > > --- a/xen/arch/x86/mm/p2m-ept.c
> > > > +++ b/xen/arch/x86/mm/p2m-ept.c
> > > > @@ -367,7 +367,7 @@ static bool_t ept_invalidate_emt(struct
> p2m_domain
> > > > *p2m, mfn_t mfn,
> > > >           e.emt = MTRR_NUM_TYPES;
> > > >           if ( recalc )
> > > >               e.recalc = 1;
> > > > -        rc = atomic_write_ept_entry(p2m, &epte[i], e, level);
> > > > +        rc = atomic_write_ept_entry(p2m, &epte[i], e, level - 1);
> > > >           ASSERT(rc == 0);
> > > >           changed = 1;
> > > >       }
> > >
> > > Reviewed-by: Kevin Tian <kevin.tian@intel.com>.
> > >
> > > One small comment about readability. What about renaming 'level'
> > > to 'parent_level' in this function?
> >
> > And also taking the opportunity and making it unsigned int?
> 
> I've been thinking about this, and I'm not sure renaming level to
> parent_level is correct, level actually matches the level of the mfn
> also passed as a parameter, and hence it's correct. It's the function
> itself that actually iterates over the page table entries, and hence
> descends one level into the page tables.
> 
> ie: I could add something like ASSERT(level) to make sure no level 0
> entries are passed to the function, but renaming doesn't seem correct
> to me.
> 

The problem to me is that it is very obscure about what a 'level' actually
means. Although I figured it out last time when reviewing this patch,
now I'm getting confused again when looking at related code. e.g., you
minus level by one in this patch when invoking atomic_write_ept_entry,
while the latter increments the level by one when invoking p2m_entry_
modify. They are all about entry update according to the function name,
but clearly the level means different thing. :/

specifically for this patch, maybe call ept_invalidate_emt_subtree can
also improve readability a bit, along with ASSERT(level) thing?

Thanks
Kevin

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  parent reply	other threads:[~2019-09-04  6:51 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-20 15:37 [Xen-devel] [PATCH] p2m/ept: pass correct level to atomic_write_ept_entry in ept_invalidate_emt Roger Pau Monne
2019-08-23  5:58 ` Tian, Kevin
2019-08-23  9:47   ` Roger Pau Monné
2019-08-27 15:23   ` Jan Beulich
2019-08-29 10:26     ` Roger Pau Monné
2019-08-29 10:35       ` Jan Beulich
2019-09-04  6:50       ` Tian, Kevin [this message]
2019-09-04 14:15         ` Roger Pau Monné

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=AADFC41AFE54684AB9EE6CBC0274A5D19D562422@SHSMSX104.ccr.corp.intel.com \
    --to=kevin.tian@intel.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=george.dunlap@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=jun.nakajima@intel.com \
    --cc=paul.durrant@citrix.com \
    --cc=roger.pau@citrix.com \
    --cc=sergey.dyasli@citrix.com \
    --cc=wl@xen.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 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).