[patch 1/2] revert: x86: move prefill_possible_map calling early, fix

Previous thread: [patch] xen: make CONFIG_XEN_SAVE_RESTORE depend on CONFIG_XEN by Chuck Ebbert on Monday, September 29, 2008 - 3:24 pm. (3 messages)

Next thread: [GIT pull] timer fixes for .27 by Thomas Gleixner on Monday, September 29, 2008 - 3:15 pm. (7 messages)
From: Chuck Ebbert
Date: Monday, September 29, 2008 - 3:27 pm

From: Chuck Ebbert <cebbert@redhat.com>

revert: x86: move prefill_possible_map calling early, fix

revert 4a7017370aa0a94a00ae5b5705e9169cdcae5fb8

This is the wrong fix: prefill_possible_map() needs to be available
even when CONFIG_HOTPLUG_CPU is not set. A followon patch will do that.

Signed-off-by: Chuck Ebbert <cebbert@redhat.com>

---

--- b/include/asm-x86/smp.h
+++ a/include/asm-x86/smp.h
@@ -116,6 +116,8 @@
 extern int __cpu_disable(void);
 extern void __cpu_die(unsigned int cpu);
 
+extern void prefill_possible_map(void);
+
 void smp_store_cpu_info(int id);
 #define cpu_physical_id(cpu)	per_cpu(x86_cpu_to_apicid, cpu)
 
@@ -124,15 +126,11 @@
 {
 	return cpus_weight(cpu_callout_map);
 }
-#endif /* CONFIG_SMP */
-
-#if defined(CONFIG_SMP) && defined(CONFIG_HOTPLUG_CPU)
-extern void prefill_possible_map(void);
 #else
 static inline void prefill_possible_map(void)
 {
 }
+#endif /* CONFIG_SMP */
-#endif
 
 extern unsigned disabled_cpus __cpuinitdata;
 
--

From: Chuck Ebbert
Date: Monday, September 29, 2008 - 3:29 pm

From: Chuck Ebbert <cebbert@redhat.com>

x86: move prefill_possible_map calling early, fix, V2

fix:


Fix this by making prefill_possible_map() available even when
CONFIG_HOTPLUG_CPU is not set. The function is needed so that
the number of possible CPUs can be determined.

Tested on uniprocessor machine with CPU hotplug disabled.
From boot log:
Before: NR_CPUS: 512, nr_cpu_ids: 512, nr_node_ids 1
After: NR_CPUS: 512, nr_cpu_ids: 1, nr_node_ids 1

Signed-off-by: Chuck Ebbert <cebbert@redhat.com>

---

Index: linux-2.6.26.noarch/arch/x86/kernel/smpboot.c
===================================================================
--- linux-2.6.26.noarch.orig/arch/x86/kernel/smpboot.c
+++ linux-2.6.26.noarch/arch/x86/kernel/smpboot.c
@@ -1254,39 +1254,8 @@ void __init native_smp_cpus_done(unsigne
 	check_nmi_watchdog();
 }
 
-#ifdef CONFIG_HOTPLUG_CPU
-
-static void remove_siblinginfo(int cpu)
-{
-	int sibling;
-	struct cpuinfo_x86 *c = &cpu_data(cpu);
-
-	for_each_cpu_mask_nr(sibling, per_cpu(cpu_core_map, cpu)) {
-		cpu_clear(cpu, per_cpu(cpu_core_map, sibling));
-		/*/
-		 * last thread sibling in this cpu core going down
-		 */
-		if (cpus_weight(per_cpu(cpu_sibling_map, cpu)) == 1)
-			cpu_data(sibling).booted_cores--;
-	}
-
-	for_each_cpu_mask_nr(sibling, per_cpu(cpu_sibling_map, cpu))
-		cpu_clear(cpu, per_cpu(cpu_sibling_map, sibling));
-	cpus_clear(per_cpu(cpu_sibling_map, cpu));
-	cpus_clear(per_cpu(cpu_core_map, cpu));
-	c->phys_proc_id = 0;
-	c->cpu_core_id = 0;
-	cpu_clear(cpu, cpu_sibling_setup_map);
-}
-
 static int additional_cpus __initdata = -1;
 
-static __init int setup_additional_cpus(char *s)
-{
-	return s && get_option(&s, &additional_cpus) ? 0 : -EINVAL;
-}
-early_param("additional_cpus", setup_additional_cpus);
-
 /*
  * cpu_possible_map should be static, it cannot change as cpu's
  * are onlined, or offlined. The reason is per-cpu data-structures
@@ -1336,6 +1305,37 @@ __init void prefill_possible_map(void)
 	nr_cpu_ids = ...
From: Ingo Molnar
Date: Tuesday, September 30, 2008 - 12:53 am

applied to tip/x86/core, thanks Chuck! Made it a single delta patch, to 
ease backporting.

	Ingo
--

Previous thread: [patch] xen: make CONFIG_XEN_SAVE_RESTORE depend on CONFIG_XEN by Chuck Ebbert on Monday, September 29, 2008 - 3:24 pm. (3 messages)

Next thread: [GIT pull] timer fixes for .27 by Thomas Gleixner on Monday, September 29, 2008 - 3:15 pm. (7 messages)