Re: [RFT/RFC PATCH v3 4/5] arm: Use common cpu_topology

From: Sudeep Holla
Date: Mon Apr 15 2019 - 11:31:56 EST


On Wed, Mar 20, 2019 at 04:48:05PM -0700, Atish Patra wrote:
> Currently, ARM32 and ARM64 uses different data structures to
> represent their cpu toplogies. Since, we are moving the ARM64
> topology to common code to be used by other architectures, we
> can reuse that for ARM32 as well.
>
> Signed-off-by: Atish Patra <atish.patra@xxxxxxx>
> ---
> arch/arm/include/asm/topology.h | 22 +---------------------
> arch/arm/kernel/topology.c | 10 +++++-----
> include/linux/arch_topology.h | 10 +++++++++-
> 3 files changed, 15 insertions(+), 27 deletions(-)
>

[...]

> diff --git a/include/linux/arch_topology.h b/include/linux/arch_topology.h
> index d4e76e0a..7c850611 100644
> --- a/include/linux/arch_topology.h
> +++ b/include/linux/arch_topology.h
> @@ -36,17 +36,25 @@ unsigned long topology_get_freq_scale(int cpu)
> struct cpu_topology {
> int thread_id;
> int core_id;
> +#ifdef CONFIG_ARM_CPU_TOPOLOGY
> + int socket_id;

Sorry, but I can't find any reason why we need to do this ifdef dance
here, especially for socket_id vs package_id ? Other's I can understand
as there are new, but I am sure we can find a way and get away with
#ifdefery here completely.

> +#else
> int package_id;
> int llc_id;
> + cpumask_t llc_sibling;
> +#endif
> 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];
>
> +#ifdef CONFIG_ARM_CPU_TOPOLOGY
> +#define topology_physical_package_id(cpu) (cpu_topology[cpu].socket_id)
> +#else
> #define topology_physical_package_id(cpu) (cpu_topology[cpu].package_id)
> +#endif

Since all callsites must use topology_physical_package_id, we should be
able to rename socket_id to package_id easily.

--
Regards,
Sudeep