diff options
Diffstat (limited to 'arch/arm/common/bL_switcher.c')
-rw-r--r-- | arch/arm/common/bL_switcher.c | 14 |
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); |