mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/spec-ctrl: Widen the {xen,last,default}_spec_ctrl fields
Right now, they're all bytes, but MSR_SPEC_CTRL has been steadily gaining new
features.
No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
(cherry picked from commit 45dac88e78)
This commit is contained in:
1 parent
598e010ada
commit
d7b6631ca8
6 files changed
+13
-13
No files matched your search
@@ -61,14 +61,14 @@ __UNLIKELY_END(nsvm_hap)
|
||||
/* SPEC_CTRL_EXIT_TO_SVM Req: b=curr %rsp=regs/cpuinfo, Clob: acd */
|
||||
.macro svm_vmentry_spec_ctrl
|
||||
mov VCPU_arch_msrs(%rbx), %rax
|
||||
movzbl CPUINFO_last_spec_ctrl(%rsp), %edx
|
||||
mov CPUINFO_last_spec_ctrl(%rsp), %edx
|
||||
mov VCPUMSR_spec_ctrl_raw(%rax), %eax
|
||||
cmp %edx, %eax
|
||||
je 1f /* Skip write if value is correct. */
|
||||
mov $MSR_SPEC_CTRL, %ecx
|
||||
xor %edx, %edx
|
||||
wrmsr
|
||||
mov %al, CPUINFO_last_spec_ctrl(%rsp)
|
||||
mov %eax, CPUINFO_last_spec_ctrl(%rsp)
|
||||
1: /* No Spectre v1 concerns. Execution will hit VMRUN imminently. */
|
||||
.endm
|
||||
ALTERNATIVE "", svm_vmentry_spec_ctrl, X86_FEATURE_SC_MSR_HVM
|
||||
@@ -128,14 +128,14 @@ __UNLIKELY_END(nsvm_hap)
|
||||
* safe to use. The guest's setting resides in the VMCB.
|
||||
*/
|
||||
.macro svm_vmexit_spec_ctrl
|
||||
movzbl CPUINFO_xen_spec_ctrl(%rsp), %eax
|
||||
movzbl CPUINFO_last_spec_ctrl(%rsp), %edx
|
||||
mov CPUINFO_xen_spec_ctrl(%rsp), %eax
|
||||
mov CPUINFO_last_spec_ctrl(%rsp), %edx
|
||||
cmp %edx, %eax
|
||||
je 1f /* Skip write if value is correct. */
|
||||
mov $MSR_SPEC_CTRL, %ecx
|
||||
xor %edx, %edx
|
||||
wrmsr
|
||||
mov %al, CPUINFO_last_spec_ctrl(%rsp)
|
||||
mov %eax, CPUINFO_last_spec_ctrl(%rsp)
|
||||
1:
|
||||
.endm
|
||||
ALTERNATIVE "", svm_vmexit_spec_ctrl, X86_FEATURE_SC_MSR_HVM
|
||||
|
||||
@@ -52,7 +52,7 @@ ENTRY(vmx_asm_vmexit_handler)
|
||||
*/
|
||||
.macro restore_spec_ctrl
|
||||
mov $MSR_SPEC_CTRL, %ecx
|
||||
movzbl CPUINFO_xen_spec_ctrl(%rsp), %eax
|
||||
mov CPUINFO_xen_spec_ctrl(%rsp), %eax
|
||||
xor %edx, %edx
|
||||
wrmsr
|
||||
.endm
|
||||
|
||||
@@ -66,7 +66,7 @@ bool __read_mostly opt_branch_harden = true;
|
||||
static bool __initdata opt_lock_harden;
|
||||
|
||||
bool __initdata bsp_delay_spec_ctrl;
|
||||
uint8_t __read_mostly default_xen_spec_ctrl;
|
||||
unsigned int __read_mostly default_xen_spec_ctrl;
|
||||
uint8_t __read_mostly default_scf;
|
||||
|
||||
paddr_t __read_mostly l1tf_addr_mask, __read_mostly l1tf_safe_maddr;
|
||||
|
||||
@@ -55,8 +55,8 @@ struct cpu_info {
|
||||
|
||||
/* See asm-x86/spec_ctrl_asm.h for usage. */
|
||||
unsigned int shadow_spec_ctrl;
|
||||
uint8_t xen_spec_ctrl;
|
||||
uint8_t last_spec_ctrl;
|
||||
unsigned int xen_spec_ctrl;
|
||||
unsigned int last_spec_ctrl;
|
||||
uint8_t scf; /* SCF_* */
|
||||
|
||||
/*
|
||||
|
||||
@@ -94,7 +94,7 @@ extern int8_t opt_l1d_flush;
|
||||
extern bool opt_branch_harden;
|
||||
|
||||
extern bool bsp_delay_spec_ctrl;
|
||||
extern uint8_t default_xen_spec_ctrl;
|
||||
extern unsigned int default_xen_spec_ctrl;
|
||||
extern uint8_t default_scf;
|
||||
|
||||
extern int8_t opt_xpti_hwdom, opt_xpti_domu;
|
||||
|
||||
@@ -217,10 +217,10 @@
|
||||
setnz %al
|
||||
not %eax
|
||||
and %al, STACK_CPUINFO_FIELD(scf)(%r14)
|
||||
movzbl STACK_CPUINFO_FIELD(xen_spec_ctrl)(%r14), %eax
|
||||
mov STACK_CPUINFO_FIELD(xen_spec_ctrl)(%r14), %eax
|
||||
.else
|
||||
andb $~SCF_use_shadow, CPUINFO_scf(%rsp)
|
||||
movzbl CPUINFO_xen_spec_ctrl(%rsp), %eax
|
||||
mov CPUINFO_xen_spec_ctrl(%rsp), %eax
|
||||
.endif
|
||||
|
||||
wrmsr
|
||||
@@ -418,7 +418,7 @@
|
||||
|
||||
/* Load Xen's intended value. */
|
||||
mov $MSR_SPEC_CTRL, %ecx
|
||||
movzbl STACK_CPUINFO_FIELD(xen_spec_ctrl)(%r14), %eax
|
||||
mov STACK_CPUINFO_FIELD(xen_spec_ctrl)(%r14), %eax
|
||||
wrmsr
|
||||
|
||||
.L\@_skip_msr_spec_ctrl:
|
||||
|
||||