Finally found the pmap bug that kept Cortex-A7 from working.  Turns
out we have to flush the TLB when removing a L1 slot as well.  Already
committed the diff, but here it is for those that are interested.

Index: arch/arm/arm/pmap7.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/arm/pmap7.c,v
retrieving revision 1.36
diff -u -p -r1.36 pmap7.c
--- arch/arm/arm/pmap7.c        9 Aug 2016 13:13:51 -0000       1.36
+++ arch/arm/arm/pmap7.c        11 Aug 2016 00:21:09 -0000
@@ -850,6 +850,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2
        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);
        }
 
        /*

Reply via email to