diff options
| author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2006-02-17 16:52:47 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-17 16:59:27 -0500 |
| commit | 37a3302618a51520e2056494715ea6b4776dd8ab (patch) | |
| tree | 379fd117bb816fd012dd58ba9c900e20792a8ae3 /arch | |
| parent | 255acee706b333b79f593dd366f16e1f107cccc3 (diff) | |
[PATCH] s390: possible_cpus parameter
Introduce possible_cpus command line option. Hard sets the number of bits set
in cpu_possible_map. Unlike the additional_cpus parameter this one guarantees
that num_possible_cpus() will stay constant even if the system gets rebooted
and a different number of cpus are present at startup.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/s390/kernel/smp.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 53291e94ac..d0a2745aec 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
| @@ -673,15 +673,16 @@ __cpu_up(unsigned int cpu) | |||
| 673 | } | 673 | } |
| 674 | 674 | ||
| 675 | static unsigned int __initdata additional_cpus; | 675 | static unsigned int __initdata additional_cpus; |
| 676 | static unsigned int __initdata possible_cpus; | ||
| 676 | 677 | ||
| 677 | void __init smp_setup_cpu_possible_map(void) | 678 | void __init smp_setup_cpu_possible_map(void) |
| 678 | { | 679 | { |
| 679 | unsigned int pcpus, cpu; | 680 | unsigned int pcpus, cpu; |
| 680 | 681 | ||
| 681 | pcpus = smp_count_cpus() + additional_cpus; | 682 | pcpus = min(smp_count_cpus() + additional_cpus, (unsigned int) NR_CPUS); |
| 682 | 683 | ||
| 683 | if (pcpus > NR_CPUS) | 684 | if (possible_cpus) |
| 684 | pcpus = NR_CPUS; | 685 | pcpus = min(possible_cpus, (unsigned int) NR_CPUS); |
| 685 | 686 | ||
| 686 | for (cpu = 0; cpu < pcpus; cpu++) | 687 | for (cpu = 0; cpu < pcpus; cpu++) |
| 687 | cpu_set(cpu, cpu_possible_map); | 688 | cpu_set(cpu, cpu_possible_map); |
| @@ -698,6 +699,13 @@ static int __init setup_additional_cpus(char *s) | |||
| 698 | } | 699 | } |
| 699 | early_param("additional_cpus", setup_additional_cpus); | 700 | early_param("additional_cpus", setup_additional_cpus); |
| 700 | 701 | ||
| 702 | static int __init setup_possible_cpus(char *s) | ||
| 703 | { | ||
| 704 | possible_cpus = simple_strtoul(s, NULL, 0); | ||
| 705 | return 0; | ||
| 706 | } | ||
| 707 | early_param("possible_cpus", setup_possible_cpus); | ||
| 708 | |||
| 701 | int | 709 | int |
| 702 | __cpu_disable(void) | 710 | __cpu_disable(void) |
| 703 | { | 711 | { |
