• Yinghai Lu's avatar
    x86: only clear node_states for 64bit · 66918dcd
    Yinghai Lu authored
    Nathan reported that
    
    | commit 73d60b7f
    | Author: Yinghai Lu <yinghai@kernel.org>
    | Date:   Tue Jun 16 15:33:00 2009 -0700
    |
    |    page-allocator: clear N_HIGH_MEMORY map before we set it again
    |
    |    SRAT tables may contains nodes of very small size.  The arch code may
    |    decide to not activate such a node.  However, currently the early boot
    |    code sets N_HIGH_MEMORY for such nodes.  These nodes therefore seem to be
    |    active although these nodes have no present pages.
    |
    |    For 64bit N_HIGH_MEMORY == N_NORMAL_MEMORY, so that works for 64 bit too
    
    unintentionally and incorrectly clears the cpuset.mems cgroup attribute on
    an i386 kvm guest, meaning that cpuset.mems can not be used.
    
    Fix this by only clearing node_states[N_NORMAL_MEMORY] for 64bit only.
    and need to do save/restore for that in find_zone_movable_pfn
    Reported-by: default avatarNathan Lynch <ntl@pobox.com>
    Tested-by: default avatarNathan Lynch <ntl@pobox.com>
    Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
    Cc: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@elte.hu>,
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    66918dcd
page_alloc.c 135 KB