diff options
| author | Borislav Petkov <bp@suse.de> | 2016-02-03 06:33:33 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2016-02-09 05:41:16 -0500 |
| commit | b7f500aedd4551a9bf29c617804c13f0ff18c879 (patch) | |
| tree | 6372a89a75758c87ea4a5ac017652e9057bccef4 /arch/x86/kernel/cpu/microcode | |
| parent | 43858f57bc02388a6420321c021397591199cf91 (diff) | |
x86/microcode: Issue update message only once
This is especially annoying on large boxes:
x86: Booting SMP configuration:
.... node #0, CPUs: #1
microcode: CPU1 microcode updated early to revision 0x428, date = 2014-05-29
#2
microcode: CPU2 microcode updated early to revision 0x428, date = 2014-05-29
#3
...
so issue the update message only once.
$ grep microcode /proc/cpuinfo
shows whether every core got updated properly.
Reported-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Thomas Voegtle <tv@lio96.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1454499225-21544-6-git-send-email-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/kernel/cpu/microcode')
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/amd.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/intel.c | 13 |
2 files changed, 7 insertions, 10 deletions
diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c index 2233f8a76615..5b63e2f669b0 100644 --- a/arch/x86/kernel/cpu/microcode/amd.c +++ b/arch/x86/kernel/cpu/microcode/amd.c | |||
| @@ -432,8 +432,8 @@ int __init save_microcode_in_initrd_amd(void) | |||
| 432 | container = cont_va; | 432 | container = cont_va; |
| 433 | 433 | ||
| 434 | if (ucode_new_rev) | 434 | if (ucode_new_rev) |
| 435 | pr_info("microcode: updated early to new patch_level=0x%08x\n", | 435 | pr_info_once("microcode updated early to new patch_level=0x%08x\n", |
| 436 | ucode_new_rev); | 436 | ucode_new_rev); |
| 437 | 437 | ||
| 438 | eax = cpuid_eax(0x00000001); | 438 | eax = cpuid_eax(0x00000001); |
| 439 | eax = ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff); | 439 | eax = ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff); |
diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c index 4f4735bd8698..f4bc5fe00d46 100644 --- a/arch/x86/kernel/cpu/microcode/intel.c +++ b/arch/x86/kernel/cpu/microcode/intel.c | |||
| @@ -571,14 +571,11 @@ scan_microcode(struct mc_saved_data *mc_saved_data, unsigned long *initrd, | |||
| 571 | static void | 571 | static void |
| 572 | print_ucode_info(struct ucode_cpu_info *uci, unsigned int date) | 572 | print_ucode_info(struct ucode_cpu_info *uci, unsigned int date) |
| 573 | { | 573 | { |
| 574 | int cpu = smp_processor_id(); | 574 | pr_info_once("microcode updated early to revision 0x%x, date = %04x-%02x-%02x\n", |
| 575 | 575 | uci->cpu_sig.rev, | |
| 576 | pr_info("CPU%d microcode updated early to revision 0x%x, date = %04x-%02x-%02x\n", | 576 | date & 0xffff, |
| 577 | cpu, | 577 | date >> 24, |
| 578 | uci->cpu_sig.rev, | 578 | (date >> 16) & 0xff); |
| 579 | date & 0xffff, | ||
| 580 | date >> 24, | ||
| 581 | (date >> 16) & 0xff); | ||
| 582 | } | 579 | } |
| 583 | 580 | ||
| 584 | #ifdef CONFIG_X86_32 | 581 | #ifdef CONFIG_X86_32 |
