From: Andrew Cooper Date: Sun, 18 Dec 2016 14:56:28 +0000 (+0000) Subject: x86/setup: Intoduce XEN_MSR_STAR X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~2731 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=36b35babdf381b8e2843d37e29da2ddc01ec3282;p=xen.git x86/setup: Intoduce XEN_MSR_STAR Xen's choice of the MSR_STAR value is constant across all pcpus. Introduce a new define and use it to avoid the opencoding in subarch_percpu_traps_init() and restore_rest_processor_state(). Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- diff --git a/xen/arch/x86/acpi/suspend.c b/xen/arch/x86/acpi/suspend.c index 015e10e30a..044bd81594 100644 --- a/xen/arch/x86/acpi/suspend.c +++ b/xen/arch/x86/acpi/suspend.c @@ -53,8 +53,8 @@ void restore_rest_processor_state(void) /* Recover syscall MSRs */ wrmsrl(MSR_LSTAR, saved_lstar); wrmsrl(MSR_CSTAR, saved_cstar); - wrmsr(MSR_STAR, 0, (FLAT_RING3_CS32<<16) | __HYPERVISOR_CS); - wrmsr(MSR_SYSCALL_MASK, XEN_SYSCALL_MASK, 0U); + wrmsrl(MSR_STAR, XEN_MSR_STAR); + wrmsrl(MSR_SYSCALL_MASK, XEN_SYSCALL_MASK); wrfsbase(saved_fs_base); wrgsbase(saved_gs_base); diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c index 8d5f901a81..9f0ee0968c 100644 --- a/xen/arch/x86/x86_64/traps.c +++ b/xen/arch/x86/x86_64/traps.c @@ -414,8 +414,8 @@ void subarch_percpu_traps_init(void) unmap_domain_page(stub_page); /* Common SYSCALL parameters. */ - wrmsr(MSR_STAR, 0, ((unsigned int)FLAT_RING3_CS32 << 16) | __HYPERVISOR_CS); - wrmsr(MSR_SYSCALL_MASK, XEN_SYSCALL_MASK, 0U); + wrmsrl(MSR_STAR, XEN_MSR_STAR); + wrmsrl(MSR_SYSCALL_MASK, XEN_SYSCALL_MASK); } void init_int80_direct_trap(struct vcpu *v) diff --git a/xen/include/asm-x86/processor.h b/xen/include/asm-x86/processor.h index c506118263..dda8b83078 100644 --- a/xen/include/asm-x86/processor.h +++ b/xen/include/asm-x86/processor.h @@ -86,6 +86,9 @@ #define XEN_CR4_PV32_BITS (X86_CR4_SMEP|X86_CR4_SMAP) +/* Common SYSCALL parameters. */ +#define XEN_MSR_STAR (((uint64_t)FLAT_RING3_CS32 << 48) | \ + ((uint64_t)__HYPERVISOR_CS << 32)) #define XEN_SYSCALL_MASK (X86_EFLAGS_AC|X86_EFLAGS_VM|X86_EFLAGS_RF| \ X86_EFLAGS_NT|X86_EFLAGS_DF|X86_EFLAGS_IF| \ X86_EFLAGS_TF)