diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2016-08-11 00:28:07 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2016-08-11 00:28:07 +0000 |
commit | 84f45aab4c78d25c3fd9f890d0aa2245722fe3cd (patch) | |
tree | 74c56a602a29bcdd29471eb623b6b4ad0920e6b7 /sys/arch/arm | |
parent | 08a5fbe425befb167b985c367a7a2b0f11c92f5d (diff) |
The ARMv7 ARM says that the TLB may hold translation table entries at any
level of the translation table, including entries that point to further
levels of the tables. This means that we have to do a TLB flush whenever
we invalidate an L1 slot too. Doing so fixes the pmap_fault_fixup
issue on Cortex-A7 processors.
Diffstat (limited to 'sys/arch/arm')
-rw-r--r-- | sys/arch/arm/arm/pmap7.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/arch/arm/arm/pmap7.c b/sys/arch/arm/arm/pmap7.c index fbd7a1328e4..9c614480108 100644 --- a/sys/arch/arm/arm/pmap7.c +++ b/sys/arch/arm/arm/pmap7.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pmap7.c,v 1.36 2016/08/09 13:13:51 kettenis Exp $ */ +/* $OpenBSD: pmap7.c,v 1.37 2016/08/11 00:28:06 kettenis Exp $ */ /* $NetBSD: pmap.c,v 1.147 2004/01/18 13:03:50 scw Exp $ */ /* @@ -850,6 +850,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2_bucket *l2b, u_int count) if (l1pd == (L1_C_DOM(pm->pm_domain) | L1_TYPE_C)) { *pl1pd = L1_TYPE_INV; PTE_SYNC(pl1pd); + pmap_tlb_flushID_SE(pm, l1idx << L1_S_SHIFT); } /* |