* [RFC Patch V1 22/30] mm, of: Use cpu_to_mem()/numa_mem_id() to support memoryless node [not found] <1405064267-11678-1-git-send-email-jiang.liu@linux.intel.com> @ 2014-07-11 7:37 ` Jiang Liu 2014-07-21 17:52 ` Nishanth Aravamudan 0 siblings, 1 reply; 4+ messages in thread From: Jiang Liu @ 2014-07-11 7:37 UTC (permalink / raw) To: Andrew Morton, Mel Gorman, David Rientjes, Mike Galbraith, Peter Zijlstra, Rafael J . Wysocki, Grant Likely, Rob Herring Cc: Jiang Liu, Tony Luck, linux-mm, linux-hotplug, linux-kernel, devicetree When CONFIG_HAVE_MEMORYLESS_NODES is enabled, cpu_to_node()/numa_node_id() may return a node without memory, and later cause system failure/panic when calling kmalloc_node() and friends with returned node id. So use cpu_to_mem()/numa_mem_id() instead to get the nearest node with memory for the/current cpu. If CONFIG_HAVE_MEMORYLESS_NODES is disabled, cpu_to_mem()/numa_mem_id() is the same as cpu_to_node()/numa_node_id(). Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> --- drivers/of/base.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index b9864806e9b8..40d4772973ad 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -85,7 +85,7 @@ EXPORT_SYMBOL(of_n_size_cells); #ifdef CONFIG_NUMA int __weak of_node_to_nid(struct device_node *np) { - return numa_node_id(); + return numa_mem_id(); } #endif -- 1.7.10.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [RFC Patch V1 22/30] mm, of: Use cpu_to_mem()/numa_mem_id() to support memoryless node 2014-07-11 7:37 ` [RFC Patch V1 22/30] mm, of: Use cpu_to_mem()/numa_mem_id() to support memoryless node Jiang Liu @ 2014-07-21 17:52 ` Nishanth Aravamudan 2014-07-28 13:30 ` Grant Likely 0 siblings, 1 reply; 4+ messages in thread From: Nishanth Aravamudan @ 2014-07-21 17:52 UTC (permalink / raw) To: Jiang Liu Cc: Andrew Morton, Mel Gorman, David Rientjes, Mike Galbraith, Peter Zijlstra, Rafael J . Wysocki, Grant Likely, Rob Herring, Tony Luck, linux-mm, linux-hotplug, linux-kernel, devicetree On 11.07.2014 [15:37:39 +0800], Jiang Liu wrote: > When CONFIG_HAVE_MEMORYLESS_NODES is enabled, cpu_to_node()/numa_node_id() > may return a node without memory, and later cause system failure/panic > when calling kmalloc_node() and friends with returned node id. > So use cpu_to_mem()/numa_mem_id() instead to get the nearest node with > memory for the/current cpu. > > If CONFIG_HAVE_MEMORYLESS_NODES is disabled, cpu_to_mem()/numa_mem_id() > is the same as cpu_to_node()/numa_node_id(). > > Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> > --- > drivers/of/base.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/of/base.c b/drivers/of/base.c > index b9864806e9b8..40d4772973ad 100644 > --- a/drivers/of/base.c > +++ b/drivers/of/base.c > @@ -85,7 +85,7 @@ EXPORT_SYMBOL(of_n_size_cells); > #ifdef CONFIG_NUMA > int __weak of_node_to_nid(struct device_node *np) > { > - return numa_node_id(); > + return numa_mem_id(); > } > #endif Um, NAK. of_node_to_nid() returns the NUMA node ID for a given device tree node. The default should be the physically local NUMA node, not the nearest memory-containing node. I think the general direction of this patchset is good -- what NUMA information do we actually are about at each callsite. But the execution is blind and doesn't consider at all what the code is actually doing. The changelogs are all identical and don't actually provide any information about what errors this (or any) specific patch are resolving. Thanks, Nish ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RFC Patch V1 22/30] mm, of: Use cpu_to_mem()/numa_mem_id() to support memoryless node 2014-07-21 17:52 ` Nishanth Aravamudan @ 2014-07-28 13:30 ` Grant Likely 2014-07-28 19:26 ` Nishanth Aravamudan 0 siblings, 1 reply; 4+ messages in thread From: Grant Likely @ 2014-07-28 13:30 UTC (permalink / raw) To: Nishanth Aravamudan, Jiang Liu Cc: Andrew Morton, Mel Gorman, David Rientjes, Mike Galbraith, Peter Zijlstra, Rafael J . Wysocki, Rob Herring, Tony Luck, linux-mm, linux-hotplug, linux-kernel, devicetree On Mon, 21 Jul 2014 10:52:41 -0700, Nishanth Aravamudan <nacc@linux.vnet.ibm.com> wrote: > On 11.07.2014 [15:37:39 +0800], Jiang Liu wrote: > > When CONFIG_HAVE_MEMORYLESS_NODES is enabled, cpu_to_node()/numa_node_id() > > may return a node without memory, and later cause system failure/panic > > when calling kmalloc_node() and friends with returned node id. > > So use cpu_to_mem()/numa_mem_id() instead to get the nearest node with > > memory for the/current cpu. > > > > If CONFIG_HAVE_MEMORYLESS_NODES is disabled, cpu_to_mem()/numa_mem_id() > > is the same as cpu_to_node()/numa_node_id(). > > > > Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> > > --- > > drivers/of/base.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/of/base.c b/drivers/of/base.c > > index b9864806e9b8..40d4772973ad 100644 > > --- a/drivers/of/base.c > > +++ b/drivers/of/base.c > > @@ -85,7 +85,7 @@ EXPORT_SYMBOL(of_n_size_cells); > > #ifdef CONFIG_NUMA > > int __weak of_node_to_nid(struct device_node *np) > > { > > - return numa_node_id(); > > + return numa_mem_id(); > > } > > #endif > > Um, NAK. of_node_to_nid() returns the NUMA node ID for a given device > tree node. The default should be the physically local NUMA node, not the > nearest memory-containing node. That description doesn't match the code. This patch only changes the default implementation of of_node_to_nid() which doesn't take the device node into account *at all* when returning a node ID. Just look at the diff. I think this patch is correct, and it doesn't affect the override versions provided by powerpc and sparc. g. > > I think the general direction of this patchset is good -- what NUMA > information do we actually are about at each callsite. But the execution > is blind and doesn't consider at all what the code is actually doing. > The changelogs are all identical and don't actually provide any > information about what errors this (or any) specific patch are > resolving. > > Thanks, > Nish > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RFC Patch V1 22/30] mm, of: Use cpu_to_mem()/numa_mem_id() to support memoryless node 2014-07-28 13:30 ` Grant Likely @ 2014-07-28 19:26 ` Nishanth Aravamudan 0 siblings, 0 replies; 4+ messages in thread From: Nishanth Aravamudan @ 2014-07-28 19:26 UTC (permalink / raw) To: Grant Likely Cc: Jiang Liu, Andrew Morton, Mel Gorman, David Rientjes, Mike Galbraith, Peter Zijlstra, Rafael J . Wysocki, Rob Herring, Tony Luck, linux-mm, linux-hotplug, linux-kernel, devicetree On 28.07.2014 [07:30:40 -0600], Grant Likely wrote: > On Mon, 21 Jul 2014 10:52:41 -0700, Nishanth Aravamudan <nacc@linux.vnet.ibm.com> wrote: > > On 11.07.2014 [15:37:39 +0800], Jiang Liu wrote: > > > When CONFIG_HAVE_MEMORYLESS_NODES is enabled, cpu_to_node()/numa_node_id() > > > may return a node without memory, and later cause system failure/panic > > > when calling kmalloc_node() and friends with returned node id. > > > So use cpu_to_mem()/numa_mem_id() instead to get the nearest node with > > > memory for the/current cpu. > > > > > > If CONFIG_HAVE_MEMORYLESS_NODES is disabled, cpu_to_mem()/numa_mem_id() > > > is the same as cpu_to_node()/numa_node_id(). > > > > > > Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> > > > --- > > > drivers/of/base.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/of/base.c b/drivers/of/base.c > > > index b9864806e9b8..40d4772973ad 100644 > > > --- a/drivers/of/base.c > > > +++ b/drivers/of/base.c > > > @@ -85,7 +85,7 @@ EXPORT_SYMBOL(of_n_size_cells); > > > #ifdef CONFIG_NUMA > > > int __weak of_node_to_nid(struct device_node *np) > > > { > > > - return numa_node_id(); > > > + return numa_mem_id(); > > > } > > > #endif > > > > Um, NAK. of_node_to_nid() returns the NUMA node ID for a given device > > tree node. The default should be the physically local NUMA node, not the > > nearest memory-containing node. > > That description doesn't match the code. This patch only changes the > default implementation of of_node_to_nid() which doesn't take the device > node into account *at all* when returning a node ID. Just look at the > diff. I meant that of_node_to_nid() seems to be used throughout the call-sites to indicate caller locality. We want to keep using cpu_to_node() there, and fallback appropriately in the MM (when allocations occur offnode due to memoryless nodes), not indicate memory-specific topology the caller itself. There was a long thread between between Tejun and I that discussed what we are trying for: https://lkml.org/lkml/2014/7/18/278 I understand that the code unconditionally returns current's NUMA node ID right now (ignoring the device node). That seems correct, to me, for something like: of_device_add: /* device_add will assume that this device is on the same node as * the parent. If there is no parent defined, set the node * explicitly */ if (!ofdev->dev.parent) set_dev_node(&ofdev->dev, of_node_to_nid(ofdev->dev.of_node)); I don't think we want the default implementation to set the NUMA node of a dev to the nearest NUMA node with memory? > I think this patch is correct, and it doesn't affect the override > versions provided by powerpc and sparc. Yes, agreed, so maybe it doesn't matter. I guess my point was simply that it only seems reasonable to change callers of cpu_to_node() to cpu_to_mem() that aren't in the core MM is if they care about memoryless nodes explicitly. I don't think the OF code does, so I don't think it should change. Sorry for my premature NAK and lack of clarity in my explanation. -Nish -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-07-28 19:26 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <1405064267-11678-1-git-send-email-jiang.liu@linux.intel.com> 2014-07-11 7:37 ` [RFC Patch V1 22/30] mm, of: Use cpu_to_mem()/numa_mem_id() to support memoryless node Jiang Liu 2014-07-21 17:52 ` Nishanth Aravamudan 2014-07-28 13:30 ` Grant Likely 2014-07-28 19:26 ` Nishanth Aravamudan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).