[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 3/9] x86/mm: add disallow_mask parameter to get_page_from_l1e
>>> On 13.02.18 at 21:04, <wei.liu2@xxxxxxxxxx> wrote: > --- a/xen/arch/x86/mm/shadow/multi.c > +++ b/xen/arch/x86/mm/shadow/multi.c You should have Cc-ed Tim. > @@ -858,13 +858,21 @@ shadow_get_page_from_l1e(shadow_l1e_t sl1e, struct > domain *d, p2m_type_t type) > int res; > mfn_t mfn; > struct domain *owner; > + /* The disallow mask is taken from arch/x86/mm.c for HVM guest */ > + uint32_t disallow_mask = > + ~(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | > + _PAGE_DIRTY | _PAGE_AVAIL | _PAGE_AVAIL_HIGH | _PAGE_NX); > > + disallow_mask = (disallow_mask | _PAGE_GNTTAB) & ~_PAGE_GLOBAL; > + disallow_mask &= ~PAGE_CACHE_ATTRS; If any of this is needed in the first place (see below), at least this last line could be folded into the variable's initializer as it looks. > + ASSERT(is_hvm_domain(d)); > ASSERT(!sh_l1e_is_magic(sl1e)); > > if ( !shadow_mode_refcounts(d) ) > return 1; > > - res = get_page_from_l1e(sl1e, d, d); > + res = get_page_from_l1e(sl1e, d, d, disallow_mask); > > // If a privileged domain is attempting to install a map of a page it > does > // not own, we let it succeed anyway. > @@ -877,7 +885,7 @@ shadow_get_page_from_l1e(shadow_l1e_t sl1e, struct domain > *d, p2m_type_t type) > { > res = xsm_priv_mapping(XSM_TARGET, d, owner); > if ( !res ) { > - res = get_page_from_l1e(sl1e, d, owner); > + res = get_page_from_l1e(sl1e, d, owner, disallow_mask); Since I dislike what patch 2 does I'd really like to first understand what sense a disallow mask makes for a HVM guest (note that PV guests won't make it here due to the shadow_mode_refcounts(d) check just out of patch context. And then even if this is necessary for HVM, I still don't really see why the necessary logic can't remain in get_page_from_l1e(). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |