• Petr Tesarik's avatar
    [IA64] Merge overlapping reserved regions at boot · 76d71ebd
    Petr Tesarik authored
    While working on the upcoming SLES11 SP2, I ran into an issue with booting the
    panic kernel on a kernel crash. In the first iteration I found out that the
    initial register backing store gets overwritten with zeroes, causing a kernel
    crash shortly afterwards.
    
    Further investigation revealed that rsvd_region[] contains overlapping
    entries: find_memmap_space() returns a pointer which lies between KERNEL_START
    and _end. This is correct with the EFI memmap as patched by the kexec
    purgatory code. That code removes vmlinux LOAD segments from the usable map,
    but there is a pretty large hole between the gate section and the per-cpu
    section.
    
    This happens because reserve_memory() blindly marks [KERNEL_START, __end]
    as reserved, even though there is a free block in the middle in the kexec
    case because it noticed a large gap between sections and modified the
    efi_memory_map to account for this.
    Signed-off-by: default avatarPetr Tesarik <ptesarik@suse.cz>
    Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
    76d71ebd
setup.c 28.9 KB