Commit 6bf0e079 authored by Antonio Nino Diaz's avatar Antonio Nino Diaz
Browse files

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: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
parent 5ff5a6d9
......@@ -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
......
......@@ -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) |
......
......@@ -54,6 +54,7 @@ void secure_partition_setup(void)
/* Invalidate TLBs at EL1. */
tlbivmalle1();
dsbish();
/*
* General-Purpose registers
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment