aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/smpboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kernel/smpboot.c')
-rw-r--r--arch/ia64/kernel/smpboot.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
index c57dbce25c12..f0fc4d8465ad 100644
--- a/arch/ia64/kernel/smpboot.c
+++ b/arch/ia64/kernel/smpboot.c
@@ -142,7 +142,6 @@ DEFINE_PER_CPU_SHARED_ALIGNED(cpumask_t, cpu_sibling_map);
142EXPORT_PER_CPU_SYMBOL(cpu_sibling_map); 142EXPORT_PER_CPU_SYMBOL(cpu_sibling_map);
143 143
144int smp_num_siblings = 1; 144int smp_num_siblings = 1;
145int smp_num_cpucores = 1;
146 145
147/* which logical CPU number maps to which CPU (physical APIC ID) */ 146/* which logical CPU number maps to which CPU (physical APIC ID) */
148volatile int ia64_cpu_to_sapicid[NR_CPUS]; 147volatile int ia64_cpu_to_sapicid[NR_CPUS];
@@ -886,13 +885,17 @@ identify_siblings(struct cpuinfo_ia64 *c)
886 u16 pltid; 885 u16 pltid;
887 pal_logical_to_physical_t info; 886 pal_logical_to_physical_t info;
888 887
889 if (smp_num_cpucores == 1 && smp_num_siblings == 1)
890 return;
891
892 if ((status = ia64_pal_logical_to_phys(-1, &info)) != PAL_STATUS_SUCCESS) { 888 if ((status = ia64_pal_logical_to_phys(-1, &info)) != PAL_STATUS_SUCCESS) {
893 printk(KERN_ERR "ia64_pal_logical_to_phys failed with %ld\n", 889 if (status != PAL_STATUS_UNIMPLEMENTED) {
894 status); 890 printk(KERN_ERR
895 return; 891 "ia64_pal_logical_to_phys failed with %ld\n",
892 status);
893 return;
894 }
895
896 info.overview_ppid = 0;
897 info.overview_cpp = 1;
898 info.overview_tpc = 1;
896 } 899 }
897 if ((status = ia64_sal_physical_id_info(&pltid)) != PAL_STATUS_SUCCESS) { 900 if ((status = ia64_sal_physical_id_info(&pltid)) != PAL_STATUS_SUCCESS) {
898 printk(KERN_ERR "ia64_sal_pltid failed with %ld\n", status); 901 printk(KERN_ERR "ia64_sal_pltid failed with %ld\n", status);
@@ -900,6 +903,10 @@ identify_siblings(struct cpuinfo_ia64 *c)
900 } 903 }
901 904
902 c->socket_id = (pltid << 8) | info.overview_ppid; 905 c->socket_id = (pltid << 8) | info.overview_ppid;
906
907 if (info.overview_cpp == 1 && info.overview_tpc == 1)
908 return;
909
903 c->cores_per_socket = info.overview_cpp; 910 c->cores_per_socket = info.overview_cpp;
904 c->threads_per_core = info.overview_tpc; 911 c->threads_per_core = info.overview_tpc;
905 c->num_log = info.overview_num_log; 912 c->num_log = info.overview_num_log;