[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V2 2/2] x86/mm: Make use of the default access param from xc_altp2m_create_view
On 06.11.2019 16:35, Alexandru Stefan ISAILA wrote: > --- a/xen/arch/x86/mm/p2m-ept.c > +++ b/xen/arch/x86/mm/p2m-ept.c > @@ -1345,13 +1345,14 @@ void setup_ept_dump(void) > register_keyhandler('D', ept_dump_p2m_table, "dump VT-x EPT tables", 0); > } > > -void p2m_init_altp2m_ept(struct domain *d, unsigned int i) > +void p2m_init_altp2m_ept(struct domain *d, unsigned int i, > + p2m_access_t default_access) > { > struct p2m_domain *p2m = d->arch.altp2m_p2m[i]; > struct p2m_domain *hostp2m = p2m_get_hostp2m(d); > struct ept_data *ept; > > - p2m->default_access = hostp2m->default_access; > + p2m->default_access = default_access; > p2m->domain = hostp2m->domain; > > p2m->global_logdirty = hostp2m->global_logdirty; All of this is not EPT-specific. Before adding more infrastructure to cover for this (here: another function parameter), how about moving these parts into vendor-independent code? > @@ -2572,17 +2574,36 @@ int p2m_init_altp2m_by_id(struct domain *d, unsigned > int idx) > altp2m_list_lock(d); > > if ( d->arch.altp2m_eptp[idx] == mfn_x(INVALID_MFN) ) > - rc = p2m_activate_altp2m(d, idx); > + rc = p2m_activate_altp2m(d, idx, hostp2m->default_access); > > altp2m_list_unlock(d); > return rc; > } > > -int p2m_init_next_altp2m(struct domain *d, uint16_t *idx) > +int p2m_init_next_altp2m(struct domain *d, uint16_t *idx, > + uint16_t hvmmem_default_access) > { > int rc = -EINVAL; > unsigned int i; > > + static const p2m_access_t memaccess[] = { > +#define ACCESS(ac) [XENMEM_access_##ac] = p2m_access_##ac > + ACCESS(n), > + ACCESS(r), > + ACCESS(w), > + ACCESS(rw), > + ACCESS(x), > + ACCESS(rx), > + ACCESS(wx), > + ACCESS(rwx), > + ACCESS(rx2rw), > + ACCESS(n2rwx), > +#undef ACCESS > + }; > + > + if ( hvmmem_default_access > XENMEM_access_default ) > + return rc; > + > altp2m_list_lock(d); > > for ( i = 0; i < MAX_ALTP2M; i++ ) > @@ -2590,7 +2611,7 @@ int p2m_init_next_altp2m(struct domain *d, uint16_t > *idx) > if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) ) > continue; > > - rc = p2m_activate_altp2m(d, i); > + rc = p2m_activate_altp2m(d, i, memaccess[hvmmem_default_access]); Aren't you open-coding xenmem_access_to_p2m_access() here? In no event should there be two instances of the same static array. 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 |