Re: [PATCH v3] cpu-topology: Skip the exist but not possible cpu nodes

From: Sudeep Holla
Date: Thu Jan 16 2020 - 07:24:46 EST


Sorry for being pedantic and not mentioning this earlier. Can you improve
the $subject. I prefer:

cpu-topology: Don't error on more than CONFIG_NR_CPUS CPUs in device tree

On Thu, Jan 16, 2020 at 09:47:35AM +0800, Zeng Tao wrote:
> When CONFIG_NR_CPUS is smaller than the cpu nodes defined in the device
> tree, all the cpu nodes parsing will fail.
> And this is not reasonable for a legal device tree configs.
> In this patch, skip such cpu nodes rather than return an error.
>

Also the commit log to be:
"
When the kernel is configured with CONFIG_NR_CPUS smaller than the
number of CPU nodes in the device tree(DT), all the CPU nodes parsing
done to fetch topology information will fail. This is not reasonable
as it is legal to have all the physical CPUs in the system in the DT.

Let us just skip such CPU DT nodes that are not used in the kernel
rather than returning an error.
"
> Signed-off-by: Zeng Tao <prime.zeng@xxxxxxxxxxxxx>
> ---
> Changelog:
> v2->v3:
> -Fix the Review comments by sudeep, including fix typo, remove redundant check
> logic, change the warning print level etc.
> v1->v2:
> -Remove redundant -ENODEV assignment in get_cpu_for_node
> -Add comment to describe the get_cpu_for_node return values
> -Add skip process for cpu threads
> -Update the commit log with more detail
> ---
> drivers/base/arch_topology.c | 20 +++++++++++++++-----
> 1 file changed, 15 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
> index 5fe44b3..d4302a1 100644
> --- a/drivers/base/arch_topology.c
> +++ b/drivers/base/arch_topology.c
> @@ -248,6 +248,16 @@ core_initcall(free_raw_capacity);
> #endif
>
> #if defined(CONFIG_ARM64) || defined(CONFIG_RISCV)
> +/*
> + * This function returns the logic cpu number of the node.
> + * There are basically three kinds of return values:
> + * (1) logic cpu number which is > 0.
> + * (2) -ENODEV when the node is valid one which can be found in the device tree
> + * but there is no possible cpu nodes to match, when the CONFIG_NR_CPUS is
> + * smaller than cpus node numbers in device tree, this will happen. It's
> + * suggested to just ignore this case.

I prefer (2) to be reword as below:
"
-ENODEV when the device tree(DT) node is valid and found in the DT but
there is no possible logical CPU in the kernel to match. This happens
when CONFIG_NR_CPUS is configure to be smaller than the number of CPU
nodes in DT. We need to just ignore this case.
"

With all these changes you can stick:
Reviewed-by: Sudeep Holla <sudeep.holla@xxxxxxx>

--
Regards,
Sudeep