Commit 6ee3c78c authored by Mark Rutland's avatar Mark Rutland

arm64: smp_plat: add get_logical_index

The PSCI MIGRATE_INFO_UP_CPU call returns a physical ID, which we will
need to map back to a Linux logical ID.

Implement a reusable get_logical_index to map from a physical ID to a
logical ID.
Signed-off-by: default avatarMark Rutland <>
Acked-by: default avatarCatalin Marinas <>
Acked-by: default avatarLorenzo Pieralisi <>
Reviewed-by: default avatarHanjun Guo <>
Tested-by: default avatarHanjun Guo <>
Cc: Will Deacon <>
parent 538b9b25
......@@ -19,6 +19,8 @@
#ifndef __ASM_SMP_PLAT_H
#define __ASM_SMP_PLAT_H
#include <linux/cpumask.h>
#include <asm/types.h>
struct mpidr_hash {
......@@ -39,6 +41,20 @@ static inline u32 mpidr_hash_size(void)
extern u64 __cpu_logical_map[NR_CPUS];
#define cpu_logical_map(cpu) __cpu_logical_map[cpu]
* Retrieve logical cpu index corresponding to a given MPIDR.Aff*
* - mpidr: MPIDR.Aff* bits to be used for the look-up
* Returns the cpu logical index or -EINVAL on look-up error
static inline int get_logical_index(u64 mpidr)
int cpu;
for (cpu = 0; cpu < nr_cpu_ids; cpu++)
if (cpu_logical_map(cpu) == mpidr)
return cpu;
return -EINVAL;
void __init do_post_cpus_up_work(void);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment