Module Name: src Committed By: matt Date: Thu Aug 18 21:42:27 UTC 2016
Modified Files: src/sys/uvm/pmap: pmap.c Log Message: Don't track kenter_pa/kremove PVs unless we are worrying about cache aliasing. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/uvm/pmap/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.19 src/sys/uvm/pmap/pmap.c:1.20 --- src/sys/uvm/pmap/pmap.c:1.19 Fri Aug 5 20:54:28 2016 +++ src/sys/uvm/pmap/pmap.c Thu Aug 18 21:42:27 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.19 2016/08/05 20:54:28 jakllsch Exp $ */ +/* $NetBSD: pmap.c,v 1.20 2016/08/18 21:42:27 matt Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.19 2016/08/05 20:54:28 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.20 2016/08/18 21:42:27 matt Exp $"); /* * Manages physical address maps. @@ -1358,7 +1358,8 @@ pmap_kenter_pa(vaddr_t va, paddr_t pa, v * No need to track non-managed pages or PMAP_KMPAGEs pages for aliases */ #ifdef PMAP_VIRTUAL_CACHE_ALIASES - if (pg != NULL && (flags & PMAP_KMPAGE) == 0) { + if (pg != NULL && (flags & PMAP_KMPAGE) == 0 + && pmap_md_virtual_cache_aliasing_p()) { pmap_enter_pv(pmap, va, pg, &npte, PV_KENTER); } #endif @@ -1411,9 +1412,11 @@ pmap_pte_kremove(pmap_t pmap, vaddr_t sv PMAP_COUNT(kremove_pages); struct vm_page * const pg = PHYS_TO_VM_PAGE(pte_to_paddr(pte)); - if (pg != NULL) { +#ifdef PMAP_VIRTUAL_CACHE_ALIASES + if (pg != NULL && pmap_md_virtual_cache_aliasing_p()) { pmap_remove_pv(pmap, sva, pg, !pte_readonly_p(pte)); } +#endif pmap_md_tlb_miss_lock_enter(); *ptep = new_pte;