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;

Reply via email to