diff options
| -rw-r--r-- | arch/x86/include/uapi/asm/mce.h | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/include/uapi/asm/mce.h b/arch/x86/include/uapi/asm/mce.h index 91723461dc1f..435db58a7bad 100644 --- a/arch/x86/include/uapi/asm/mce.h +++ b/arch/x86/include/uapi/asm/mce.h | |||
| @@ -30,6 +30,7 @@ struct mce { | |||
| 30 | __u64 synd; /* MCA_SYND MSR: only valid on SMCA systems */ | 30 | __u64 synd; /* MCA_SYND MSR: only valid on SMCA systems */ |
| 31 | __u64 ipid; /* MCA_IPID MSR: only valid on SMCA systems */ | 31 | __u64 ipid; /* MCA_IPID MSR: only valid on SMCA systems */ |
| 32 | __u64 ppin; /* Protected Processor Inventory Number */ | 32 | __u64 ppin; /* Protected Processor Inventory Number */ |
| 33 | __u32 microcode;/* Microcode revision */ | ||
| 33 | }; | 34 | }; |
| 34 | 35 | ||
| 35 | #define MCE_GET_RECORD_LEN _IOR('M', 1, int) | 36 | #define MCE_GET_RECORD_LEN _IOR('M', 1, int) |
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 8ff94d1e2dce..b3323cab9139 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
| @@ -130,6 +130,8 @@ void mce_setup(struct mce *m) | |||
| 130 | 130 | ||
| 131 | if (this_cpu_has(X86_FEATURE_INTEL_PPIN)) | 131 | if (this_cpu_has(X86_FEATURE_INTEL_PPIN)) |
| 132 | rdmsrl(MSR_PPIN, m->ppin); | 132 | rdmsrl(MSR_PPIN, m->ppin); |
| 133 | |||
| 134 | m->microcode = boot_cpu_data.microcode; | ||
| 133 | } | 135 | } |
| 134 | 136 | ||
| 135 | DEFINE_PER_CPU(struct mce, injectm); | 137 | DEFINE_PER_CPU(struct mce, injectm); |
| @@ -262,7 +264,7 @@ static void __print_mce(struct mce *m) | |||
| 262 | */ | 264 | */ |
| 263 | pr_emerg(HW_ERR "PROCESSOR %u:%x TIME %llu SOCKET %u APIC %x microcode %x\n", | 265 | pr_emerg(HW_ERR "PROCESSOR %u:%x TIME %llu SOCKET %u APIC %x microcode %x\n", |
| 264 | m->cpuvendor, m->cpuid, m->time, m->socketid, m->apicid, | 266 | m->cpuvendor, m->cpuid, m->time, m->socketid, m->apicid, |
| 265 | cpu_data(m->extcpu).microcode); | 267 | m->microcode); |
| 266 | } | 268 | } |
| 267 | 269 | ||
| 268 | static void print_mce(struct mce *m) | 270 | static void print_mce(struct mce *m) |
