diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2009-09-11 04:29:03 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-09-11 04:29:55 -0400 |
commit | 4bb5e07b68565d7983108993aa23eccf5f1b35fe (patch) | |
tree | a76f2d5933cc8d90878f3df2d29f09fbd952daca /arch/s390/kernel/smp.c | |
parent | 53f8c573ea3b54b7e1b81d2cd403373b08103736 (diff) |
[S390] Limit cpu detection to 256 physical cpus.
Saves us more than 65k pointless IPIs.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/smp.c')
-rw-r--r-- | arch/s390/kernel/smp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index be2cae083406..9261495ca2c3 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -49,6 +49,7 @@ | |||
49 | #include <asm/sclp.h> | 49 | #include <asm/sclp.h> |
50 | #include <asm/cputime.h> | 50 | #include <asm/cputime.h> |
51 | #include <asm/vdso.h> | 51 | #include <asm/vdso.h> |
52 | #include <asm/cpu.h> | ||
52 | #include "entry.h" | 53 | #include "entry.h" |
53 | 54 | ||
54 | static struct task_struct *current_set[NR_CPUS]; | 55 | static struct task_struct *current_set[NR_CPUS]; |
@@ -300,7 +301,7 @@ static int smp_rescan_cpus_sigp(cpumask_t avail) | |||
300 | logical_cpu = cpumask_first(&avail); | 301 | logical_cpu = cpumask_first(&avail); |
301 | if (logical_cpu >= nr_cpu_ids) | 302 | if (logical_cpu >= nr_cpu_ids) |
302 | return 0; | 303 | return 0; |
303 | for (cpu_id = 0; cpu_id <= 65535; cpu_id++) { | 304 | for (cpu_id = 0; cpu_id <= MAX_CPU_ADDRESS; cpu_id++) { |
304 | if (cpu_known(cpu_id)) | 305 | if (cpu_known(cpu_id)) |
305 | continue; | 306 | continue; |
306 | __cpu_logical_map[logical_cpu] = cpu_id; | 307 | __cpu_logical_map[logical_cpu] = cpu_id; |
@@ -379,7 +380,7 @@ static void __init smp_detect_cpus(void) | |||
379 | /* Use sigp detection algorithm if sclp doesn't work. */ | 380 | /* Use sigp detection algorithm if sclp doesn't work. */ |
380 | if (sclp_get_cpu_info(info)) { | 381 | if (sclp_get_cpu_info(info)) { |
381 | smp_use_sigp_detection = 1; | 382 | smp_use_sigp_detection = 1; |
382 | for (cpu = 0; cpu <= 65535; cpu++) { | 383 | for (cpu = 0; cpu <= MAX_CPU_ADDRESS; cpu++) { |
383 | if (cpu == boot_cpu_addr) | 384 | if (cpu == boot_cpu_addr) |
384 | continue; | 385 | continue; |
385 | __cpu_logical_map[CPU_INIT_NO] = cpu; | 386 | __cpu_logical_map[CPU_INIT_NO] = cpu; |