diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/kernel/smpboot.c | 24 |
1 files changed, 24 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); | ||