lkml.org 
[lkml]   [2009]   [Jul]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[RFC patch] delete improper hot pluggable code of memory affinity
    From
    Hello,

    The current kernel code *wrongly* interprets Hot Pluggable bit of
    Memory Affinity Structure (SRAT table in ACPI spec).
    if Hot Pluggable bit is set and CONFIG_MEMORY_HOTPLUG_SPARSE is NOT
    set, the memory Affinity will
    be ignored. And a faked Node will be used...

    An alternative is to enable CONFIG_MEMORY_HOTPLUG_SPARSE *always*
    along with acpi_numa_memory_affinity_init.
    Please decide which one is appropriate.

    The downside of this patch is *some useful info* is lost and a follow
    up patch is needed.

    **The patch is enclosed in text attachment*
    **Using web client to send the patch* *
    **below is for review, please apply attached patch*/

    Thanks,
    Luming


    Signed-off-by: Yu Luming <luming.yu@intel.com>

    srat_64.c | 16 ----------------
    1 file changed, 16 deletions(-)


    diff --git a/arch/x86/mm/srat_64.c b/arch/x86/mm/srat_64.c
    index 2dfcbf9..82423e5 100644
    --- a/arch/x86/mm/srat_64.c
    +++ b/arch/x86/mm/srat_64.c
    @@ -172,11 +172,6 @@ acpi_numa_processor_affinity_init(struct
    acpi_srat_cpu_affinity *pa)
    pxm, apic_id, node);
    }

    -#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE
    -static inline int save_add_info(void) {return 1;}
    -#else
    -static inline int save_add_info(void) {return 0;}
    -#endif
    /*
    * Update nodes_add[]
    * This code supports one contiguous hot add area per node
    @@ -249,9 +244,6 @@ acpi_numa_memory_affinity_init(struct
    acpi_srat_mem_affinity *ma)
    }
    if ((ma->flags & ACPI_SRAT_MEM_ENABLED) == 0)
    return;
    -
    - if ((ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) && !save_add_info())
    - return;
    start = ma->base_address;
    end = start + ma->length;
    pxm = ma->proximity_domain;
    @@ -291,14 +283,6 @@ acpi_numa_memory_affinity_init(struct
    acpi_srat_mem_affinity *ma)
    e820_register_active_regions(node, start >> PAGE_SHIFT,
    end >> PAGE_SHIFT);

    - if (ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) {
    - 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;
    memblk_nodeid[num_node_memblks] = node;[unhandled content-type:application/octet-stream]
    \
     
     \ /
      Last update: 2009-07-16 11:21    [W:0.042 / U:0.048 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site