From: ddaney@caviumnetworks.com (David Daney)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/3] of/numa: fix a memory@ dt node can only contains one memory block
Date: Fri, 27 May 2016 09:07:02 -0700 [thread overview]
Message-ID: <574870A6.40003@caviumnetworks.com> (raw)
In-Reply-To: <5747C0BF.505@huawei.com>
On 05/26/2016 08:36 PM, Leizhen (ThunderTown) wrote:
[...] continue;
> Hi, everybody:
> If some "memory" node contains "numa-node-id", but some others missed. Can we simply ignored it?
> I think we should break out too, and faking to only have node0.
I think if some "memory" nodes contain "numa-node-id" and others do not,
then you have a defective device tree. In this case I think we must
continue with the existing behavior, and indicate failure. This will
cause the architecture specific NUMA code to disable NUMA and force
everything onto a singl pseudo-NUMA-node.
I doubt there is anything to be gained by guessing which NUMA node
orphaned "memory" nodes belong to.
>
>> else if (r)
>> /* some other error */
>> break;
>>
>> r = of_address_to_resource(np, 0, &rsrc);
>> for (i = 0; !r; i++, r = of_address_to_resource(np, i,
>
> But r(non-zero) is just break this loop, the original is break the outer for (;;) loop
>
> How about as below?
>
> for_each_node_by_type(np, "memory") {
> ... ...
>
> for (i = 0; !of_address_to_resource(np, i, &rsrc); i++) {
> r = numa_add_memblk(nid, rsrc.start,
> rsrc.end - rsrc.start + 1);
> if (r)
> goto finished;
> }
>
> if (!i)
> pr_err("NUMA: bad reg property in memory node\n");
> }
>
> finished:
>
>
>> &rsrc)) {
>> r = numa_add_memblk(nid, rsrc.start,
>> rsrc.end - rsrc.start + 1);
>> }
>> }
>> of_node_put(np);
>>
>> return r;
>>
>>
>> Perhaps with a "if (!i && r) pr_err()" for an error message at the end.
>>
>> Rob
>>
>> .
>>
>
WARNING: multiple messages have this Message-ID (diff)
From: David Daney <ddaney@caviumnetworks.com>
To: "Leizhen (ThunderTown)" <thunder.leizhen@huawei.com>
Cc: David Daney <david.daney@cavium.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Xinwei Hu <huxinwei@huawei.com>,
Hanjun Guo <guohanjun@huawei.com>,
Will Deacon <will.deacon@arm.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
Robert Richter <rrichter@cavium.com>,
devicetree <devicetree@vger.kernel.org>,
Zefan Li <lizefan@huawei.com>,
Tianhong Ding <dingtianhong@huawei.com>,
Grant Likely <grant.likely@linaro.org>,
Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com>,
Frank Rowand <frowand.list@gmail.com>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 2/3] of/numa: fix a memory@ dt node can only contains one memory block
Date: Fri, 27 May 2016 09:07:02 -0700 [thread overview]
Message-ID: <574870A6.40003@caviumnetworks.com> (raw)
In-Reply-To: <5747C0BF.505@huawei.com>
On 05/26/2016 08:36 PM, Leizhen (ThunderTown) wrote:
[...] continue;
> Hi, everybody:
> If some "memory" node contains "numa-node-id", but some others missed. Can we simply ignored it?
> I think we should break out too, and faking to only have node0.
I think if some "memory" nodes contain "numa-node-id" and others do not,
then you have a defective device tree. In this case I think we must
continue with the existing behavior, and indicate failure. This will
cause the architecture specific NUMA code to disable NUMA and force
everything onto a singl pseudo-NUMA-node.
I doubt there is anything to be gained by guessing which NUMA node
orphaned "memory" nodes belong to.
>
>> else if (r)
>> /* some other error */
>> break;
>>
>> r = of_address_to_resource(np, 0, &rsrc);
>> for (i = 0; !r; i++, r = of_address_to_resource(np, i,
>
> But r(non-zero) is just break this loop, the original is break the outer for (;;) loop
>
> How about as below?
>
> for_each_node_by_type(np, "memory") {
> ... ...
>
> for (i = 0; !of_address_to_resource(np, i, &rsrc); i++) {
> r = numa_add_memblk(nid, rsrc.start,
> rsrc.end - rsrc.start + 1);
> if (r)
> goto finished;
> }
>
> if (!i)
> pr_err("NUMA: bad reg property in memory node\n");
> }
>
> finished:
>
>
>> &rsrc)) {
>> r = numa_add_memblk(nid, rsrc.start,
>> rsrc.end - rsrc.start + 1);
>> }
>> }
>> of_node_put(np);
>>
>> return r;
>>
>>
>> Perhaps with a "if (!i && r) pr_err()" for an error message at the end.
>>
>> Rob
>>
>> .
>>
>
WARNING: multiple messages have this Message-ID (diff)
From: David Daney <ddaney@caviumnetworks.com>
To: "Leizhen (ThunderTown)" <thunder.leizhen@huawei.com>
Cc: Rob Herring <robh@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com>,
Robert Richter <rrichter@cavium.com>,
"David Daney" <david.daney@cavium.com>,
Frank Rowand <frowand.list@gmail.com>,
"Grant Likely" <grant.likely@linaro.org>,
devicetree <devicetree@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Zefan Li <lizefan@huawei.com>, Xinwei Hu <huxinwei@huawei.com>,
Tianhong Ding <dingtianhong@huawei.com>,
Hanjun Guo <guohanjun@huawei.com>
Subject: Re: [PATCH 2/3] of/numa: fix a memory@ dt node can only contains one memory block
Date: Fri, 27 May 2016 09:07:02 -0700 [thread overview]
Message-ID: <574870A6.40003@caviumnetworks.com> (raw)
In-Reply-To: <5747C0BF.505@huawei.com>
On 05/26/2016 08:36 PM, Leizhen (ThunderTown) wrote:
[...] continue;
> Hi, everybody:
> If some "memory" node contains "numa-node-id", but some others missed. Can we simply ignored it?
> I think we should break out too, and faking to only have node0.
I think if some "memory" nodes contain "numa-node-id" and others do not,
then you have a defective device tree. In this case I think we must
continue with the existing behavior, and indicate failure. This will
cause the architecture specific NUMA code to disable NUMA and force
everything onto a singl pseudo-NUMA-node.
I doubt there is anything to be gained by guessing which NUMA node
orphaned "memory" nodes belong to.
>
>> else if (r)
>> /* some other error */
>> break;
>>
>> r = of_address_to_resource(np, 0, &rsrc);
>> for (i = 0; !r; i++, r = of_address_to_resource(np, i,
>
> But r(non-zero) is just break this loop, the original is break the outer for (;;) loop
>
> How about as below?
>
> for_each_node_by_type(np, "memory") {
> ... ...
>
> for (i = 0; !of_address_to_resource(np, i, &rsrc); i++) {
> r = numa_add_memblk(nid, rsrc.start,
> rsrc.end - rsrc.start + 1);
> if (r)
> goto finished;
> }
>
> if (!i)
> pr_err("NUMA: bad reg property in memory node\n");
> }
>
> finished:
>
>
>> &rsrc)) {
>> r = numa_add_memblk(nid, rsrc.start,
>> rsrc.end - rsrc.start + 1);
>> }
>> }
>> of_node_put(np);
>>
>> return r;
>>
>>
>> Perhaps with a "if (!i && r) pr_err()" for an error message at the end.
>>
>> Rob
>>
>> .
>>
>
next prev parent reply other threads:[~2016-05-27 16:07 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-26 2:43 [PATCH 1/3] of/numa: remove a duplicated pr_debug information Zhen Lei
2016-05-26 2:43 ` Zhen Lei
2016-05-26 2:43 ` Zhen Lei
2016-05-26 2:43 ` [PATCH 2/3] of/numa: fix a memory@ dt node can only contains one memory block Zhen Lei
2016-05-26 2:43 ` Zhen Lei
2016-05-26 2:43 ` Zhen Lei
2016-05-26 13:13 ` Rob Herring
2016-05-26 13:13 ` Rob Herring
2016-05-27 3:36 ` Leizhen (ThunderTown)
2016-05-27 3:36 ` Leizhen (ThunderTown)
2016-05-27 3:36 ` Leizhen (ThunderTown)
2016-05-27 4:20 ` Rob Herring
2016-05-27 4:20 ` Rob Herring
2016-05-27 4:20 ` Rob Herring
2016-05-27 7:04 ` Leizhen (ThunderTown)
2016-05-27 7:04 ` Leizhen (ThunderTown)
2016-05-27 7:04 ` Leizhen (ThunderTown)
2016-05-27 16:07 ` David Daney [this message]
2016-05-27 16:07 ` David Daney
2016-05-27 16:07 ` David Daney
2016-05-26 2:43 ` [PATCH 3/3] arm64/numa: fix type info Zhen Lei
2016-05-26 2:43 ` Zhen Lei
2016-05-26 2:43 ` Zhen Lei
2016-05-26 16:22 ` Ganapatrao Kulkarni
2016-05-26 16:22 ` Ganapatrao Kulkarni
2016-05-26 16:35 ` Joe Perches
2016-05-26 16:35 ` Joe Perches
2016-05-26 17:12 ` David Daney
2016-05-26 17:12 ` David Daney
2016-05-27 2:35 ` Leizhen (ThunderTown)
2016-05-27 2:35 ` Leizhen (ThunderTown)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=574870A6.40003@caviumnetworks.com \
--to=ddaney@caviumnetworks.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.