Re: [PATCH v12 3/5] dt, numa: Add NUMA dt binding implementation.

From: David Daney
Date: Mon Feb 29 2016 - 17:57:11 EST

On 02/29/2016 11:45 AM, Robert Richter wrote:
On 29.02.16 10:13:48, David Daney wrote:
On 02/29/2016 09:29 AM, Robert Richter wrote:
On 22.02.16 17:58:21, David Daney wrote:
From: Ganapatrao Kulkarni <gkulkarni@xxxxxxxxxxxxxxxxxx>

ADD device tree node parsing for NUMA topology using device
"numa-node-id" property distance-map.

Reviewed-by: Robert Richter <rrichter@xxxxxxxxxx>
Signed-off-by: Ganapatrao Kulkarni <gkulkarni@xxxxxxxxxxxxxxxxxx>
Signed-off-by: David Daney <david.daney@xxxxxxxxxx>
drivers/of/Kconfig | 3 +
drivers/of/Makefile | 1 +
drivers/of/of_numa.c | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++
include/linux/of.h | 9 +++
4 files changed, 224 insertions(+)
create mode 100644 drivers/of/of_numa.c

diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig
index e2a4841..b3bec3a 100644
--- a/drivers/of/Kconfig
+++ b/drivers/of/Kconfig
@@ -112,4 +112,7 @@ config OF_OVERLAY
While this option is selected automatically when needed, you can
enable it manually to improve device tree unit test coverage.

+config OF_NUMA

In arch/arm64/Kconfig you now need to:

select OF_NUMA if NUMA && OF

This should depend here on OF and NUMA and enabled in that case. Why
moving that to arch code?

The dependency on of_numa.o is in the architecture specific code, so that is
where the Kconfig select should be too.

If you grep for select in Kconfig files you will see that dependency
checkers in the form of select ... if ... are very rare.

You are right...

$ find . -name Kconfig | xargs grep -e 'select.*if' | wc -l
$ find . -name Kconfig | xargs grep -e 'select' | wc -l

The 'if' variety is encountered in fewer than 11% of the cases.

That said, I am not sure if this type of statistic should be used to evaluate code "goodness".


But to avoid arch configs in generic Kconfigs, define HAVE_OF_NUMA,
add it as dependency to OF_NUMA and select it in arch/arm64/Kconfig.
OF_NUMA is then enabled with defbool y if all requirements are met.

Really, what we want is NEEDS_OF_NUMA. That is exactly what "select OF_NUMA" means.

There is no need to build a Rube Goldberg device out of these Kconfig things. The "select OF_NUMA if NUMA && OF" is concise, allowed by the Kconfig system and exactly expresses when the file should be compiled.

Unless there are other objections, I am going to use the the Kconfig changes in the v12 form.