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;