|
@@ -663,13 +663,12 @@ void detect_ht(struct cpuinfo_x86 *c)
|
|
|
#ifdef CONFIG_SMP
|
|
|
u32 eax, ebx, ecx, edx;
|
|
|
int index_msb, core_bits;
|
|
|
- static bool printed;
|
|
|
|
|
|
if (!cpu_has(c, X86_FEATURE_HT))
|
|
|
return;
|
|
|
|
|
|
if (cpu_has(c, X86_FEATURE_CMP_LEGACY))
|
|
|
- goto out;
|
|
|
+ return;
|
|
|
|
|
|
if (cpu_has(c, X86_FEATURE_XTOPOLOGY))
|
|
|
return;
|
|
@@ -678,14 +677,14 @@ void detect_ht(struct cpuinfo_x86 *c)
|
|
|
|
|
|
smp_num_siblings = (ebx & 0xff0000) >> 16;
|
|
|
|
|
|
+ if (!smp_num_siblings)
|
|
|
+ smp_num_siblings = 1;
|
|
|
+
|
|
|
if (smp_num_siblings == 1) {
|
|
|
pr_info_once("CPU0: Hyper-Threading is disabled\n");
|
|
|
- goto out;
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
- if (smp_num_siblings <= 1)
|
|
|
- goto out;
|
|
|
-
|
|
|
index_msb = get_count_order(smp_num_siblings);
|
|
|
c->phys_proc_id = apic->phys_pkg_id(c->initial_apicid, index_msb);
|
|
|
|
|
@@ -697,15 +696,6 @@ void detect_ht(struct cpuinfo_x86 *c)
|
|
|
|
|
|
c->cpu_core_id = apic->phys_pkg_id(c->initial_apicid, index_msb) &
|
|
|
((1 << core_bits) - 1);
|
|
|
-
|
|
|
-out:
|
|
|
- if (!printed && (c->x86_max_cores * smp_num_siblings) > 1) {
|
|
|
- pr_info("CPU: Physical Processor ID: %d\n",
|
|
|
- c->phys_proc_id);
|
|
|
- pr_info("CPU: Processor Core ID: %d\n",
|
|
|
- c->cpu_core_id);
|
|
|
- printed = 1;
|
|
|
- }
|
|
|
#endif
|
|
|
}
|
|
|
|