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

Shrikanth Hegde sshegde at linux.ibm.com
Fri Dec 6 05:12:47 AEDT 2024



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 at 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()))



More information about the Linuxppc-dev mailing list