Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1351906 > unrolled thread

Re: [PATCH v14 2/6] Documentation, dt, numa: dt bindings for NUMA.

Started byRobert Richter <robert.richter@caviumnetworks.com>
First post2016-03-07 20:40 +0100
Last post2016-03-08 06:10 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH v14 2/6] Documentation, dt, numa: dt bindings for NUMA. Robert Richter <robert.richter@caviumnetworks.com> - 2016-03-07 20:40 +0100
    Re: [PATCH v14 2/6] Documentation, dt, numa: dt bindings for NUMA. Ganapatrao Kulkarni <gpkulkarni@gmail.com> - 2016-03-08 06:10 +0100

#1351906 — Re: [PATCH v14 2/6] Documentation, dt, numa: dt bindings for NUMA.

FromRobert Richter <robert.richter@caviumnetworks.com>
Date2016-03-07 20:40 +0100
SubjectRe: [PATCH v14 2/6] Documentation, dt, numa: dt bindings for NUMA.
Message-ID<ra9ay-784-5@gated-at.bofh.it>
On 03.03.16 15:55:35, David Daney wrote:
> From: Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com>
> 
> Add DT bindings for numa mapping of memory, CPUs and IOs.
> 
> Reviewed-by: Robert Richter <rrichter@cavium.com>
> Signed-off-by: Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com>
> Signed-off-by: David Daney <david.daney@cavium.com>
> ---
>  Documentation/devicetree/bindings/numa.txt | 272 +++++++++++++++++++++++++++++
>  1 file changed, 272 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/numa.txt
> 
> diff --git a/Documentation/devicetree/bindings/numa.txt b/Documentation/devicetree/bindings/numa.txt
> new file mode 100644
> index 0000000..ec5ed7c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/numa.txt

> +==============================================================================
> +3 - distance-map
> +==============================================================================
> +
> +The device tree node distance-map describes the relative
> +distance (memory latency) between all numa nodes.
> +
> +- compatible : Should at least contain "numa-distance-map-v1".
> +
> +- distance-matrix
> +  This property defines a matrix to describe the relative distances
> +  between all numa nodes.
> +  It is represented as a list of node pairs and their relative distance.
> +
> +  Note:
> +	1. Each entry represents distance from first node to second node.
> +	The distances are equal in either direction.
> +	2. The distance from a node to self (local distance) is represented
> +	with value 10 and all internode distance should be represented with
> +	a value greater than 10.
> +	3. distance-matrix should have entries in lexicographical ascending
> +	order of nodes.
> +	4. There must be only one device node distance-map which must reside in the root node.

There is no note that this one is optional, but is it right? The
default is 10 for local and 20 for remote connections.

If so, then ...

static int __init of_numa_parse_distance_map(void)
{
	int ret = -EINVAL;
	struct device_node *np = of_find_node_by_path("/distance-map");

	if (!np)
		return ret;

must return 0 instead of -EINVAL here.

-Robert

> +
> +Example:
> +	4 nodes connected in mesh/ring topology as below,
> +
> +		0_______20______1
> +		|               |
> +		|               |
> +		20             20
> +		|               |
> +		|               |
> +		|_______________|
> +		3       20      2
> +
> +	if relative distance for each hop is 20,
> +	then internode distance would be,
> +	      0 -> 1 = 20
> +	      1 -> 2 = 20
> +	      2 -> 3 = 20
> +	      3 -> 0 = 20
> +	      0 -> 2 = 40
> +	      1 -> 3 = 40
> +
> +     and dt presentation for this distance matrix is,
> +
> +		distance-map {
> +			 compatible = "numa-distance-map-v1";
> +			 distance-matrix = <0 0  10>,
> +					   <0 1  20>,
> +					   <0 2  40>,
> +					   <0 3  20>,
> +					   <1 0  20>,
> +					   <1 1  10>,
> +					   <1 2  20>,
> +					   <1 3  40>,
> +					   <2 0  40>,
> +					   <2 1  20>,
> +					   <2 2  10>,
> +					   <2 3  20>,
> +					   <3 0  20>,
> +					   <3 1  40>,
> +					   <3 2  20>,
> +					   <3 3  10>;
> +		};

[toc] | [next] | [standalone]


#1352630

FromGanapatrao Kulkarni <gpkulkarni@gmail.com>
Date2016-03-08 06:10 +0100
Message-ID<rai49-4K7-3@gated-at.bofh.it>
In reply to#1351906
On Tue, Mar 8, 2016 at 1:17 AM, David Daney <ddaney@caviumnetworks.com> wrote:
> On 03/07/2016 11:22 AM, Robert Richter wrote:
>>
>> On 03.03.16 15:55:35, David Daney wrote:
>>>
>>> From: Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com>
>>>
>>> Add DT bindings for numa mapping of memory, CPUs and IOs.
>>>
>>> Reviewed-by: Robert Richter <rrichter@cavium.com>
>>> Signed-off-by: Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com>
>>> Signed-off-by: David Daney <david.daney@cavium.com>
>>> ---
>>>   Documentation/devicetree/bindings/numa.txt | 272
>>> +++++++++++++++++++++++++++++
>>>   1 file changed, 272 insertions(+)
>>>   create mode 100644 Documentation/devicetree/bindings/numa.txt
>>>
>>> diff --git a/Documentation/devicetree/bindings/numa.txt
>>> b/Documentation/devicetree/bindings/numa.txt
>>> new file mode 100644
>>> index 0000000..ec5ed7c
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/numa.txt
>>
>>
>>>
>>> +==============================================================================
>>> +3 - distance-map
>>>
>>> +==============================================================================
>>> +
>>> +The device tree node distance-map describes the relative
>>> +distance (memory latency) between all numa nodes.
>>> +
>>> +- compatible : Should at least contain "numa-distance-map-v1".
>>> +
>>> +- distance-matrix
>>> +  This property defines a matrix to describe the relative distances
>>> +  between all numa nodes.
>>> +  It is represented as a list of node pairs and their relative distance.
>>> +
>>> +  Note:
>>> +       1. Each entry represents distance from first node to second node.
>>> +       The distances are equal in either direction.
>>> +       2. The distance from a node to self (local distance) is
>>> represented
>>> +       with value 10 and all internode distance should be represented
>>> with
>>> +       a value greater than 10.
>>> +       3. distance-matrix should have entries in lexicographical
>>> ascending
>>> +       order of nodes.
>>> +       4. There must be only one device node distance-map which must
>>> reside in the root node.
>>
>>
>> There is no note that this one is optional, but is it right? The
>> default is 10 for local and 20 for remote connections.
>>
>
> Do we need to explicitly state that it is optional?  Many node types are
> optional, and their binding specifications don't really talk about their
> being optional.
>
> If the node is present then it has the meaning specified.
>
> If the node is *not* present, then the special meaning described in the
> bindings document does not apply.
>
> In the case of NUMA, this means that all memory is equally distant (i.e. it
> is *Uniform*), and we are not talking about a *Non* *Uniform* Memory
> Architecture (NUMA) system.
>
>
>> If so, then ...
>>
>> static int __init of_numa_parse_distance_map(void)
>> {
>>         int ret = -EINVAL;
>>         struct device_node *np = of_find_node_by_path("/distance-map");
>>
>>         if (!np)
>>                 return ret;
>>
>> must return 0 instead of -EINVAL here.
>
>
> No, I don't think doing that would be correct.
>
> If there is no "distance-map", then of_numa_init() returns the error code.
> This causes the code in arch/arm64/kernel/numa.c to fall back to the
> non-NUMA "dummy_numa" case.

IMO, return 0 will allow 2 node system to have distance-map optional.
by default node distance is set to 10 for local node and for remote node is 20
and this will suffice the need of 2 node system.
by returning EINVAL, we are forcing 2 node system (and even for
systems which has equal remote distances)
to define distance-map.

>
> By adding your Reviewed-by: Robert Richter <rrichter@cavium.com> tag to
> patch 5/6, where we select between "real" and "dummy_numa", I had assumed
> that you agreed with this approach.
>
> David Daney

Ganapat
>
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web