Messages in this thread | | | Date | Sat, 12 Feb 2011 09:47:07 -0800 | From | Yinghai Lu <> | Subject | Re: [PATCH 02/26] x86-64, NUMA: Simplify hotplug node handling in acpi_numa_memory_affinity_init() |
| |
On 02/12/2011 09:10 AM, Tejun Heo wrote: > Hotplug node handling in acpi_numa_memory_affinity_init() was > unnecessarily complicated with storing the original nodes[] entry and > restoring it afterwards. Simplify it by not modifying the nodes[] > entry for hotplug nodes from the beginning. > > Signed-off-by: Tejun Heo <tj@kernel.org> > Cc: Yinghai Lu <yinghai@kernel.org> > Cc: Brian Gerst <brgerst@gmail.com> > Cc: Cyrill Gorcunov <gorcunov@gmail.com> > Cc: Shaohui Zheng <shaohui.zheng@intel.com> > Cc: David Rientjes <rientjes@google.com> > Cc: Ingo Molnar <mingo@elte.hu> > Cc: H. Peter Anvin <hpa@linux.intel.com> > --- > arch/x86/mm/srat_64.c | 31 +++++++++++++------------------ > 1 files changed, 13 insertions(+), 18 deletions(-) > > diff --git a/arch/x86/mm/srat_64.c b/arch/x86/mm/srat_64.c > index 9a97261..e3e0dd3 100644 > --- a/arch/x86/mm/srat_64.c > +++ b/arch/x86/mm/srat_64.c > @@ -251,7 +251,7 @@ update_nodes_add(int node, unsigned long start, unsigned long end) > void __init > acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma) > { > - struct bootnode *nd, oldnode; > + struct bootnode *nd; > unsigned long start, end; > int node, pxm; > int i; > @@ -289,28 +289,23 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma) > bad_srat(); > return; > } > - nd = &nodes[node]; > - oldnode = *nd; > - if (!node_test_and_set(node, nodes_parsed)) { > - nd->start = start; > - nd->end = end; > - } else { > - if (start < nd->start) > - nd->start = start; > - if (nd->end < end) > - nd->end = end; > - } > > printk(KERN_INFO "SRAT: Node %u PXM %u %lx-%lx\n", node, pxm, > start, end); > > - if (ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) { > + if (!(ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE)) { > + nd = &nodes[node]; > + if (!node_test_and_set(node, nodes_parsed)) { > + nd->start = start; > + nd->end = end; > + } else { > + if (start < nd->start) > + nd->start = start; > + if (nd->end < end) > + nd->end = end; > + } > + } else > update_nodes_add(node, start, end); > - /* restore nodes[node] */ > - *nd = oldnode; > - if ((nd->start | nd->end) == 0) > - node_clear(node, nodes_parsed); > - } > > node_memblk_range[num_node_memblks].start = start; > node_memblk_range[num_node_memblks].end = end;
after change looks like nodes_parsed is not set anymore for node that only have hotplug memory.
Thanks
Yinghai
| |