linux/arch/arm64/include/asm/smp_plat.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Definitions specific to SMP platforms.
   4 *
   5 * Copyright (C) 2013 ARM Ltd.
   6 */
   7
   8#ifndef __ASM_SMP_PLAT_H
   9#define __ASM_SMP_PLAT_H
  10
  11#include <linux/cpumask.h>
  12
  13#include <asm/types.h>
  14
  15struct mpidr_hash {
  16        u64     mask;
  17        u32     shift_aff[4];
  18        u32     bits;
  19};
  20
  21extern struct mpidr_hash mpidr_hash;
  22
  23static inline u32 mpidr_hash_size(void)
  24{
  25        return 1 << mpidr_hash.bits;
  26}
  27
  28/*
  29 * Retrieve logical cpu index corresponding to a given MPIDR.Aff*
  30 *  - mpidr: MPIDR.Aff* bits to be used for the look-up
  31 *
  32 * Returns the cpu logical index or -EINVAL on look-up error
  33 */
  34static inline int get_logical_index(u64 mpidr)
  35{
  36        int cpu;
  37        for (cpu = 0; cpu < nr_cpu_ids; cpu++)
  38                if (cpu_logical_map(cpu) == mpidr)
  39                        return cpu;
  40        return -EINVAL;
  41}
  42
  43#endif /* __ASM_SMP_PLAT_H */
  44