Skip to content
  • Stefano Stabellini's avatar
    xen: update mask_rw_pte after kernel page tables init changes · d8aa5ec3
    Stefano Stabellini authored
    After "x86-64, mm: Put early page table high" already existing kernel
    page table pages can be mapped using early_ioremap too so we need to
    update mask_rw_pte to make sure these pages are still mapped RO.
    The reason why we have to do that is explain by the commit message of
    fef5ba79
    
    :
    
    "Xen requires that all pages containing pagetable entries to be mapped
    read-only.  If pages used for the initial pagetable are already mapped
    then we can change the mapping to RO.  However, if they are initially
    unmapped, we need to make sure that when they are later mapped, they
    are also mapped RO.
    
    ..SNIP..
    
    the pagetable setup code early_ioremaps the pages to write their
    entries, so we must make sure that mappings created in the early_ioremap
    fixmap area are mapped RW.  (Those mappings are removed before the pages
    are presented to Xen as pagetable pages.)"
    
    We accomplish all this in mask_rw_pte by mapping RO all the pages mapped
    using early_ioremap apart from the last one that has been allocated
    because it is not a page table page yet (it has not been hooked into the
    page tables yet).
    
    Signed-off-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
    Acked-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    LKML-Reference: <alpine.DEB.2.00.1103171739050.3382@kaball-desktop>
    Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
    d8aa5ec3