]> xenbits.xensource.com Git - xen.git/commitdiff
x86/setup: Intoduce XEN_MSR_STAR
authorAndrew Cooper <andrew.cooper3@citrix.com>
Sun, 18 Dec 2016 14:56:28 +0000 (14:56 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 21 Feb 2017 11:06:39 +0000 (11:06 +0000)
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 <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/acpi/suspend.c
xen/arch/x86/x86_64/traps.c
xen/include/asm-x86/processor.h

index 015e10e30ae88f74882fc2eeee31ae26c84607fd..044bd8159438fe3734f508a2b858c6f32af3dc03 100644 (file)
@@ -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);
index 8d5f901a81e80cc1581c41b6433c20f3e67cf1c8..9f0ee0968c87cad45a56d7ad25555868a6fb2d7d 100644 (file)
@@ -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)
index c5061182639e16dd5cf1112dbfa49a753f309c8e..dda8b8307849515c0e46e8e774efe7daf1d85c7f 100644 (file)
@@ -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)