diff options
| author | Borislav Petkov <bp@suse.de> | 2013-12-04 06:31:31 -0500 |
|---|---|---|
| committer | Borislav Petkov <bp@suse.de> | 2014-01-13 13:57:27 -0500 |
| commit | e1b43e3f13f7157249fb962ccf88b84eb0421fb4 (patch) | |
| tree | ba9ef92b4dc9cfe9baaae81b2af7f2cde41799d3 | |
| parent | 5aa3d718f259007121b9366d36315fb8a2983d3d (diff) | |
x86, microcode: Share native MSR accessing variants
We want to use those in AMD's early loading path too. Also, add a
native_wrmsrl variant.
Signed-off-by: Borislav Petkov <bp@suse.de>
Tested-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
| -rw-r--r-- | arch/x86/include/asm/microcode.h | 15 | ||||
| -rw-r--r-- | arch/x86/kernel/microcode_intel_early.c | 10 |
2 files changed, 15 insertions, 10 deletions
diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h index f98bd6625318..b59827e76529 100644 --- a/arch/x86/include/asm/microcode.h +++ b/arch/x86/include/asm/microcode.h | |||
| @@ -1,6 +1,21 @@ | |||
| 1 | #ifndef _ASM_X86_MICROCODE_H | 1 | #ifndef _ASM_X86_MICROCODE_H |
| 2 | #define _ASM_X86_MICROCODE_H | 2 | #define _ASM_X86_MICROCODE_H |
| 3 | 3 | ||
| 4 | #define native_rdmsr(msr, val1, val2) \ | ||
| 5 | do { \ | ||
| 6 | u64 __val = native_read_msr((msr)); \ | ||
| 7 | (void)((val1) = (u32)__val); \ | ||
| 8 | (void)((val2) = (u32)(__val >> 32)); \ | ||
| 9 | } while (0) | ||
| 10 | |||
| 11 | #define native_wrmsr(msr, low, high) \ | ||
| 12 | native_write_msr(msr, low, high) | ||
| 13 | |||
| 14 | #define native_wrmsrl(msr, val) \ | ||
| 15 | native_write_msr((msr), \ | ||
| 16 | (u32)((u64)(val)), \ | ||
| 17 | (u32)((u64)(val) >> 32)) | ||
| 18 | |||
| 4 | struct cpu_signature { | 19 | struct cpu_signature { |
| 5 | unsigned int sig; | 20 | unsigned int sig; |
| 6 | unsigned int pf; | 21 | unsigned int pf; |
diff --git a/arch/x86/kernel/microcode_intel_early.c b/arch/x86/kernel/microcode_intel_early.c index 1575deb2e636..18f739129e72 100644 --- a/arch/x86/kernel/microcode_intel_early.c +++ b/arch/x86/kernel/microcode_intel_early.c | |||
| @@ -365,16 +365,6 @@ out: | |||
| 365 | return state; | 365 | return state; |
| 366 | } | 366 | } |
| 367 | 367 | ||
| 368 | #define native_rdmsr(msr, val1, val2) \ | ||
| 369 | do { \ | ||
| 370 | u64 __val = native_read_msr((msr)); \ | ||
| 371 | (void)((val1) = (u32)__val); \ | ||
| 372 | (void)((val2) = (u32)(__val >> 32)); \ | ||
| 373 | } while (0) | ||
| 374 | |||
| 375 | #define native_wrmsr(msr, low, high) \ | ||
| 376 | native_write_msr(msr, low, high); | ||
| 377 | |||
| 378 | static int collect_cpu_info_early(struct ucode_cpu_info *uci) | 368 | static int collect_cpu_info_early(struct ucode_cpu_info *uci) |
| 379 | { | 369 | { |
| 380 | unsigned int val[2]; | 370 | unsigned int val[2]; |
