• K
    xen/mmu: Release just the MFN list, not MFN list and part of pagetables. · 785f6231
    Konrad Rzeszutek Wilk 提交于
    We call memblock_reserve for [start of mfn list] -> [PMD aligned end
    of mfn list] instead of <start of mfn list> -> <page aligned end of mfn list].
    
    This has the disastrous effect that if at bootup the end of mfn_list is
    not PMD aligned we end up returning to memblock parts of the region
    past the mfn_list array. And those parts are the PTE tables with
    the disastrous effect of seeing this at bootup:
    
    Write protecting the kernel read-only data: 10240k
    Freeing unused kernel memory: 1860k freed
    Freeing unused kernel memory: 200k freed
    (XEN) mm.c:2429:d0 Bad type (saw 1400000000000002 != exp 7000000000000000) for mfn 116a80 (pfn 14e26)
    ...
    (XEN) mm.c:908:d0 Error getting mfn 116a83 (pfn 14e2a) from L1 entry 8000000116a83067 for l1e_owner=0, pg_owner=0
    (XEN) mm.c:908:d0 Error getting mfn 4040 (pfn 5555555555555555) from L1 entry 0000000004040601 for l1e_owner=0, pg_owner=0
    .. and so on.
    Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    785f6231
mmu.c 61.8 KB