diff options
author | Stephane Eranian <eranian@hpl.hp.com> | 2006-09-21 10:35:44 -0700 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2006-09-26 11:39:38 -0700 |
commit | dd562c05410e13e878a3ee0deb8ac06db2e132c7 (patch) | |
tree | b99f2e8c4aae70a17a8caf7e3f72926c4dcdd7a4 | |
parent | fd32cb3a9c9f9399421408e8734cd8a6d9d1a09f (diff) | |
download | kernel_goldelico_gta04-dd562c05410e13e878a3ee0deb8ac06db2e132c7.zip kernel_goldelico_gta04-dd562c05410e13e878a3ee0deb8ac06db2e132c7.tar.gz kernel_goldelico_gta04-dd562c05410e13e878a3ee0deb8ac06db2e132c7.tar.bz2 |
[IA64] Add interface so modules can discover whether multithreading is on.
Add is_multithreading_enabled() to check whether multi-threading
is enabled independently of which cpu is currently online
Signed-off-by: stephane eranian <eranian@hpl.hp.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
-rw-r--r-- | arch/ia64/kernel/smpboot.c | 24 | ||||
-rw-r--r-- | include/asm-ia64/smp.h | 1 |
2 files changed, 25 insertions, 0 deletions
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index 6203ed4..f7d7f56 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c @@ -879,3 +879,27 @@ identify_siblings(struct cpuinfo_ia64 *c) c->core_id = info.log1_cid; c->thread_id = info.log1_tid; } + +/* + * returns non zero, if multi-threading is enabled + * on at least one physical package. Due to hotplug cpu + * and (maxcpus=), all threads may not necessarily be enabled + * even though the processor supports multi-threading. + */ +int is_multithreading_enabled(void) +{ + int i, j; + + for_each_present_cpu(i) { + for_each_present_cpu(j) { + if (j == i) + continue; + if ((cpu_data(j)->socket_id == cpu_data(i)->socket_id)) { + if (cpu_data(j)->core_id == cpu_data(i)->core_id) + return 1; + } + } + } + return 0; +} +EXPORT_SYMBOL_GPL(is_multithreading_enabled); diff --git a/include/asm-ia64/smp.h b/include/asm-ia64/smp.h index 719ff30..6533eb4 100644 --- a/include/asm-ia64/smp.h +++ b/include/asm-ia64/smp.h @@ -128,6 +128,7 @@ extern void smp_send_reschedule (int cpu); extern void lock_ipi_calllock(void); extern void unlock_ipi_calllock(void); extern void identify_siblings (struct cpuinfo_ia64 *); +extern int is_multithreading_enabled(void); #else |