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/smp.h>
  14#include <asm/types.h>
  15
  16struct mpidr_hash {
  17        u64     mask;
  18        u32     shift_aff[4];
  19        u32     bits;
  20};
  21
  22extern struct mpidr_hash mpidr_hash;
  23
  24static inline u32 mpidr_hash_size(void)
  25{
  26        return 1 << mpidr_hash.bits;
  27}
  28
  29/*
  30 * Retrieve logical cpu index corresponding to a given MPIDR.Aff*
  31 *  - mpidr: MPIDR.Aff* bits to be used for the look-up
  32 *
  33 * Returns the cpu logical index or -EINVAL on look-up error
  34 */
  35static inline int get_logical_index(u64 mpidr)
  36{
  37        int cpu;
  38        for (cpu = 0; cpu < nr_cpu_ids; cpu++)
  39                if (cpu_logical_map(cpu) == mpidr)
  40                        return cpu;
  41        return -EINVAL;
  42}
  43
  44#endif /* __ASM_SMP_PLAT_H */
  45