|
@@ -315,6 +315,17 @@ static void legacy_fixup_core_id(struct cpuinfo_x86 *c)
|
|
|
c->cpu_core_id %= cus_per_node;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+static void amd_get_topology_early(struct cpuinfo_x86 *c)
|
|
|
+{
|
|
|
+ if (boot_cpu_has(X86_FEATURE_TOPOEXT)) {
|
|
|
+ u32 eax, ebx, ecx, edx;
|
|
|
+
|
|
|
+ cpuid(0x8000001e, &eax, &ebx, &ecx, &edx);
|
|
|
+ smp_num_siblings = ((ebx >> 8) & 0xff) + 1;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Fixup core topology information for
|
|
|
* (1) AMD multi-node processors
|
|
@@ -681,6 +692,8 @@ static void early_init_amd(struct cpuinfo_x86 *c)
|
|
|
set_cpu_bug(c, X86_BUG_AMD_E400);
|
|
|
|
|
|
early_detect_mem_encrypt(c);
|
|
|
+
|
|
|
+ amd_get_topology_early(c);
|
|
|
}
|
|
|
|
|
|
static void init_amd_k8(struct cpuinfo_x86 *c)
|