Index: sys/arm64/arm64/pmap.c =================================================================== --- sys/arm64/arm64/pmap.c +++ sys/arm64/arm64/pmap.c @@ -1593,11 +1593,11 @@ va = sva; while (count-- > 0) { pte = pmap_pte(kernel_pmap, va, &lvl); + KASSERT(pte != NULL, + ("%s: no page table entry found", __func__)); KASSERT(lvl == 3, ("Invalid device pagetable level: %d != 3", lvl)); - if (pte != NULL) { - pmap_clear(pte); - } + pmap_clear(pte); va += PAGE_SIZE; } @@ -5138,6 +5138,8 @@ } } pte = pmap_pte(pmap, pv->pv_va, &lvl); + KASSERT(pte != NULL, + ("%s: no pv page table entry found", __func__)); KASSERT(lvl == 3, ("pmap_page_test_mappings: Invalid level %d", lvl)); mask = 0; @@ -5173,6 +5175,8 @@ } } pte = pmap_pte(pmap, pv->pv_va, &lvl); + KASSERT(pte != NULL, + ("%s: no pvh page table entry found", __func__)); KASSERT(lvl == 2, ("pmap_page_test_mappings: Invalid level %d", lvl)); mask = 0; @@ -5294,6 +5298,8 @@ } va = pv->pv_va; pte = pmap_pte(pmap, va, &lvl); + KASSERT(pte != NULL, + ("%s: no page table entry found", __func__)); if ((pmap_load(pte) & ATTR_SW_DBM) != 0) (void)pmap_demote_l2_locked(pmap, pte, va, &lock); KASSERT(lock == VM_PAGE_TO_PV_LIST_LOCK(m), @@ -5317,6 +5323,8 @@ } } pte = pmap_pte(pmap, pv->pv_va, &lvl); + KASSERT(pte != NULL, + ("%s: no page table entry found", __func__)); oldpte = pmap_load(pte); if ((oldpte & ATTR_SW_DBM) != 0) { while (!atomic_fcmpset_64(pte, &oldpte,