• Rafael J. Wysocki's avatar
    x86, hibernate: fix breakage on x86_32 with CONFIG_NUMA set · 97a70e54
    Rafael J. Wysocki authored
    Impact: fix crash during hibernation on 32-bit NUMA
    
    The NUMA code on x86_32 creates special memory mapping that allows
    each node's pgdat to be located in this node's memory.  For this
    purpose it allocates a memory area at the end of each node's memory
    and maps this area so that it is accessible with virtual addresses
    belonging to low memory.  As a result, if there is high memory,
    these NUMA-allocated areas are physically located in high memory,
    although they are mapped to low memory addresses.
    
    Our hibernation code does not take that into account and for this
    reason hibernation fails on all x86_32 systems with CONFIG_NUMA=y and
    with high memory present.  Fix this by adding a special mapping for
    the NUMA-allocated memory areas to the temporary page tables created
    during the last phase of resume.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    97a70e54
hibernate_32.c 3.93 KB