Index: sys/uvm/pmap/pmap.c =================================================================== RCS file: /cvsroot/src/sys/uvm/pmap/pmap.c,v retrieving revision 1.22 diff -u -p -r1.22 pmap.c --- sys/uvm/pmap/pmap.c 16 Sep 2016 17:27:09 -0000 1.22 +++ sys/uvm/pmap/pmap.c 30 Sep 2016 06:34:01 -0000 @@ -1272,16 +1284,19 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd UVMHIST_LOG(*histp, "new pte %#"PRIxPTE" (pa %#"PRIxPADDR")", pte_value(npte), pa, 0, 0); - if (pte_valid_p(opte) && pte_to_paddr(opte) != pa) { - pmap_remove(pmap, va, va + NBPG); - PMAP_COUNT(user_mappings_changed); - } - KASSERT(pte_valid_p(npte)); const bool resident = pte_valid_p(opte); + bool remap = false; if (resident) { + if (pte_to_paddr(opte) != pa) { + pmap_remove(pmap, va, va + NBPG); + PMAP_COUNT(user_mappings_changed); + remap = true; + } update_flags |= PMAP_TLB_NEED_IPI; - } else { + } + + if (!resident || remap) { pmap->pm_stats.resident_count++; }