From: Chuck Ebbert <cebbert@redhat.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: linux-kernel@vger.kernel.org, Arjan van de Ven <arjan@infradead.org>
Subject: [patch x86/core] x86: allow number of additional hotplug CPUs to be set at compile time
Date: Wed, 1 Oct 2008 19:19:45 -0400 [thread overview]
Message-ID: <20081001191945.4182d0be@redhat.com> (raw)
From: Chuck Ebbert <cebbert@redhat.com>
x86: allow number of additional hotplug CPUs to be set at compile time
The default number of additional CPU IDs for hotplugging is determined
by asking ACPI or mptables how many "disabled" CPUs there are in the
system, but many systems get this wrong so that e.g. a uniprocessor
machine gets an extra CPU allocated and never switches to single CPU
mode.
And sometimes CPU hotplugging is enabled only for suspend/hibernate
anyway, so the additional CPU IDs are not wanted. Allow the number
to be set to zero at compile time.
Also, force the number of extra CPUs to zero if hotplugging is disabled
which allows removing some conditional code.
Tested on uniprocessor x86_64 that ACPI claims has a disabled processor,
with CPU hotplugging configured.
("After" has the number of additional CPUs set to 0)
Before: NR_CPUS: 512, nr_cpu_ids: 2, 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/Kconfig
===================================================================
--- linux-2.6.26.noarch.orig/arch/x86/Kconfig
+++ linux-2.6.26.noarch/arch/x86/Kconfig
@@ -1366,6 +1366,24 @@ config HOTPLUG_CPU
Say N if you want to disable CPU hotplug and don't need to
suspend.
+config HOTPLUG_DEFAULT_ADDITIONAL_CPUS
+ def_bool y
+ prompt "Allocate extra CPUs for hotplugging after boot" if HOTPLUG_CPU
+ ---help---
+ Say yes here to use the default, which allows as many CPUs as are marked
+ "disabled" by ACPI or MPTABLES to be hotplugged after bootup.
+
+ Say no if you do not want to allow CPUs to be added after booting, for
+ example if you only need CPU hotplugging enabled for suspend/resume.
+
+ This value may be overridden at boot time with the "additional_cpus"
+ kernel parameter, if CPU_HOTPLUG is enabled.
+
+config HOTPLUG_ADDITIONAL_CPUS
+ int
+ default 0 if !HOTPLUG_CPU || !HOTPLUG_DEFAULT_ADDITIONAL_CPUS
+ default -1
+
config COMPAT_VDSO
def_bool y
prompt "Compat VDSO support"
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,7 +1254,7 @@ void __init native_smp_cpus_done(unsigne
check_nmi_watchdog();
}
-static int additional_cpus __initdata = -1;
+static int additional_cpus __initdata = CONFIG_HOTPLUG_ADDITIONAL_CPUS;
/*
* cpu_possible_map should be static, it cannot change as cpu's
@@ -1282,16 +1282,13 @@ __init void prefill_possible_map(void)
if (!num_processors)
num_processors = 1;
-#ifdef CONFIG_HOTPLUG_CPU
if (additional_cpus == -1) {
if (disabled_cpus > 0)
additional_cpus = disabled_cpus;
else
additional_cpus = 0;
}
-#else
- additional_cpus = 0;
-#endif
+
possible = num_processors + additional_cpus;
if (possible > NR_CPUS)
possible = NR_CPUS;
next reply other threads:[~2008-10-01 23:21 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-01 23:19 Chuck Ebbert [this message]
2008-10-02 8:12 ` [patch x86/core] x86: allow number of additional hotplug CPUs to be set at compile time Ingo Molnar
2008-10-02 19:30 ` [patch x86/core] x86: allow number of additional hotplug CPUs to be set at compile time, V2 Chuck Ebbert
2008-10-02 19:42 ` Ingo Molnar
2008-10-02 19:48 ` H. Peter Anvin
2008-10-02 19:50 ` Ingo Molnar
2008-10-02 9:12 ` [patch x86/core] x86: allow number of additional hotplug CPUs to be set at compile time Andi Kleen
2008-10-02 19:25 ` Chuck Ebbert
2008-10-02 19:44 ` Andi Kleen
2008-10-02 20:09 ` Chuck Ebbert
2008-10-02 20:40 ` Andi Kleen
2008-10-04 16:52 ` <PING> " Andi Kleen
2008-10-04 22:30 ` Chuck Ebbert
2008-10-05 10:28 ` Ingo Molnar
2008-10-05 14:52 ` Thomas Gleixner
2008-10-05 15:20 ` Ingo Molnar
2008-10-05 15:51 ` Thomas Gleixner
2008-10-05 15:56 ` Ingo Molnar
2008-10-05 20:39 ` Andi Kleen
2008-10-05 21:49 ` Thomas Gleixner
2008-10-05 22:45 ` Andi Kleen
2008-10-05 20:28 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081001191945.4182d0be@redhat.com \
--to=cebbert@redhat.com \
--cc=arjan@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).