Index: sys/uvm/pmap/pmap.c =================================================================== RCS file: /cvsroot/src/sys/uvm/pmap/pmap.c,v retrieving revision 1.19 diff -u -p -r1.19 pmap.c --- sys/uvm/pmap/pmap.c 5 Aug 2016 20:54:28 -0000 1.19 +++ sys/uvm/pmap/pmap.c 18 Aug 2016 21:17:45 -0000 @@ -803,6 +803,7 @@ pmap_page_remove(struct vm_page *pg) #ifdef PMAP_VIRTUAL_CACHE_ALIASES pmap_page_clear_attributes(mdpg, VM_PAGEMD_UNCACHED); #endif + pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE); pmap_pvlist_check(mdpg); VM_PAGEMD_PVLIST_UNLOCK(mdpg); kpreempt_enable(); @@ -1288,7 +1289,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd if (pg != NULL && (prot == (VM_PROT_READ | VM_PROT_EXECUTE))) { KASSERT(mdpg != NULL); PMAP_COUNT(exec_mappings); - if (!VM_PAGEMD_EXECPAGE_P(mdpg) && pte_cached_p(npte)) { + if (!VM_PAGEMD_EXECPAGE_P(mdpg) && pte_cached_p(opte)) { if (!pte_deferred_exec_p(npte)) { UVMHIST_LOG(*histp, "va=%#"PRIxVADDR" pg %p: %s syncicache%s", @@ -1306,7 +1307,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd UVMHIST_LOG(*histp, "va=%#"PRIxVADDR" pg %p: %s syncicache%s", va, pg, "no", - (pte_cached_p(npte) + (pte_cached_p(opte) ? " (already exec)" : " (uncached)")); }