Browse Source

x86/microcode: Convert to bare minimum MSR accessors

Having tracepoints to the MSR accessors makes them unsuitable for early
microcode loading: think 32-bit before paging is enabled and us chasing
pointers to test whether a tracepoint is enabled or not. Results in a
reliable triple fault.

Convert to the bare ones.

Signed-off-by: Borislav Petkov <bp@suse.de>
Link: http://lkml.kernel.org/r/20170120202955.4091-4-bp@alien8.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Borislav Petkov 8 years ago
parent
commit
0c12d18ab9
1 changed files with 4 additions and 5 deletions
  1. 4 5
      arch/x86/include/asm/microcode.h

+ 4 - 5
arch/x86/include/asm/microcode.h

@@ -7,18 +7,17 @@
 
 
 #define native_rdmsr(msr, val1, val2)			\
 #define native_rdmsr(msr, val1, val2)			\
 do {							\
 do {							\
-	u64 __val = native_read_msr((msr));		\
+	u64 __val = __rdmsr((msr));			\
 	(void)((val1) = (u32)__val);			\
 	(void)((val1) = (u32)__val);			\
 	(void)((val2) = (u32)(__val >> 32));		\
 	(void)((val2) = (u32)(__val >> 32));		\
 } while (0)
 } while (0)
 
 
 #define native_wrmsr(msr, low, high)			\
 #define native_wrmsr(msr, low, high)			\
-	native_write_msr(msr, low, high)
+	__wrmsr(msr, low, high)
 
 
 #define native_wrmsrl(msr, val)				\
 #define native_wrmsrl(msr, val)				\
-	native_write_msr((msr),				\
-			 (u32)((u64)(val)),		\
-			 (u32)((u64)(val) >> 32))
+	__wrmsr((msr), (u32)((u64)(val)),		\
+		       (u32)((u64)(val) >> 32))
 
 
 struct ucode_patch {
 struct ucode_patch {
 	struct list_head plist;
 	struct list_head plist;