1#ifndef _ASM_ARM_TOPOLOGY_H 2#define _ASM_ARM_TOPOLOGY_H 3 4#ifdef CONFIG_ARM_CPU_TOPOLOGY 5 6#include <linux/cpumask.h> 7 8struct cputopo_arm { 9 int thread_id; 10 int core_id; 11 int socket_id; 12 cpumask_t thread_sibling; 13 cpumask_t core_sibling; 14}; 15 16extern struct cputopo_arm cpu_topology[NR_CPUS]; 17 18#define topology_physical_package_id(cpu) (cpu_topology[cpu].socket_id) 19#define topology_core_id(cpu) (cpu_topology[cpu].core_id) 20#define topology_core_cpumask(cpu) (&cpu_topology[cpu].core_sibling) 21#define topology_thread_cpumask(cpu) (&cpu_topology[cpu].thread_sibling) 22 23#define mc_capable() (cpu_topology[0].socket_id != -1) 24#define smt_capable() (cpu_topology[0].thread_id != -1) 25 26void init_cpu_topology(void); 27void store_cpu_topology(unsigned int cpuid); 28const struct cpumask *cpu_coregroup_mask(int cpu); 29 30#else 31 32static inline void init_cpu_topology(void) { } 33static inline void store_cpu_topology(unsigned int cpuid) { } 34 35#endif 36 37#include <asm-generic/topology.h> 38 39#endif /* _ASM_ARM_TOPOLOGY_H */ 40