lkml.org 
[lkml]   [2011]   [Feb]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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


    \
     
     \ /
      Last update: 2011-02-12 18:51    [W:0.032 / U:30.792 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site