From d9cd01e6f0f6922c774bf59f147ef246a2546b61 Mon Sep 17 00:00:00 2001 From: Glauber Costa Date: Mon, 3 Mar 2008 14:13:08 -0300 Subject: [PATCH] --- yaml --- r: 88736 b: refs/heads/master c: 89b08200ad8bc8fb860da218c4f3bcc292bf286c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/mpparse_64.c | 7 +++++++ trunk/arch/x86/kernel/smpboot.c | 12 ++++++++++++ trunk/arch/x86/kernel/smpboot_32.c | 13 ------------- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index c900f89fe512..5ceb70b5d977 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 69c18c15d39c4622c6e2f97e5db4d8c9c43adaaa +refs/heads/master: 89b08200ad8bc8fb860da218c4f3bcc292bf286c diff --git a/trunk/arch/x86/kernel/mpparse_64.c b/trunk/arch/x86/kernel/mpparse_64.c index 72ab1403fed7..2a1f7881c75b 100644 --- a/trunk/arch/x86/kernel/mpparse_64.c +++ b/trunk/arch/x86/kernel/mpparse_64.c @@ -32,6 +32,7 @@ /* Have we found an MP table */ int smp_found_config; +unsigned int __cpuinitdata maxcpus = NR_CPUS; /* * Various Linux-internal data structures created from the @@ -115,6 +116,12 @@ static void __cpuinit MP_processor_info(struct mpc_config_processor *m) return; } + if (num_processors >= maxcpus) { + printk(KERN_WARNING "WARNING: maxcpus limit of %i reached." + " Processor ignored.\n", maxcpus); + return; + } + num_processors++; cpus_complement(tmp_map, cpu_present_map); cpu = first_cpu(tmp_map); diff --git a/trunk/arch/x86/kernel/smpboot.c b/trunk/arch/x86/kernel/smpboot.c index c35cd319d1ed..34c31178041b 100644 --- a/trunk/arch/x86/kernel/smpboot.c +++ b/trunk/arch/x86/kernel/smpboot.c @@ -268,3 +268,15 @@ void __cpu_die(unsigned int cpu) } #endif +/* + * If the BIOS enumerates physical processors before logical, + * maxcpus=N at enumeration-time can be used to disable HT. + */ +static int __init parse_maxcpus(char *arg) +{ + extern unsigned int maxcpus; + + maxcpus = simple_strtoul(arg, NULL, 0); + return 0; +} +early_param("maxcpus", parse_maxcpus); diff --git a/trunk/arch/x86/kernel/smpboot_32.c b/trunk/arch/x86/kernel/smpboot_32.c index 00b1b59cd560..3236e843a9ad 100644 --- a/trunk/arch/x86/kernel/smpboot_32.c +++ b/trunk/arch/x86/kernel/smpboot_32.c @@ -1113,16 +1113,3 @@ void __init smp_intr_init(void) /* IPI for generic function call */ set_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt); } - -/* - * If the BIOS enumerates physical processors before logical, - * maxcpus=N at enumeration-time can be used to disable HT. - */ -static int __init parse_maxcpus(char *arg) -{ - extern unsigned int maxcpus; - - maxcpus = simple_strtoul(arg, NULL, 0); - return 0; -} -early_param("maxcpus", parse_maxcpus);