[coreboot-gerrit] Patch set updated for coreboot: c22c44b libpayload arm64: fix mmu_disable() cache problem
Patrick Georgi (pgeorgi@google.com)
gerrit at coreboot.org
Fri Mar 20 10:56:36 CET 2015
Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8799
-gerrit
commit c22c44b9fd1658cb2551c585e2b2c46a851efa5c
Author: HC Yen <hc.yen at mediatek.com>
Date: Mon Jan 12 18:53:01 2015 +0800
libpayload arm64: fix mmu_disable() cache problem
The raw_write_sctlr_current() cannot be used in mmu_disable() because
it pushes some registers to cached stack, and then just after cache
disabled, the value was gone.
BRANCH=none
BUG=none
TEST=build and boot on mt8173-evb
Change-Id: I512405b7917f27d16bdd3c51d9459827ad714e67
Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
Original-Commit-Id: aafe64922cc4cd01ecb099db106d04538e3e57ff
Original-Change-Id: I0dda8518d14c46fae1fe76e3629bd4ee81c1e0ee
Original-Signed-off-by: HC Yen <hc.yen at mediatek.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/240323
Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
---
payloads/libpayload/arch/arm64/mmu.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/payloads/libpayload/arch/arm64/mmu.c b/payloads/libpayload/arch/arm64/mmu.c
index 86d9fc5..da2127d 100644
--- a/payloads/libpayload/arch/arm64/mmu.c
+++ b/payloads/libpayload/arch/arm64/mmu.c
@@ -332,9 +332,10 @@ static uint32_t is_mmu_enabled(void)
*/
void mmu_disable(void)
{
+ uint32_t el = get_current_el();
uint32_t sctlr;
- sctlr = raw_read_sctlr_current();
+ sctlr = raw_read_sctlr(el);
sctlr &= ~(SCTLR_C | SCTLR_M | SCTLR_I);
tlbiall_current();
@@ -343,7 +344,7 @@ void mmu_disable(void)
dsb();
isb();
- raw_write_sctlr_current(sctlr);
+ raw_write_sctlr(sctlr, el);
dcache_clean_invalidate_all();
dsb();
More information about the coreboot-gerrit
mailing list