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:
parent
5ff5a6d9c3
commit
6bf0e07930
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue