[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/2] altp2m: Implement p2m_get_mem_access for altp2m views
>>> On 27.01.16 at 21:06, <tlengyel@xxxxxxxxxxx> wrote: > --- a/xen/arch/x86/mm/p2m.c > +++ b/xen/arch/x86/mm/p2m.c > @@ -1572,7 +1572,9 @@ void p2m_mem_access_emulate_check(struct vcpu *v, > bool_t violation = 1; > const struct vm_event_mem_access *data = &rsp->u.mem_access; > > - if ( p2m_get_mem_access(v->domain, _gfn(data->gfn), &access) == 0 ) > + if ( p2m_get_mem_access(v->domain, _gfn(data->gfn), > + altp2m_active(v->domain) ? > vcpu_altp2m(v).p2midx : 0, > + &access) == 0 ) This looks to be a behavioral change beyond what title and description say, and it's not clear whether that's actually the behavior everyone wants. > @@ -1918,9 +1920,10 @@ long p2m_set_mem_access(struct domain *d, gfn_t gfn, > uint32_t nr, > * Get access type for a gfn. > * If gfn == INVALID_GFN, gets the default access type. > */ > -int p2m_get_mem_access(struct domain *d, gfn_t gfn, xenmem_access_t *access) > +int p2m_get_mem_access(struct domain *d, gfn_t gfn, unsigned long altp2m_idx, > + xenmem_access_t *access) > { > - struct p2m_domain *p2m = p2m_get_hostp2m(d); > + struct p2m_domain *hp2m = p2m_get_hostp2m(d), *p2m = NULL; > p2m_type_t t; > p2m_access_t a; > mfn_t mfn; > @@ -1943,10 +1946,22 @@ int p2m_get_mem_access(struct domain *d, gfn_t gfn, > xenmem_access_t *access) > /* If request to get default access. */ > if ( gfn_x(gfn) == INVALID_GFN ) > { > - *access = memaccess[p2m->default_access]; > + *access = memaccess[hp2m->default_access]; > return 0; > } And following the above - why would this not use the altp2m's default access? > + /* altp2m view 0 is treated as the hostp2m */ > + if ( altp2m_idx ) > + { > + if ( altp2m_idx >= MAX_ALTP2M || > + d->arch.altp2m_eptp[altp2m_idx] == INVALID_MFN ) > + return -EINVAL; > + > + p2m = d->arch.altp2m_p2m[altp2m_idx]; > + } > + else > + p2m = hp2m; And I don't see why you need separate p2m and hp2m local variables. > --- a/xen/include/xen/p2m-common.h > +++ b/xen/include/xen/p2m-common.h > @@ -56,6 +56,7 @@ long p2m_set_mem_access(struct domain *d, gfn_t gfn, > uint32_t nr, > * Get access type for a gfn. > * If gfn == INVALID_GFN, gets the default access type. > */ > -int p2m_get_mem_access(struct domain *d, gfn_t gfn, xenmem_access_t *access); > +int p2m_get_mem_access(struct domain *d, gfn_t gfn, unsigned long altp2m_idx, > + xenmem_access_t *access); Same question as for patch 1 regarding the "unsigned long" here. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |