aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/common/bL_switcher.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/common/bL_switcher.c')
-rw-r--r--arch/arm/common/bL_switcher.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/common/bL_switcher.c b/arch/arm/common/bL_switcher.c
index 1506bf536d1..e6b1157742f 100644
--- a/arch/arm/common/bL_switcher.c
+++ b/arch/arm/common/bL_switcher.c
@@ -459,6 +459,20 @@ static int bL_switcher_halve_cpus(void)
return 0;
}
+/* Determine the logical CPU a given physical CPU is grouped on. */
+int bL_switcher_get_logical_index(u32 mpidr)
+{
+ int cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
+
+ if (!bL_switcher_active)
+ return -EUNATCH;
+
+ if (cpumask_test_cpu(cpu, &bL_switcher_removed_logical_cpus))
+ return -EINVAL;
+
+ return cpu;
+}
+
static void bL_switcher_trace_trigger_cpu(void *__always_unused info)
{
trace_cpu_migrate_current(get_ns(), read_mpidr() & MPIDR_HWID_BITMASK);