Re: [RFC PATCH 2/2] s390/topology: Add initial implementation for selection of parked CPUs

Shrikanth Hegde
2024-12-05T18:13:13Z

On 12/4/24 16:51, Tobias Huschle wrote:
> In this simplified example, vertical low CPUs are parked generally.
> This will later be adjusted by making the parked state dependent
> on the overall utilization on the underlying hypervisor.
>
> Vertical lows are always bound to the highest CPU IDs. This implies that
> the three types of vertically polarized CPUs are always clustered by ID.
> This has the following implications:
> - There can be scheduler domains consisting of only vertical highs
> - There can be scheduler domains consisting of only vertical lows
>

A sched domain can have combination of these two as well. Is that not
possible on s390?

> Signed-off-by: Tobias Huschle <huschle@linux.ibm.com>
> ---
> arch/s390/include/asm/topology.h | 3 +++
> arch/s390/kernel/topology.c | 5 +++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/arch/s390/include/asm/topology.h b/arch/s390/include/asm/topology.h
> index cef06bffad80..e86afeccde35 100644
> --- a/arch/s390/include/asm/topology.h
> +++ b/arch/s390/include/asm/topology.h
> @@ -99,6 +99,9 @@ static inline int numa_node_id(void)
>
> #endif /* CONFIG_NUMA */
>
> +#define arch_cpu_parked cpu_parked
> +int cpu_parked(int cpu);
> +
> #include <asm-generic/topology.h>
>
> #endif /* _ASM_S390_TOPOLOGY_H */
> diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c
> index 4f9c301a705b..1032b65da574 100644
> --- a/arch/s390/kernel/topology.c
> +++ b/arch/s390/kernel/topology.c
> @@ -299,6 +299,11 @@ void store_topology(struct sysinfo_15_1_x *info)
> stsi(info, 15, 1, topology_mnest_limit());
> }
>
> +int cpu_parked(int cpu)
> +{
> + return smp_cpu_get_polarization(cpu) == POLARIZATION_VL;
> +}

Curious to know how this smp_cpu_get_polarization gets updated at
runtime? is it done by add_cpus_to_mask?

> +
> static void __arch_update_dedicated_flag(void *arg)
> {
> if (topology_cpu_dedicated(smp_processor_id()))