Skip to content
  • Aric D. Blumer's avatar
    ARM: pxa: fix page table corruption on resume · 24c78557
    Aric D. Blumer authored
    
    
    Before this patch, the following error would sometimes occur after a
    resume on pxa3xx:
    
        /path/to/mm/memory.c:144: bad pmd 8040542e.
    
    The problem was that a temporary page table mapping was being improperly
    restored.
    
    The PXA3xx resume code creates a temporary mapping of resume_turn_on_mmu
    to avoid a prefetch abort.  The pxa3xx_resume_after_mmu code requires
    that the r1 register holding the address of this mapping not be
    modified, however, resume_turn_on_mmu does modify it. It is mostly
    correct in that r1 receives the base table address, but it may also
    get other bits in 13:0.  This results in pxa3xx_resume_after_mmu
    restoring the original mapping to the wrong place, corrupting memory
    and leaving the temporary mapping in place.
    
    Signed-off-by: default avatarMatt Reimer <mreimer@sdgsystems.com>
    Signed-off-by: default avatarEric Miao <eric.y.miao@gmail.com>
    24c78557