Ensure the correct execution of TLBI instructions

After executing a TLBI a DSB is needed to ensure completion of the
TLBI.

rk3328: The MMU is allowed to load TLB entries for as long as it is
enabled. Because of this, the correct place to execute a TLBI is right
after disabling the MMU.

Change-Id: I8280f248d10b49a8c354a4ccbdc8f8345ac4c170
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
Antonio Nino Diaz 2018-02-19 13:53:48 +00:00
parent 5ff5a6d9c3
commit 6bf0e07930
3 changed files with 5 additions and 1 deletions

View File

@ -187,6 +187,7 @@ func smc_handler64
bl disable_mmu_icache_el3
tlbi alle3
dsb ish /* ERET implies ISB, so it is not needed here */
#if SPIN_ON_BL1_EXIT
bl print_debug_loop_message

View File

@ -591,8 +591,10 @@ err_loop:
__sramfunc void sram_suspend(void)
{
/* disable mmu and icache */
tlbialle3();
disable_mmu_icache_el3();
tlbialle3();
dsbsy();
isb();
mmio_write_32(SGRF_BASE + SGRF_SOC_CON(1),
((uintptr_t)&pmu_cpuson_entrypoint >> CPU_BOOT_ADDR_ALIGN) |

View File

@ -54,6 +54,7 @@ void secure_partition_setup(void)
/* Invalidate TLBs at EL1. */
tlbivmalle1();
dsbish();
/*
* General-Purpose registers