• Olaf Hering's avatar
    xen PVonHVM: use E820_Reserved area for shared_info · 9d02b43d
    Olaf Hering authored
    This is a respin of 00e37bdb
    ("xen PVonHVM: move shared_info to MMIO before kexec").
    
    Currently kexec in a PVonHVM guest fails with a triple fault because the
    new kernel overwrites the shared info page. The exact failure depends on
    the size of the kernel image. This patch moves the pfn from RAM into an
    E820 reserved memory area.
    
    The pfn containing the shared_info is located somewhere in RAM. This will
    cause trouble if the current kernel is doing a kexec boot into a new
    kernel. The new kernel (and its startup code) can not know where the pfn
    is, so it can not reserve the page. The hypervisor will continue to update
    the pfn, and as a result memory corruption occours in the new kernel.
    
    The toolstack marks the memory area FC000000-FFFFFFFF as reserved in the
    E820 map. Within that range newer toolstacks (4.3+) will keep 1MB
    starting from FE700000 as reserved for guest use. Older Xen4 toolstacks
    will usually not allocate areas up to FE700000, so FE700000 is expected
    to work also with older toolstacks.
    
    In Xen3 there is no reserved area at a fixed location. If the guest is
    started on such old hosts the shared_info page will be placed in RAM. As
    a result kexec can not be used.
    Signed-off-by: default avatarOlaf Hering <olaf@aepfle.de>
    Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    9d02b43d
enlighten.c 38.9 KB