[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V10 PATCH 3/4] pvh dom0: Add and remove foreign pages
>>> On 03.05.14 at 01:35, <mukesh.rathor@xxxxxxxxxx> wrote: > On Fri, 2 May 2014 10:55:55 +0200 > Tim Deegan <tim@xxxxxxx> wrote: >> At 18:45 -0700 on 01 May (1398966318), Mukesh Rathor wrote: >> > On Thu, 1 May 2014 18:19:08 +0200 >> > Tim Deegan <tim@xxxxxxx> wrote: >> > > At 18:06 -0700 on 29 Apr (1398791207), Mukesh Rathor wrote: >> > > > diff --git a/xen/arch/x86/mm/p2m-ept.c >> > > > b/xen/arch/x86/mm/p2m-ept.c index c0bfc50..11474e8 100644 >> > > > --- a/xen/arch/x86/mm/p2m-ept.c >> > > > +++ b/xen/arch/x86/mm/p2m-ept.c >> > > > @@ -36,8 +36,6 @@ >> > > > >> > > > #define >> > > > atomic_read_ept_entry(__pepte) \ >> > > > ( (ept_entry_t) { .epte = read_atomic(&(__pepte)->epte) } ) >> > > > -#define atomic_write_ept_entry(__pepte, >> > > > __epte) \ >> > > > - write_atomic(&(__pepte)->epte, (__epte).epte) >> > > > >> > > > #define is_epte_present(ept_entry) ((ept_entry)->epte & >> > > > 0x7) #define is_epte_superpage(ept_entry) ((ept_entry)->sp) >> > > > @@ -46,6 +44,46 @@ static inline bool_t >> > > > is_epte_valid(ept_entry_t *e) return (e->epte != 0 && >> > > > e->sa_p2mt != p2m_invalid); } >> > > > >> > > > +/* returns : 0 for success, -errno otherwise */ >> > > > +static int atomic_write_ept_entry(ept_entry_t *entryptr, >> > > > ept_entry_t new, >> > > > + int level) >> > > > +{ >> > > > + bool_t same_mfn = (new.mfn == entryptr->mfn); >> > > > + unsigned long oldmfn = INVALID_MFN; >> > > > + >> > > > + if ( level ) >> > > > + { >> > > >> > > ASSERT(!(new.sp && p2m_is_foreign(new.sa_p2mt))) here? >> > >> > Yeah, I debated adding p2m_is_foreign ASSERT, but didn't because >> > iirc Jan had said he wanted to use up the non-leaf bits for >> > something else in future. >> >> Well, if new.sp is set it's not non-leaf. Though I suppose maybe the >> test should be for _valid_ + superpage + foreign. > > Ok, so looks like: > > ASSERT(new.sa_p2mt == p2m_invalid || > !(new.sp && p2m_is_foreign(new.sa_p2mt))); > > should do it? Decoding this to ASSERT(new.sa_p2mt == p2m_invalid || !new.sp || !p2m_is_foreign(new.sa_p2mt)); makes already clear that the first check is redundant with the last one. I.e. just ASSERT(!new.sp || !p2m_is_foreign(new.sa_p2mt)); would seem to suffice, but then again wouldn't cover intermediate levels (which right not appears to not be a problem). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |