]> xenbits.xensource.com Git - people/julieng/linux-arm.git/commitdiff
Fixes to get ACPI based kernel booting. Temporary fix to get going.
authorNarinder <ndhillon@caviumnetworks.com>
Thu, 11 Jun 2015 21:53:00 +0000 (14:53 -0700)
committerJulien Grall <julien.grall@citrix.com>
Mon, 28 Sep 2015 11:05:22 +0000 (12:05 +0100)
Signed-off-by: Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com>
arch/arm64/kernel/topology.c

index fcb8f7b42271c81b970732bd5bda9b50e5b89b1d..8ca4ab288c426478002d9d483c1c6fe28e78e289 100644 (file)
@@ -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",