diff options
| author | Atish Patra <[email protected]> | 2019-06-27 12:52:58 -0700 |
|---|---|---|
| committer | Paul Walmsley <[email protected]> | 2019-07-22 09:36:06 -0700 |
| commit | 60c1b220d8bc6baeaf837cd60f94a331b25c26bc (patch) | |
| tree | e243571528700fb1c605f80b71c8a9f401fd83c8 /include/linux | |
| parent | 124e46a86580c71e0eee8459c5da7649318118db (diff) | |
cpu-topology: Move cpu topology code to common code.
Both RISC-V & ARM64 are using cpu-map device tree to describe
their cpu topology. It's better to move the relevant code to
a common place instead of duplicate code.
To: Will Deacon <[email protected]>
To: Catalin Marinas <[email protected]>
Signed-off-by: Atish Patra <[email protected]>
[Tested on QDF2400]
Tested-by: Jeffrey Hugo <[email protected]>
[Tested on Juno and other embedded platforms.]
Tested-by: Sudeep Holla <[email protected]>
Reviewed-by: Sudeep Holla <[email protected]>
Acked-by: Will Deacon <[email protected]>
Acked-by: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Paul Walmsley <[email protected]>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/arch_topology.h | 28 | ||||
| -rw-r--r-- | include/linux/topology.h | 1 |
2 files changed, 29 insertions, 0 deletions
diff --git a/include/linux/arch_topology.h b/include/linux/arch_topology.h index 1cfe05ea1d89..ede0ce4623b4 100644 --- a/include/linux/arch_topology.h +++ b/include/linux/arch_topology.h @@ -33,4 +33,32 @@ unsigned long topology_get_freq_scale(int cpu) return per_cpu(freq_scale, cpu); } +struct cpu_topology { + int thread_id; + int core_id; + int package_id; + int llc_id; + cpumask_t thread_sibling; + cpumask_t core_sibling; + cpumask_t llc_sibling; +}; + +#ifdef CONFIG_GENERIC_ARCH_TOPOLOGY +extern struct cpu_topology cpu_topology[NR_CPUS]; + +#define topology_physical_package_id(cpu) (cpu_topology[cpu].package_id) +#define topology_core_id(cpu) (cpu_topology[cpu].core_id) +#define topology_core_cpumask(cpu) (&cpu_topology[cpu].core_sibling) +#define topology_sibling_cpumask(cpu) (&cpu_topology[cpu].thread_sibling) +#define topology_llc_cpumask(cpu) (&cpu_topology[cpu].llc_sibling) +void init_cpu_topology(void); +void store_cpu_topology(unsigned int cpuid); +const struct cpumask *cpu_coregroup_mask(int cpu); +#endif + +#if defined(CONFIG_ARM64) || defined(CONFIG_RISCV) +void update_siblings_masks(unsigned int cpu); +#endif +void remove_cpu_topology(unsigned int cpuid); + #endif /* _LINUX_ARCH_TOPOLOGY_H_ */ diff --git a/include/linux/topology.h b/include/linux/topology.h index 47a3e3c08036..2a19d196af28 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h @@ -27,6 +27,7 @@ #ifndef _LINUX_TOPOLOGY_H #define _LINUX_TOPOLOGY_H +#include <linux/arch_topology.h> #include <linux/cpumask.h> #include <linux/bitops.h> #include <linux/mmzone.h> |