diff options
-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 6203ed4ec8cf..f7d7f5668144 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
@@ -879,3 +879,27 @@ identify_siblings(struct cpuinfo_ia64 *c) | |||
879 | c->core_id = info.log1_cid; | 879 | c->core_id = info.log1_cid; |
880 | c->thread_id = info.log1_tid; | 880 | c->thread_id = info.log1_tid; |
881 | } | 881 | } |
882 | |||
883 | /* | ||
884 | * returns non zero, if multi-threading is enabled | ||
885 | * on at least one physical package. Due to hotplug cpu | ||
886 | * and (maxcpus=), all threads may not necessarily be enabled | ||
887 | * even though the processor supports multi-threading. | ||
888 | */ | ||
889 | int is_multithreading_enabled(void) | ||
890 | { | ||
891 | int i, j; | ||
892 | |||
893 | for_each_present_cpu(i) { | ||
894 | for_each_present_cpu(j) { | ||
895 | if (j == i) | ||
896 | continue; | ||
897 | if ((cpu_data(j)->socket_id == cpu_data(i)->socket_id)) { | ||
898 | if (cpu_data(j)->core_id == cpu_data(i)->core_id) | ||
899 | return 1; | ||
900 | } | ||
901 | } | ||
902 | } | ||
903 | return 0; | ||
904 | } | ||
905 | EXPORT_SYMBOL_GPL(is_multithreading_enabled); | ||
diff --git a/include/asm-ia64/smp.h b/include/asm-ia64/smp.h index 719ff309ce09..6533eb4e86ad 100644 --- a/include/asm-ia64/smp.h +++ b/include/asm-ia64/smp.h | |||
@@ -128,6 +128,7 @@ extern void smp_send_reschedule (int cpu); | |||
128 | extern void lock_ipi_calllock(void); | 128 | extern void lock_ipi_calllock(void); |
129 | extern void unlock_ipi_calllock(void); | 129 | extern void unlock_ipi_calllock(void); |
130 | extern void identify_siblings (struct cpuinfo_ia64 *); | 130 | extern void identify_siblings (struct cpuinfo_ia64 *); |
131 | extern int is_multithreading_enabled(void); | ||
131 | 132 | ||
132 | #else | 133 | #else |
133 | 134 | ||