[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.7] xen/x86: convert pv_guest_cr4_to_real_cr4() to a function
commit 3f5bd561d106bd23df520dd6a4b0f36462a7c5e3 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Thu Apr 26 13:33:16 2018 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue May 29 10:47:07 2018 +0200 xen/x86: convert pv_guest_cr4_to_real_cr4() to a function pv_guest_cr4_to_real_cr4() is becoming more and more complex. Convert it from a macro to an ordinary function. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/mm.c | 14 ++++++++++++++ xen/include/asm-x86/domain.h | 11 ++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 54c7480056..9c66db760b 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -497,6 +497,20 @@ void make_cr3(struct vcpu *v, unsigned long mfn) v->arch.cr3 = mfn << PAGE_SHIFT; } +unsigned long pv_guest_cr4_to_real_cr4(const struct vcpu *v) +{ + const struct domain *d = v->domain; + unsigned long cr4; + + cr4 = v->arch.pv_vcpu.ctrlreg[4] & ~X86_CR4_DE; + cr4 |= mmu_cr4_features & (X86_CR4_PSE | X86_CR4_SMEP | X86_CR4_SMAP | + X86_CR4_OSXSAVE | X86_CR4_FSGSBASE); + cr4 |= d->arch.pv_domain.xpti ? 0 : X86_CR4_PGE; + cr4 |= d->arch.vtsc ? X86_CR4_TSD : 0; + + return cr4; +} + void write_ptbase(struct vcpu *v) { struct cpu_info *cpu_info = get_cpu_info(); diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h index 54eba4a52f..ee9f0cc778 100644 --- a/xen/include/asm-x86/domain.h +++ b/xen/include/asm-x86/domain.h @@ -602,15 +602,8 @@ void vcpu_show_registers(const struct vcpu *); unsigned long pv_guest_cr4_fixup(const struct vcpu *, unsigned long guest_cr4); /* Convert between guest-visible and real CR4 values. */ -#define pv_guest_cr4_to_real_cr4(v) \ - (((v)->arch.pv_vcpu.ctrlreg[4] \ - | (mmu_cr4_features \ - & (X86_CR4_PSE | X86_CR4_SMEP | \ - X86_CR4_SMAP | X86_CR4_OSXSAVE | \ - X86_CR4_FSGSBASE)) \ - | ((v)->domain->arch.pv_domain.xpti ? 0 : X86_CR4_PGE) \ - | ((v)->domain->arch.vtsc ? X86_CR4_TSD : 0)) \ - & ~X86_CR4_DE) +unsigned long pv_guest_cr4_to_real_cr4(const struct vcpu *v); + #define real_cr4_to_pv_guest_cr4(c) \ ((c) & ~(X86_CR4_PGE | X86_CR4_PSE | X86_CR4_TSD | \ X86_CR4_OSXSAVE | X86_CR4_SMEP | \ -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.7 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |