• Sandrine Bailleux's avatar
    Initialize VTTBR_EL2 when bypassing EL2 · 85d80e55
    Sandrine Bailleux authored
    In the situation that EL1 is selected as the exception level for the
    next image upon BL31 exit for a processor that supports EL2, the
    context management code must configure all essential EL2 register
    state to ensure correct execution of EL1.
    
    VTTBR_EL2 should be part of this set of EL2 registers because:
     - The ARMv8-A architecture does not define a reset value for this
       register.
     - Cache maintenance operations depend on VTTBR_EL2.VMID even when
       non-secure EL1&0 stage 2 address translation are disabled.
    
    This patch initializes the VTTBR_EL2 register to 0 when bypassing EL2
    to address this issue. Note that this bug has not yet manifested
    itself on FVP or Juno because VTTBR_EL2.VMID resets to 0 on the
    Cortex-A53 and Cortex-A57.
    
    Change-Id: I58ce2d16a71687126f437577a506d93cb5eecf33
    85d80e55
arch_helpers.h 11.5 KB