From 86b561794d29552041a1aa9b12ad463c7156b7ab Mon Sep 17 00:00:00 2001 From: Ravikiran G Thirumalai Date: Tue, 7 Feb 2006 12:58:23 -0800 Subject: [PATCH] --- yaml --- r: 19969 b: refs/heads/master c: 488fc08d914f2b07b701c9b9c811437cc1c1c518 h: refs/heads/master i: 19967: 2ae24708c9a70301c6f6e424c2f144f4ee911f14 v: v3 --- [refs] | 2 +- trunk/arch/x86_64/kernel/smpboot.c | 3 +++ trunk/include/asm-x86_64/numa.h | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f13adde1f86c..37ab1a82816f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7714d5985bb7101a90fb427dc29dc592cf1b960e +refs/heads/master: 488fc08d914f2b07b701c9b9c811437cc1c1c518 diff --git a/trunk/arch/x86_64/kernel/smpboot.c b/trunk/arch/x86_64/kernel/smpboot.c index a28756ef7cef..67e4e28f4df8 100644 --- a/trunk/arch/x86_64/kernel/smpboot.c +++ b/trunk/arch/x86_64/kernel/smpboot.c @@ -59,6 +59,7 @@ #include #include #include +#include /* Number of siblings per CPU package */ int smp_num_siblings = 1; @@ -890,6 +891,7 @@ static int __cpuinit do_boot_cpu(int cpu, int apicid) if (boot_error) { cpu_clear(cpu, cpu_callout_map); /* was set here (do_boot_cpu()) */ clear_bit(cpu, &cpu_initialized); /* was set by cpu_init() */ + clear_node_cpumask(cpu); /* was set by numa_add_cpu */ cpu_clear(cpu, cpu_present_map); cpu_clear(cpu, cpu_possible_map); x86_cpu_to_apicid[cpu] = BAD_APICID; @@ -1187,6 +1189,7 @@ void remove_cpu_from_maps(void) cpu_clear(cpu, cpu_callout_map); cpu_clear(cpu, cpu_callin_map); clear_bit(cpu, &cpu_initialized); /* was set by cpu_init() */ + clear_node_cpumask(cpu); } int __cpu_disable(void) diff --git a/trunk/include/asm-x86_64/numa.h b/trunk/include/asm-x86_64/numa.h index 34e434ce3268..dffe276ca2df 100644 --- a/trunk/include/asm-x86_64/numa.h +++ b/trunk/include/asm-x86_64/numa.h @@ -22,8 +22,15 @@ extern void numa_set_node(int cpu, int node); extern unsigned char apicid_to_node[256]; #ifdef CONFIG_NUMA extern void __init init_cpu_to_node(void); + +static inline void clear_node_cpumask(int cpu) +{ + clear_bit(cpu, &node_to_cpumask[cpu_to_node(cpu)]); +} + #else #define init_cpu_to_node() do {} while (0) +#define clear_node_cpumask(cpu) do {} while (0) #endif #define NUMA_NO_NODE 0xff