Message ID | 1478821552-1497-4-git-send-email-paul.c.lai@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 10/11/16 23:45, Paul Lai wrote: > The was requested in: > https://lists.xenproject.org/archives/html/xen-devel/2015-07/msg04323.html > Renamed p2m_init_altp2m_helper() to p2m_init_altp2m_ept(). > > Signed-off-by: Paul Lai <paul.c.lai@intel.com> > Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> I think ideally the request reference should go below a '---' at the bottom of the commit message: It's information to the reviewers, but it's not really that relevant to archaeologists (and the link is not unlikely to be broken anyway). That can be fixed up on check-in, so: Reviewed-by: George Dunlap <george.dunlap@citrix.com> > --- > xen/arch/x86/mm/p2m-ept.c | 39 +++++++++++++++++++++++++++++++++++ > xen/arch/x86/mm/p2m.c | 43 ++------------------------------------- > xen/include/asm-x86/hvm/vmx/vmx.h | 3 +++ > xen/include/asm-x86/p2m.h | 9 +++----- > 4 files changed, 47 insertions(+), 47 deletions(-) > > diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c > index 13cab24..04878f5 100644 > --- a/xen/arch/x86/mm/p2m-ept.c > +++ b/xen/arch/x86/mm/p2m-ept.c > @@ -1329,6 +1329,45 @@ 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) > +{ > + struct p2m_domain *p2m = d->arch.altp2m_p2m[i]; > + struct ept_data *ept; > + > + p2m->min_remapped_gfn = gfn_x(INVALID_GFN); > + p2m->max_remapped_gfn = 0; > + ept = &p2m->ept; > + ept->asr = pagetable_get_pfn(p2m_get_pagetable(p2m)); > + d->arch.altp2m_eptp[i] = ept_get_eptp(ept); > +} > + > +unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp) > +{ > + struct p2m_domain *p2m; > + struct ept_data *ept; > + unsigned int i; > + > + altp2m_list_lock(d); > + > + for ( i = 0; i < MAX_ALTP2M; i++ ) > + { > + if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) ) > + continue; > + > + p2m = d->arch.altp2m_p2m[i]; > + ept = &p2m->ept; > + > + if ( eptp == ept_get_eptp(ept) ) > + goto out; > + } > + > + i = INVALID_ALTP2M; > + > + out: > + altp2m_list_unlock(d); > + return i; > +} > + > /* > * Local variables: > * mode: C > diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c > index 6a45185..aa627d8 100644 > --- a/xen/arch/x86/mm/p2m.c > +++ b/xen/arch/x86/mm/p2m.c > @@ -2342,33 +2342,6 @@ int unmap_mmio_regions(struct domain *d, > return i == nr ? 0 : i ?: ret; > } > > -unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp) > -{ > - struct p2m_domain *p2m; > - struct ept_data *ept; > - unsigned int i; > - > - altp2m_list_lock(d); > - > - for ( i = 0; i < MAX_ALTP2M; i++ ) > - { > - if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) ) > - continue; > - > - p2m = d->arch.altp2m_p2m[i]; > - ept = &p2m->ept; > - > - if ( eptp == ept_get_eptp(ept) ) > - goto out; > - } > - > - i = INVALID_ALTP2M; > - > - out: > - altp2m_list_unlock(d); > - return i; > -} > - > bool_t p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx) > { > struct domain *d = v->domain; > @@ -2474,18 +2447,6 @@ void p2m_flush_altp2m(struct domain *d) > altp2m_list_unlock(d); > } > > -static void p2m_init_altp2m_helper(struct domain *d, unsigned int i) > -{ > - struct p2m_domain *p2m = d->arch.altp2m_p2m[i]; > - struct ept_data *ept; > - > - p2m->min_remapped_gfn = gfn_x(INVALID_GFN); > - p2m->max_remapped_gfn = 0; > - ept = &p2m->ept; > - ept->asr = pagetable_get_pfn(p2m_get_pagetable(p2m)); > - d->arch.altp2m_eptp[i] = ept_get_eptp(ept); > -} > - > int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx) > { > int rc = -EINVAL; > @@ -2497,7 +2458,7 @@ int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx) > > if ( d->arch.altp2m_eptp[idx] == mfn_x(INVALID_MFN) ) > { > - p2m_init_altp2m_helper(d, idx); > + p2m_init_altp2m_ept(d, idx); > rc = 0; > } > > @@ -2517,7 +2478,7 @@ int p2m_init_next_altp2m(struct domain *d, uint16_t *idx) > if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) ) > continue; > > - p2m_init_altp2m_helper(d, i); > + p2m_init_altp2m_ept(d, i); > *idx = i; > rc = 0; > > diff --git a/xen/include/asm-x86/hvm/vmx/vmx.h b/xen/include/asm-x86/hvm/vmx/vmx.h > index 4cdd9b1..9f4c7de 100644 > --- a/xen/include/asm-x86/hvm/vmx/vmx.h > +++ b/xen/include/asm-x86/hvm/vmx/vmx.h > @@ -561,6 +561,9 @@ void ept_p2m_uninit(struct p2m_domain *p2m); > void ept_walk_table(struct domain *d, unsigned long gfn); > bool_t ept_handle_misconfig(uint64_t gpa); > void setup_ept_dump(void); > +void p2m_init_altp2m_ept(struct domain *d, unsigned int i); > +/* Locate an alternate p2m by its EPTP */ > +unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp); > > void update_guest_eip(void); > > diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h > index 7035860..0e72880 100644 > --- a/xen/include/asm-x86/p2m.h > +++ b/xen/include/asm-x86/p2m.h > @@ -23,8 +23,8 @@ > * along with this program; If not, see <http://www.gnu.org/licenses/>. > */ > > -#ifndef _XEN_P2M_H > -#define _XEN_P2M_H > +#ifndef _XEN_ASM_X86_P2M_H > +#define _XEN_ASM_X86_P2M_H > > #include <xen/config.h> > #include <xen/paging.h> > @@ -784,9 +784,6 @@ static inline struct p2m_domain *p2m_get_altp2m(struct vcpu *v) > return v->domain->arch.altp2m_p2m[index]; > } > > -/* Locate an alternate p2m by its EPTP */ > -unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp); > - > /* Switch alternate p2m for a single vcpu */ > bool_t p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx); > > @@ -848,7 +845,7 @@ static inline unsigned int p2m_get_iommu_flags(p2m_type_t p2mt) > return flags; > } > > -#endif /* _XEN_P2M_H */ > +#endif /* _XEN_ASM_X86_P2M_H */ > > /* > * Local variables: >
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c index 13cab24..04878f5 100644 --- a/xen/arch/x86/mm/p2m-ept.c +++ b/xen/arch/x86/mm/p2m-ept.c @@ -1329,6 +1329,45 @@ 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) +{ + struct p2m_domain *p2m = d->arch.altp2m_p2m[i]; + struct ept_data *ept; + + p2m->min_remapped_gfn = gfn_x(INVALID_GFN); + p2m->max_remapped_gfn = 0; + ept = &p2m->ept; + ept->asr = pagetable_get_pfn(p2m_get_pagetable(p2m)); + d->arch.altp2m_eptp[i] = ept_get_eptp(ept); +} + +unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp) +{ + struct p2m_domain *p2m; + struct ept_data *ept; + unsigned int i; + + altp2m_list_lock(d); + + for ( i = 0; i < MAX_ALTP2M; i++ ) + { + if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) ) + continue; + + p2m = d->arch.altp2m_p2m[i]; + ept = &p2m->ept; + + if ( eptp == ept_get_eptp(ept) ) + goto out; + } + + i = INVALID_ALTP2M; + + out: + altp2m_list_unlock(d); + return i; +} + /* * Local variables: * mode: C diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c index 6a45185..aa627d8 100644 --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -2342,33 +2342,6 @@ int unmap_mmio_regions(struct domain *d, return i == nr ? 0 : i ?: ret; } -unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp) -{ - struct p2m_domain *p2m; - struct ept_data *ept; - unsigned int i; - - altp2m_list_lock(d); - - for ( i = 0; i < MAX_ALTP2M; i++ ) - { - if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) ) - continue; - - p2m = d->arch.altp2m_p2m[i]; - ept = &p2m->ept; - - if ( eptp == ept_get_eptp(ept) ) - goto out; - } - - i = INVALID_ALTP2M; - - out: - altp2m_list_unlock(d); - return i; -} - bool_t p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx) { struct domain *d = v->domain; @@ -2474,18 +2447,6 @@ void p2m_flush_altp2m(struct domain *d) altp2m_list_unlock(d); } -static void p2m_init_altp2m_helper(struct domain *d, unsigned int i) -{ - struct p2m_domain *p2m = d->arch.altp2m_p2m[i]; - struct ept_data *ept; - - p2m->min_remapped_gfn = gfn_x(INVALID_GFN); - p2m->max_remapped_gfn = 0; - ept = &p2m->ept; - ept->asr = pagetable_get_pfn(p2m_get_pagetable(p2m)); - d->arch.altp2m_eptp[i] = ept_get_eptp(ept); -} - int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx) { int rc = -EINVAL; @@ -2497,7 +2458,7 @@ int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx) if ( d->arch.altp2m_eptp[idx] == mfn_x(INVALID_MFN) ) { - p2m_init_altp2m_helper(d, idx); + p2m_init_altp2m_ept(d, idx); rc = 0; } @@ -2517,7 +2478,7 @@ int p2m_init_next_altp2m(struct domain *d, uint16_t *idx) if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) ) continue; - p2m_init_altp2m_helper(d, i); + p2m_init_altp2m_ept(d, i); *idx = i; rc = 0; diff --git a/xen/include/asm-x86/hvm/vmx/vmx.h b/xen/include/asm-x86/hvm/vmx/vmx.h index 4cdd9b1..9f4c7de 100644 --- a/xen/include/asm-x86/hvm/vmx/vmx.h +++ b/xen/include/asm-x86/hvm/vmx/vmx.h @@ -561,6 +561,9 @@ void ept_p2m_uninit(struct p2m_domain *p2m); void ept_walk_table(struct domain *d, unsigned long gfn); bool_t ept_handle_misconfig(uint64_t gpa); void setup_ept_dump(void); +void p2m_init_altp2m_ept(struct domain *d, unsigned int i); +/* Locate an alternate p2m by its EPTP */ +unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp); void update_guest_eip(void); diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h index 7035860..0e72880 100644 --- a/xen/include/asm-x86/p2m.h +++ b/xen/include/asm-x86/p2m.h @@ -23,8 +23,8 @@ * along with this program; If not, see <http://www.gnu.org/licenses/>. */ -#ifndef _XEN_P2M_H -#define _XEN_P2M_H +#ifndef _XEN_ASM_X86_P2M_H +#define _XEN_ASM_X86_P2M_H #include <xen/config.h> #include <xen/paging.h> @@ -784,9 +784,6 @@ static inline struct p2m_domain *p2m_get_altp2m(struct vcpu *v) return v->domain->arch.altp2m_p2m[index]; } -/* Locate an alternate p2m by its EPTP */ -unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp); - /* Switch alternate p2m for a single vcpu */ bool_t p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx); @@ -848,7 +845,7 @@ static inline unsigned int p2m_get_iommu_flags(p2m_type_t p2mt) return flags; } -#endif /* _XEN_P2M_H */ +#endif /* _XEN_ASM_X86_P2M_H */ /* * Local variables: