[Arm-dev] [PATCH v1 80/87] Fixes to get ACPI based kernel booting. Temporary fix to get going.

Vadim Lomovtsev Vadim.Lomovtsev at caviumnetworks.com
Thu Aug 13 13:19:17 UTC 2015


From: Narinder <ndhillon at caviumnetworks.com>

Signed-off-by: Vadim Lomovtsev <Vadim.Lomovtsev at caviumnetworks.com>
---
 arch/arm64/kernel/topology.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
index fcb8f7b..8ca4ab2 100644
--- a/arch/arm64/kernel/topology.c
+++ b/arch/arm64/kernel/topology.c
@@ -258,12 +258,19 @@ void store_cpu_topology(unsigned int cpuid)
 		cpuid_topo->cluster_id = MPIDR_AFFINITY_LEVEL(mpidr, 2) |
 					 MPIDR_AFFINITY_LEVEL(mpidr, 3) << 8;
 	} else {
+#ifdef CONFIG_ACPI
+		/* Multiprocessor system : Single-thread per core */
+		cpuid_topo->thread_id  = -1;
+		cpuid_topo->core_id    = (((mpidr >> 8) & 0xff) * 16) + (mpidr & 0xff);
+		cpuid_topo->cluster_id = (cpuid_topo->core_id) > 47 ? 1:0;
+#else
 		/* Multiprocessor system : Single-thread per core */
 		cpuid_topo->thread_id  = -1;
 		cpuid_topo->core_id    = MPIDR_AFFINITY_LEVEL(mpidr, 0);
 		cpuid_topo->cluster_id = MPIDR_AFFINITY_LEVEL(mpidr, 1) |
 					 MPIDR_AFFINITY_LEVEL(mpidr, 2) << 8 |
 					 MPIDR_AFFINITY_LEVEL(mpidr, 3) << 16;
+#endif
 	}
 
 	pr_debug("CPU%u: cluster %d core %d thread %d mpidr %#016llx\n",
-- 
2.4.3



More information about the Arm-dev mailing list