lkml.org 
[lkml]   [2008]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 2 of 4] hotplug-memory: adding non-section-aligned memory is bad
    Date
    From
    Adding non-section-aligned memory will cause bad results, because page
    structures are only built on section-aligned boundaries. Also, memory
    whose size isn't a multiple of the section size is silently ignored.

    This patch adds a couple of WARN_ONs to help confused programmers work
    out what's going wrong when they hotplug memory without being aware of
    these constraints.

    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Yasunori Goto <y-goto@jp.fujitsu.com>
    Cc: Christoph Lameter <clameter@sgi.com>
    Cc: Dave Hansen <dave@linux.vnet.ibm.com>

    diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
    --- a/include/linux/mmzone.h
    +++ b/include/linux/mmzone.h
    @@ -784,6 +784,9 @@
    #define PAGES_PER_SECTION (1UL << PFN_SECTION_SHIFT)
    #define PAGE_SECTION_MASK (~(PAGES_PER_SECTION-1))

    +#define SECTION_SIZE (1UL << SECTION_SIZE_BITS)
    +#define SECTION_SIZE_MASK (SECTION_SIZE - 1)
    +
    #define SECTION_BLOCKFLAGS_BITS \
    ((1UL << (PFN_SECTION_SHIFT - pageblock_order)) * NR_PAGEBLOCK_BITS)

    diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
    --- a/mm/memory_hotplug.c
    +++ b/mm/memory_hotplug.c
    @@ -300,6 +300,11 @@
    int ret;
    u64 start = res->start;
    u64 size = res->end - res->start + 1;
    +
    + /* Adding non-section-aligned memory will give unexpected
    + and unintuitive results. */
    + WARN_ON((start & SECTION_SIZE_MASK) != 0);
    + WARN_ON((size & SECTION_SIZE_MASK) != 0);

    if (!node_online(nid)) {
    pgdat = hotadd_new_pgdat(nid, start);



    \
     
     \ /
      Last update: 2008-03-28 02:13    [W:0.040 / U:0.452 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site