diff options
author | Andi Kleen <ak@suse.de> | 2006-02-25 22:18:46 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-26 12:53:30 -0500 |
commit | e2c0388866dc12bef56b178b958f9b778fe6c687 (patch) | |
tree | 8a029b1e859215340fd7a029194bffdd7661e4c8 | |
parent | 2eb1bdbad89b19c99f8ac1de1492cdabbff6b3d3 (diff) |
[PATCH] x86_64: Fix the additional_cpus=.. option
It didn't set up the CPU possible map early enough, so the
option didn't actually work.
Noticed by Heiko Carstens
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/x86_64/kernel/setup.c | 6 | ||||
-rw-r--r-- | arch/x86_64/kernel/smpboot.c | 2 | ||||
-rw-r--r-- | include/asm-x86_64/proto.h | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c index 9435ab7d6fb8..5de7eaf5d97c 100644 --- a/arch/x86_64/kernel/setup.c +++ b/arch/x86_64/kernel/setup.c | |||
@@ -423,6 +423,12 @@ static __init void parse_cmdline_early (char ** cmdline_p) | |||
423 | else if(!memcmp(from, "elfcorehdr=", 11)) | 423 | else if(!memcmp(from, "elfcorehdr=", 11)) |
424 | elfcorehdr_addr = memparse(from+11, &from); | 424 | elfcorehdr_addr = memparse(from+11, &from); |
425 | #endif | 425 | #endif |
426 | |||
427 | #ifdef CONFIG_SMP | ||
428 | else if (!memcmp(from, "additional_cpus=", 16)) | ||
429 | setup_additional_cpus(from+16); | ||
430 | #endif | ||
431 | |||
426 | next_char: | 432 | next_char: |
427 | c = *(from++); | 433 | c = *(from++); |
428 | if (!c) | 434 | if (!c) |
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c index 67e4e28f4df8..b82eb86e4f5d 100644 --- a/arch/x86_64/kernel/smpboot.c +++ b/arch/x86_64/kernel/smpboot.c | |||
@@ -1244,7 +1244,7 @@ void __cpu_die(unsigned int cpu) | |||
1244 | printk(KERN_ERR "CPU %u didn't die...\n", cpu); | 1244 | printk(KERN_ERR "CPU %u didn't die...\n", cpu); |
1245 | } | 1245 | } |
1246 | 1246 | ||
1247 | static __init int setup_additional_cpus(char *s) | 1247 | __init int setup_additional_cpus(char *s) |
1248 | { | 1248 | { |
1249 | return get_option(&s, &additional_cpus); | 1249 | return get_option(&s, &additional_cpus); |
1250 | } | 1250 | } |
diff --git a/include/asm-x86_64/proto.h b/include/asm-x86_64/proto.h index eca3f2d633db..8bdcbd0aa03f 100644 --- a/include/asm-x86_64/proto.h +++ b/include/asm-x86_64/proto.h | |||
@@ -134,6 +134,7 @@ extern int force_iommu; | |||
134 | 134 | ||
135 | extern int reboot_force; | 135 | extern int reboot_force; |
136 | extern int notsc_setup(char *); | 136 | extern int notsc_setup(char *); |
137 | extern int setup_additional_cpus(char *); | ||
137 | 138 | ||
138 | extern void smp_local_timer_interrupt(struct pt_regs * regs); | 139 | extern void smp_local_timer_interrupt(struct pt_regs * regs); |
139 | 140 | ||