| From: Borislav Petkov <bp@suse.de> |
| Date: Mon, 24 Oct 2016 19:38:43 +0200 |
| Subject: x86/cpu: Merge bugs.c and bugs_64.c |
| |
| commit 62a67e123e058a67db58bc6a14354dd037bafd0a upstream. |
| |
| Should be easier when following boot paths. It probably is a left over |
| from the x86 unification eons ago. |
| |
| No functionality change. |
| |
| Signed-off-by: Borislav Petkov <bp@suse.de> |
| Cc: Andy Lutomirski <luto@kernel.org> |
| Cc: Borislav Petkov <bp@alien8.de> |
| Cc: Brian Gerst <brgerst@gmail.com> |
| Cc: Denys Vlasenko <dvlasenk@redhat.com> |
| Cc: H. Peter Anvin <hpa@zytor.com> |
| Cc: Josh Poimboeuf <jpoimboe@redhat.com> |
| 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/20161024173844.23038-3-bp@alien8.de |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| [bwh: Backported to 3.2: |
| - Add #ifdef around functions that are not used on x86_64 |
| - Adjust context] |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| --- a/arch/x86/kernel/cpu/Makefile |
| +++ b/arch/x86/kernel/cpu/Makefile |
| @@ -16,9 +16,7 @@ obj-y := intel_cacheinfo.o scattered.o |
| obj-y += proc.o capflags.o powerflags.o common.o |
| obj-y += vmware.o hypervisor.o sched.o mshyperv.o |
| obj-y += rdrand.o |
| - |
| -obj-$(CONFIG_X86_32) += bugs.o |
| -obj-$(CONFIG_X86_64) += bugs_64.o |
| +obj-y += bugs.o |
| |
| obj-$(CONFIG_CPU_SUP_INTEL) += intel.o |
| obj-$(CONFIG_CPU_SUP_AMD) += amd.o |
| --- a/arch/x86/kernel/cpu/bugs.c |
| +++ b/arch/x86/kernel/cpu/bugs.c |
| @@ -16,6 +16,10 @@ |
| #include <asm/msr.h> |
| #include <asm/paravirt.h> |
| #include <asm/alternative.h> |
| +#include <asm/pgtable.h> |
| +#include <asm/cacheflush.h> |
| + |
| +#ifdef CONFIG_X86_32 |
| |
| static int __init no_halt(char *s) |
| { |
| @@ -156,6 +160,7 @@ static void __init check_config(void) |
| #endif |
| } |
| |
| +#endif /* CONFIG_X86_32 */ |
| |
| void __init check_bugs(void) |
| { |
| @@ -168,10 +173,13 @@ void __init check_bugs(void) |
| #endif |
| |
| identify_boot_cpu(); |
| -#ifndef CONFIG_SMP |
| - printk(KERN_INFO "CPU: "); |
| - print_cpu_info(&boot_cpu_data); |
| -#endif |
| + |
| + if (!IS_ENABLED(CONFIG_SMP)) { |
| + pr_info("CPU: "); |
| + print_cpu_info(&boot_cpu_data); |
| + } |
| + |
| +#ifdef CONFIG_X86_32 |
| check_config(); |
| check_fpu(); |
| check_hlt(); |
| @@ -179,4 +187,18 @@ void __init check_bugs(void) |
| init_utsname()->machine[1] = |
| '0' + (boot_cpu_data.x86 > 6 ? 6 : boot_cpu_data.x86); |
| alternative_instructions(); |
| +#else /* CONFIG_X86_64 */ |
| + alternative_instructions(); |
| + |
| + /* |
| + * Make sure the first 2MB area is not mapped by huge pages |
| + * There are typically fixed size MTRRs in there and overlapping |
| + * MTRRs into large pages causes slow downs. |
| + * |
| + * Right now we don't do that with gbpages because there seems |
| + * very little benefit for that case. |
| + */ |
| + if (!direct_gbpages) |
| + set_memory_4k((unsigned long)__va(0), 1); |
| +#endif |
| } |
| --- a/arch/x86/kernel/cpu/bugs_64.c |
| +++ /dev/null |
| @@ -1,33 +0,0 @@ |
| -/* |
| - * Copyright (C) 1994 Linus Torvalds |
| - * Copyright (C) 2000 SuSE |
| - */ |
| - |
| -#include <linux/kernel.h> |
| -#include <linux/init.h> |
| -#include <asm/alternative.h> |
| -#include <asm/bugs.h> |
| -#include <asm/processor.h> |
| -#include <asm/mtrr.h> |
| -#include <asm/cacheflush.h> |
| - |
| -void __init check_bugs(void) |
| -{ |
| - identify_boot_cpu(); |
| -#if !defined(CONFIG_SMP) |
| - printk(KERN_INFO "CPU: "); |
| - print_cpu_info(&boot_cpu_data); |
| -#endif |
| - alternative_instructions(); |
| - |
| - /* |
| - * Make sure the first 2MB area is not mapped by huge pages |
| - * There are typically fixed size MTRRs in there and overlapping |
| - * MTRRs into large pages causes slow downs. |
| - * |
| - * Right now we don't do that with gbpages because there seems |
| - * very little benefit for that case. |
| - */ |
| - if (!direct_gbpages) |
| - set_memory_4k((unsigned long)__va(0), 1); |
| -} |