x86/bugs: Expose x86_spec_ctrl_base directly
[linux-2.6-block.git] / arch / x86 / include / asm / nospec-branch.h
index bc258e644e5e8b3cc814f103f24ad522cc040eea..8d9deec00de94f53d77473417949d6a4ef1ea6df 100644 (file)
@@ -217,16 +217,7 @@ enum spectre_v2_mitigation {
        SPECTRE_V2_IBRS,
 };
 
-/*
- * The Intel specification for the SPEC_CTRL MSR requires that we
- * preserve any already set reserved bits at boot time (e.g. for
- * future additions that this kernel is not currently aware of).
- * We then set any additional mitigation bits that we want
- * ourselves and always use this as the base for SPEC_CTRL.
- * We also use this when handling guest entry/exit as below.
- */
 extern void x86_spec_ctrl_set(u64);
-extern u64 x86_spec_ctrl_get_default(void);
 
 /* The Speculative Store Bypass disable variants */
 enum ssb_mitigation {
@@ -278,6 +269,9 @@ static inline void indirect_branch_prediction_barrier(void)
        alternative_msr_write(MSR_IA32_PRED_CMD, val, X86_FEATURE_USE_IBPB);
 }
 
+/* The Intel SPEC CTRL MSR base value cache */
+extern u64 x86_spec_ctrl_base;
+
 /*
  * With retpoline, we must use IBRS to restrict branch prediction
  * before calling into firmware.
@@ -286,7 +280,7 @@ static inline void indirect_branch_prediction_barrier(void)
  */
 #define firmware_restrict_branch_speculation_start()                   \
 do {                                                                   \
-       u64 val = x86_spec_ctrl_get_default() | SPEC_CTRL_IBRS;         \
+       u64 val = x86_spec_ctrl_base | SPEC_CTRL_IBRS;                  \
                                                                        \
        preempt_disable();                                              \
        alternative_msr_write(MSR_IA32_SPEC_CTRL, val,                  \
@@ -295,7 +289,7 @@ do {                                                                        \
 
 #define firmware_restrict_branch_speculation_end()                     \
 do {                                                                   \
-       u64 val = x86_spec_ctrl_get_default();                          \
+       u64 val = x86_spec_ctrl_base;                                   \
                                                                        \
        alternative_msr_write(MSR_IA32_SPEC_CTRL, val,                  \
                              X86_FEATURE_USE_IBRS_FW);                 \