[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] x86/nestedhvm: provide some stubs for p2m code
commit e5d6ddcd31a6113e4a3db7a235ca78770fe8f401 Author: Wei Liu <wei.liu2@xxxxxxxxxx> AuthorDate: Mon Aug 13 15:02:32 2018 +0100 Commit: Wei Liu <wei.liu2@xxxxxxxxxx> CommitDate: Sun Aug 26 11:01:03 2018 +0100 x86/nestedhvm: provide some stubs for p2m code Make two functions static inline so that they can be referenced in p2m code. Check nestedhvm is enabled before calling nestedhvm_vmcx_flushtlb (which also has a side effect of not issuing unnecessary IPIs for non-nested case). While moving, reformat code and use proper boolean. Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/hvm/nestedhvm.c | 21 --------------------- xen/arch/x86/mm/p2m.c | 3 ++- xen/include/asm-x86/hvm/nestedhvm.h | 16 ++++++++++++++-- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/xen/arch/x86/hvm/nestedhvm.c b/xen/arch/x86/hvm/nestedhvm.c index ab50b2ab98..bd1101987d 100644 --- a/xen/arch/x86/hvm/nestedhvm.c +++ b/xen/arch/x86/hvm/nestedhvm.c @@ -26,13 +26,6 @@ static unsigned long *shadow_io_bitmap[3]; -/* Nested HVM on/off per domain */ -bool nestedhvm_enabled(const struct domain *d) -{ - return is_hvm_domain(d) && d->arch.hvm_domain.params && - d->arch.hvm_domain.params[HVM_PARAM_NESTEDHVM]; -} - /* Nested VCPU */ bool_t nestedhvm_vcpu_in_guestmode(struct vcpu *v) @@ -120,20 +113,6 @@ nestedhvm_vmcx_flushtlb(struct p2m_domain *p2m) cpumask_clear(p2m->dirty_cpumask); } -bool_t -nestedhvm_is_n2(struct vcpu *v) -{ - if (!nestedhvm_enabled(v->domain) - || nestedhvm_vmswitch_in_progress(v) - || !nestedhvm_paging_mode_hap(v)) - return 0; - - if (nestedhvm_vcpu_in_guestmode(v)) - return 1; - - return 0; -} - /* Common shadow IO Permission bitmap */ /* There four global patterns of io bitmap each guest can diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c index 8e9fbb5a14..1089b86505 100644 --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -1756,7 +1756,8 @@ p2m_flush_table_locked(struct p2m_domain *p2m) p2m->np2m_generation++; /* Make sure nobody else is using this p2m table */ - nestedhvm_vmcx_flushtlb(p2m); + if ( nestedhvm_enabled(d) ) + nestedhvm_vmcx_flushtlb(p2m); /* Zap the top level of the trie */ mfn = pagetable_get_mfn(p2m_get_pagetable(p2m)); diff --git a/xen/include/asm-x86/hvm/nestedhvm.h b/xen/include/asm-x86/hvm/nestedhvm.h index 47165fcb96..3c810b72f0 100644 --- a/xen/include/asm-x86/hvm/nestedhvm.h +++ b/xen/include/asm-x86/hvm/nestedhvm.h @@ -33,7 +33,11 @@ enum nestedhvm_vmexits { }; /* Nested HVM on/off per domain */ -bool nestedhvm_enabled(const struct domain *d); +static inline bool nestedhvm_enabled(const struct domain *d) +{ + return is_hvm_domain(d) && d->arch.hvm_domain.params && + d->arch.hvm_domain.params[HVM_PARAM_NESTEDHVM]; +} /* Nested VCPU */ int nestedhvm_vcpu_initialise(struct vcpu *v); @@ -70,7 +74,15 @@ unsigned long *nestedhvm_vcpu_iomap_get(bool_t ioport_80, bool_t ioport_ed); void nestedhvm_vmcx_flushtlb(struct p2m_domain *p2m); -bool_t nestedhvm_is_n2(struct vcpu *v); +static inline bool nestedhvm_is_n2(struct vcpu *v) +{ + if ( !nestedhvm_enabled(v->domain) || + nestedhvm_vmswitch_in_progress(v) || + !nestedhvm_paging_mode_hap(v) ) + return false; + + return nestedhvm_vcpu_in_guestmode(v); +} static inline void nestedhvm_set_cr(struct vcpu *v, unsigned int cr, unsigned long value) -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |