• Manish V Badarkhe's avatar
    Implement workaround for AT speculative behaviour · 45aecff0
    Manish V Badarkhe authored
    During context switching from higher EL (EL2 or higher)
    to lower EL can cause incorrect translation in TLB due to
    speculative execution of AT instruction using out-of-context
    translation regime.
    
    Workaround is implemented as below during EL's (EL1 or EL2)
    "context_restore" operation:
    1. Disable page table walk using SCTLR.M and TCR.EPD0 & EPD1
       bits for EL1 or EL2 (stage1 and stage2 disabled)
    2. Save all system registers except TCR and SCTLR (for EL1 and EL2)
    3. Do memory barrier operation (isb) to ensure all
       system register writes are done.
    4. Restore TCR and SCTLR registers (for EL1 and EL2)
    
    Errata details are available for various CPUs as below:
    Cortex-A76: 1165522
    Cortex-A72: 1319367
    Cortex-A57: 1319537
    Cortex-A55: 1530923
    Cortex-A53: 1530924
    
    More details can be found in mail-chain:
    https://lists.trustedfirmware.org/pipermail/tf-a/2020-April/000445.html
    
    
    
    Currently, Workaround is implemented as build option which is default
    disabled.
    Signed-off-by: default avatarManish V Badarkhe <Manish.Badarkhe@arm.com>
    Change-Id: If8545e61f782cb0c2dda7ffbaf50681c825bd2f0
    45aecff0
arch.h 31.2 KB