浏览代码

x86: don't treat bigsmp as non-standard

just like 64 bit switch from flat logical APIC messages to
flat physical mode automatically.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Yinghai Lu 16 年之前
父节点
当前提交
26f7ef14a7
共有 5 个文件被更改,包括 12 次插入13 次删除
  1. 7 8
      arch/x86/Kconfig
  2. 1 1
      arch/x86/kernel/acpi/boot.c
  3. 2 2
      arch/x86/kernel/mpparse.c
  4. 1 1
      arch/x86/kernel/setup.c
  5. 1 1
      arch/x86/kernel/smpboot.c

+ 7 - 8
arch/x86/Kconfig

@@ -262,6 +262,12 @@ config X86_MPPARSE
 	  For old smp systems that do not have proper acpi support. Newer systems
 	  (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
 
+config X86_BIGSMP
+	bool "Support for big SMP systems with more than 8 CPUs"
+	depends on X86_32 && SMP
+	help
+	  This option is needed for the systems that have more than 8 CPUs
+
 config X86_NON_STANDARD
 	bool "Support for non-standard x86 platforms"
 	help
@@ -338,13 +344,6 @@ config X86_32_NON_STANDARD
 	  if you select them all, kernel will probe it one by one. and will
 	  fallback to default.
 
-config X86_BIGSMP
-	bool "Support for big SMP systems with more than 8 CPUs"
-	depends on X86_32_NON_STANDARD
-	help
-	  This option is needed for the systems that have more than 8 CPUs
-	  and if the system is not of any sub-arch type above.
-
 config X86_NUMAQ
 	bool "NUMAQ (IBM/Sequent)"
 	depends on X86_32_NON_STANDARD
@@ -366,7 +365,7 @@ config X86_SUMMIT
 
 config X86_ES7000
 	bool "Support for Unisys ES7000 IA32 series"
-	depends on X86_32_NON_STANDARD
+	depends on X86_32_NON_STANDARD && X86_BIGSMP
 	help
 	  Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
 	  supposed to run on an IA32-based Unisys ES7000 system.

+ 1 - 1
arch/x86/kernel/acpi/boot.c

@@ -1335,7 +1335,7 @@ static void __init acpi_process_madt(void)
 		if (!error) {
 			acpi_lapic = 1;
 
-#ifdef CONFIG_X86_32_NON_STANDARD
+#ifdef CONFIG_X86_BIGSMP
 			generic_bigsmp_probe();
 #endif
 			/*

+ 2 - 2
arch/x86/kernel/mpparse.c

@@ -372,8 +372,8 @@ static int __init smp_read_mpc(struct mpc_table *mpc, unsigned early)
 			(*x86_quirks->mpc_record)++;
 	}
 
-#ifdef CONFIG_X86_32_NON_STANDARD
-       generic_bigsmp_probe();
+#ifdef CONFIG_X86_BIGSMP
+	generic_bigsmp_probe();
 #endif
 
 	if (apic->setup_apic_routing)

+ 1 - 1
arch/x86/kernel/setup.c

@@ -936,7 +936,7 @@ void __init setup_arch(char **cmdline_p)
 	map_vsyscall();
 #endif
 
-#ifdef CONFIG_X86_32_NON_STANDARD
+#if defined(CONFIG_X86_32_NON_STANDARD) || defined(CONFIG_X86_BIGSMP)
 	generic_apic_probe();
 #endif
 

+ 1 - 1
arch/x86/kernel/smpboot.c

@@ -1007,7 +1007,7 @@ static int __init smp_sanity_check(unsigned max_cpus)
 
 		printk(KERN_WARNING
 		       "More than 8 CPUs detected - skipping them.\n"
-		       "Use CONFIG_X86_32_NON_STANDARD and CONFIG_X86_BIGSMP.\n");
+		       "Use CONFIG_X86_BIGSMP.\n");
 
 		nr = 0;
 		for_each_present_cpu(cpu) {