CVS commit: src/sys/uvm/pmap

2021-05-04 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue May  4 09:05:34 UTC 2021

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Always expose pmap_tlb_update_addr now that all current PMAP_HWPAGEWALKERs
(arm) users provide the required functions.


To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.43 src/sys/uvm/pmap/pmap_tlb.c:1.44
--- src/sys/uvm/pmap/pmap_tlb.c:1.43	Sat May  1 14:00:57 2021
+++ src/sys/uvm/pmap/pmap_tlb.c	Tue May  4 09:05:34 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.43 2021/05/01 14:00:57 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.44 2021/05/04 09:05:34 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.43 2021/05/01 14:00:57 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.44 2021/05/04 09:05:34 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -733,7 +733,6 @@ pmap_tlb_shootdown_bystanders(pmap_t pm)
 }
 #endif /* MULTIPROCESSOR && PMAP_TLB_NEED_SHOOTDOWN */
 
-#ifndef PMAP_HWPAGEWALKER
 int
 pmap_tlb_update_addr(pmap_t pm, vaddr_t va, pt_entry_t pte, u_int flags)
 {
@@ -773,7 +772,6 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t 
 
 	return rv;
 }
-#endif /* !PMAP_HWPAGEWALKER */
 
 void
 pmap_tlb_invalidate_addr(pmap_t pm, vaddr_t va)



CVS commit: src/sys/uvm/pmap

2021-05-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat May  1 14:00:57 UTC 2021

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Revert previous


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.42 src/sys/uvm/pmap/pmap_tlb.c:1.43
--- src/sys/uvm/pmap/pmap_tlb.c:1.42	Sat May  1 06:56:41 2021
+++ src/sys/uvm/pmap/pmap_tlb.c	Sat May  1 14:00:57 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.42 2021/05/01 06:56:41 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.43 2021/05/01 14:00:57 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.42 2021/05/01 06:56:41 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.43 2021/05/01 14:00:57 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -733,6 +733,7 @@ pmap_tlb_shootdown_bystanders(pmap_t pm)
 }
 #endif /* MULTIPROCESSOR && PMAP_TLB_NEED_SHOOTDOWN */
 
+#ifndef PMAP_HWPAGEWALKER
 int
 pmap_tlb_update_addr(pmap_t pm, vaddr_t va, pt_entry_t pte, u_int flags)
 {
@@ -772,6 +773,7 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t 
 
 	return rv;
 }
+#endif /* !PMAP_HWPAGEWALKER */
 
 void
 pmap_tlb_invalidate_addr(pmap_t pm, vaddr_t va)



CVS commit: src/sys/uvm/pmap

2021-05-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat May  1 06:56:41 UTC 2021

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Expose pmap_tlb_update_addr to the PMAP_HWPAGEWALKER platforms


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.41 src/sys/uvm/pmap/pmap_tlb.c:1.42
--- src/sys/uvm/pmap/pmap_tlb.c:1.41	Thu Sep 24 06:45:58 2020
+++ src/sys/uvm/pmap/pmap_tlb.c	Sat May  1 06:56:41 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.41 2020/09/24 06:45:58 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.42 2021/05/01 06:56:41 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.41 2020/09/24 06:45:58 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.42 2021/05/01 06:56:41 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -733,7 +733,6 @@ pmap_tlb_shootdown_bystanders(pmap_t pm)
 }
 #endif /* MULTIPROCESSOR && PMAP_TLB_NEED_SHOOTDOWN */
 
-#ifndef PMAP_HWPAGEWALKER
 int
 pmap_tlb_update_addr(pmap_t pm, vaddr_t va, pt_entry_t pte, u_int flags)
 {
@@ -773,7 +772,6 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t 
 
 	return rv;
 }
-#endif /* !PMAP_HWPAGEWALKER */
 
 void
 pmap_tlb_invalidate_addr(pmap_t pm, vaddr_t va)



CVS commit: src/sys/uvm/pmap

2021-03-13 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Mar 13 15:29:13 UTC 2021

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Don't use %jx for 0 or 1 - just use %jd in UVMHIST_LOG format.


To generate a diff of this commit:
cvs rdiff -u -r1.58 -r1.59 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.58 src/sys/uvm/pmap/pmap.c:1.59
--- src/sys/uvm/pmap/pmap.c:1.58	Sun Dec 20 16:38:26 2020
+++ src/sys/uvm/pmap/pmap.c	Sat Mar 13 15:29:13 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.58 2020/12/20 16:38:26 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.59 2021/03/13 15:29:13 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.58 2020/12/20 16:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.59 2021/03/13 15:29:13 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -950,7 +950,7 @@ pmap_update(struct pmap *pmap)
 	pmap_tlb_miss_lock_exit();
 	kpreempt_enable();
 
-	UVMHIST_LOG(pmaphist, " <-- done (kernel=%jx)",
+	UVMHIST_LOG(pmaphist, " <-- done (kernel=%jd)",
 		(pmap == pmap_kernel() ? 1 : 0), 0, 0, 0);
 }
 
@@ -969,7 +969,7 @@ pmap_pte_remove(pmap_t pmap, vaddr_t sva
 	const bool is_kernel_pmap_p = (pmap == pmap_kernel());
 
 	UVMHIST_FUNC(__func__);
-	UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jx va=%#jx..%#jx)",
+	UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jd va=%#jx..%#jx)",
 	(uintptr_t)pmap, (pmap == pmap_kernel() ? 1 : 0), sva, eva);
 	UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx)",
 	(uintptr_t)ptep, flags, 0, 0);
@@ -1113,7 +1113,7 @@ pmap_pte_protect(pmap_t pmap, vaddr_t sv
 	const vm_prot_t prot = (flags & VM_PROT_ALL);
 
 	UVMHIST_FUNC(__func__);
-	UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jx va=%#jx..%#jx)",
+	UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jd va=%#jx..%#jx)",
 	(uintptr_t)pmap, (pmap == pmap_kernel() ? 1 : 0), sva, eva);
 	UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx)",
 	(uintptr_t)ptep, flags, 0, 0);



CVS commit: src/sys/uvm/pmap

2020-12-21 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Dec 21 08:41:38 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.h

Log Message:
Remove variable in function declaration argument


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/uvm/pmap/pmap.h

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.h
diff -u src/sys/uvm/pmap/pmap.h:1.18 src/sys/uvm/pmap/pmap.h:1.19
--- src/sys/uvm/pmap/pmap.h:1.18	Sun Dec 20 16:38:26 2020
+++ src/sys/uvm/pmap/pmap.h	Mon Dec 21 08:41:38 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.18 2020/12/20 16:38:26 skrll Exp $	*/
+/*	$NetBSD: pmap.h,v 1.19 2020/12/21 08:41:38 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -195,7 +195,7 @@ bool	pmap_page_clear_attributes(struct v
 void	pmap_page_set_attributes(struct vm_page_md *, u_int);
 void	pmap_pvlist_lock_init(size_t);
 #ifdef PMAP_VIRTUAL_CACHE_ALIASES
-void	pmap_page_cache(struct vm_page_md *, bool cached);
+void	pmap_page_cache(struct vm_page_md *, bool);
 #endif
 
 #ifdef __HAVE_PMAP_PV_TRACK



CVS commit: src/sys/uvm/pmap

2020-10-08 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Oct  8 14:02:40 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.c pmap_segtab.c

Log Message:
%#jx vs %jx consistency in UVMHIST_LOG


To generate a diff of this commit:
cvs rdiff -u -r1.56 -r1.57 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.25 -r1.26 src/sys/uvm/pmap/pmap_segtab.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.56 src/sys/uvm/pmap/pmap.c:1.57
--- src/sys/uvm/pmap/pmap.c:1.56	Thu Sep 24 06:45:58 2020
+++ src/sys/uvm/pmap/pmap.c	Thu Oct  8 14:02:40 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.56 2020/09/24 06:45:58 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.57 2020/10/08 14:02:40 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.56 2020/09/24 06:45:58 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.57 2020/10/08 14:02:40 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -407,13 +407,13 @@ pmap_page_syncicache(struct vm_page *pg)
 	VM_PAGEMD_PVLIST_READLOCK(mdpg);
 	pmap_pvlist_check(mdpg);
 
-	UVMHIST_LOG(pmaphist, "pv %jx pv_pmap %jx", (uintptr_t)pv,
+	UVMHIST_LOG(pmaphist, "pv %#jx pv_pmap %#jx", (uintptr_t)pv,
 	(uintptr_t)pv->pv_pmap, 0, 0);
 
 	if (pv->pv_pmap != NULL) {
 		for (; pv != NULL; pv = pv->pv_next) {
 #ifdef MULTIPROCESSOR
-			UVMHIST_LOG(pmaphist, "pv %jx pv_pmap %jx",
+			UVMHIST_LOG(pmaphist, "pv %#jx pv_pmap %#jx",
 			(uintptr_t)pv, (uintptr_t)pv->pv_pmap, 0, 0);
 			kcpuset_merge(onproc, pv->pv_pmap->pm_onproc);
 			if (kcpuset_match(onproc, kcpuset_running)) {
@@ -779,7 +779,7 @@ pmap_page_remove(struct vm_page *pg)
 		npv = pv->pv_next;
 #ifdef PMAP_VIRTUAL_CACHE_ALIASES
 		if (PV_ISKENTER_P(pv)) {
-			UVMHIST_LOG(pmaphist, " pv %#jx pmap %#jx va %jx"
+			UVMHIST_LOG(pmaphist, " pv %#jx pmap %#jx va %#jx"
 			" skip", (uintptr_t)pv, (uintptr_t)pv->pv_pmap,
 			pv->pv_va, 0);
 
@@ -815,8 +815,8 @@ pmap_page_remove(struct vm_page *pg)
 		KASSERTMSG(ptep != NULL, "%#"PRIxVADDR " %#"PRIxVADDR, va,
 		pmap_limits.virtual_end);
 		pt_entry_t pte = *ptep;
-		UVMHIST_LOG(pmaphist, " pv %#jx pmap %#jx va %jx"
-		" pte %jx", (uintptr_t)pv, (uintptr_t)pmap, va,
+		UVMHIST_LOG(pmaphist, " pv %#jx pmap %#jx va %#jx"
+		" pte %#jx", (uintptr_t)pv, (uintptr_t)pmap, va,
 		pte_value(pte));
 		if (!pte_valid_p(pte))
 			continue;
@@ -918,7 +918,7 @@ pmap_update(struct pmap *pmap)
 	pmap_tlb_miss_lock_exit();
 	kpreempt_enable();
 
-	UVMHIST_LOG(pmaphist, " <-- done (kernel=%#jx)",
+	UVMHIST_LOG(pmaphist, " <-- done (kernel=%jx)",
 		(pmap == pmap_kernel() ? 1 : 0), 0, 0, 0);
 }
 

Index: src/sys/uvm/pmap/pmap_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.25 src/sys/uvm/pmap/pmap_segtab.c:1.26
--- src/sys/uvm/pmap/pmap_segtab.c:1.25	Thu Sep 24 06:45:58 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Thu Oct  8 14:02:40 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.25 2020/09/24 06:45:58 skrll Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.26 2020/10/08 14:02:40 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.25 2020/09/24 06:45:58 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.26 2020/10/08 14:02:40 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -265,7 +265,7 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 	UVMHIST_FUNC(__func__);
 	UVMHIST_CALLARGS(pmapsegtabhist, "pm=%#jx stpp=%#jx free=%jd",
 	(uintptr_t)pmap, (uintptr_t)stp_p, free_stp, 0);
-	UVMHIST_LOG(pmapsegtabhist, " callback=%jx flags=%jx va=%jx vinc=%jx",
+	UVMHIST_LOG(pmapsegtabhist, " callback=%#jx flags=%jx va=%#jx vinc=%#jx",
 	(uintptr_t)callback, flags, (uintptr_t)va, (uintptr_t)vinc);
 	for (size_t i = (va / vinc) & (PMAP_SEGTABSIZE - 1);
 	 i < PMAP_SEGTABSIZE;
@@ -574,7 +574,7 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va
 		*pte_p = pte;
 #endif
 		KASSERT(pte == stp->seg_tab[(va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1)]);
-		UVMHIST_CALLARGS(pmapsegtabhist, "pm=%#jx va=%#jx -> tab[%jd]=%jx",
+		UVMHIST_CALLARGS(pmapsegtabhist, "pm=%#jx va=%#jx -> tab[%jd]=%#jx",
 		(uintptr_t)pmap, (uintptr_t)va,
 		(va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1), (uintptr_t)pte);
 



CVS commit: src/sys/uvm/pmap

2020-09-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Sep 24 06:45:58 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.c pmap_segtab.c pmap_tlb.c

Log Message:
Whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.24 -r1.25 src/sys/uvm/pmap/pmap_segtab.c
cvs rdiff -u -r1.40 -r1.41 src/sys/uvm/pmap/pmap_tlb.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.55 src/sys/uvm/pmap/pmap.c:1.56
--- src/sys/uvm/pmap/pmap.c:1.55	Thu Aug 20 05:54:32 2020
+++ src/sys/uvm/pmap/pmap.c	Thu Sep 24 06:45:58 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.55 2020/08/20 05:54:32 mrg Exp $	*/
+/*	$NetBSD: pmap.c,v 1.56 2020/09/24 06:45:58 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.55 2020/08/20 05:54:32 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.56 2020/09/24 06:45:58 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -408,7 +408,7 @@ pmap_page_syncicache(struct vm_page *pg)
 	pmap_pvlist_check(mdpg);
 
 	UVMHIST_LOG(pmaphist, "pv %jx pv_pmap %jx", (uintptr_t)pv,
-	 (uintptr_t)pv->pv_pmap, 0, 0);
+	(uintptr_t)pv->pv_pmap, 0, 0);
 
 	if (pv->pv_pmap != NULL) {
 		for (; pv != NULL; pv = pv->pv_next) {

Index: src/sys/uvm/pmap/pmap_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.24 src/sys/uvm/pmap/pmap_segtab.c:1.25
--- src/sys/uvm/pmap/pmap_segtab.c:1.24	Thu Sep 10 02:12:57 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Thu Sep 24 06:45:58 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.24 2020/09/10 02:12:57 rin Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.25 2020/09/24 06:45:58 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.24 2020/09/10 02:12:57 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.25 2020/09/24 06:45:58 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -192,7 +192,7 @@ pmap_check_ptes(pt_entry_t *pte, const c
 	j, pte_value(pte[j]), 0, 0);
 #endif
 			panic("%s: pte[%zu] entry at %p not 0 (%#"PRIxPTE")",
-			  caller, i, [i], pte_value(pte[i]));
+			caller, i, [i], pte_value(pte[i]));
 		}
 #endif
 }

Index: src/sys/uvm/pmap/pmap_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.40 src/sys/uvm/pmap/pmap_tlb.c:1.41
--- src/sys/uvm/pmap/pmap_tlb.c:1.40	Sat Aug 22 14:51:44 2020
+++ src/sys/uvm/pmap/pmap_tlb.c	Thu Sep 24 06:45:58 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.40 2020/08/22 14:51:44 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.41 2020/09/24 06:45:58 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.40 2020/08/22 14:51:44 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.41 2020/09/24 06:45:58 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -757,8 +757,8 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t 
 		(flags & PMAP_TLB_INSERT) != 0);
 		pmap_tlb_asid_check();
 		UVMHIST_LOG(maphist,
-		 "   %jd <-- tlb_update_addr(%#jx, %#jx, %#jx, ...)",
-		 rv, va, pai->pai_asid, pte_value(pte));
+		"   %jd <-- tlb_update_addr(%#jx, %#jx, %#jx, ...)",
+		rv, va, pai->pai_asid, pte_value(pte));
 		KASSERTMSG((flags & PMAP_TLB_INSERT) == 0 || rv == 1,
 		"pmap %p (asid %u) va %#"PRIxVADDR" pte %#"PRIxPTE" rv %d",
 		pm, pai->pai_asid, va, pte_value(pte), rv);



CVS commit: src/sys/uvm/pmap

2020-09-09 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Thu Sep 10 02:12:57 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
Cast pointer arguments of UVMHIST_CALLARGS() into uintptr_t.

Appease GCC9 -Wpointer-to-int-cast on ILP32 environments.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.23 src/sys/uvm/pmap/pmap_segtab.c:1.24
--- src/sys/uvm/pmap/pmap_segtab.c:1.23	Sat Aug 22 15:34:51 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Thu Sep 10 02:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.23 2020/08/22 15:34:51 skrll Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.24 2020/09/10 02:12:57 rin Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.23 2020/08/22 15:34:51 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.24 2020/09/10 02:12:57 rin Exp $");
 
 /*
  *	Manages physical address maps.
@@ -246,7 +246,7 @@ pmap_segtab_free(pmap_segtab_t *stp)
 {
 	UVMHIST_FUNC(__func__);
 
-	UVMHIST_CALLARGS(pmapsegtabhist, "stp=%#jx", stp, 0, 0, 0);
+	UVMHIST_CALLARGS(pmapsegtabhist, "stp=%#jx", (uintptr_t)stp, 0, 0, 0);
 
 	mutex_spin_enter(_segtab_lock);
 	stp->seg_seg[0] = pmap_segtab_info.free_segtab;
@@ -346,7 +346,8 @@ pmap_segtab_alloc(void)
 		stp->seg_seg[0] = NULL;
 		SEGTAB_ADD(nget, 1);
 		found_on_freelist = true;
-		UVMHIST_CALLARGS(pmapsegtabhist, "freelist stp=%#jx", stp, 0, 0, 0);
+		UVMHIST_CALLARGS(pmapsegtabhist, "freelist stp=%#jx",
+		(uintptr_t)stp, 0, 0, 0);
 	}
 	mutex_spin_exit(_segtab_lock);
 
@@ -364,7 +365,8 @@ pmap_segtab_alloc(void)
 		const paddr_t stp_pa = VM_PAGE_TO_PHYS(stp_pg);
 
 		stp = (pmap_segtab_t *)PMAP_MAP_POOLPAGE(stp_pa);
-		UVMHIST_CALLARGS(pmapsegtabhist, "new stp=%#jx", stp, 0, 0, 0);
+		UVMHIST_CALLARGS(pmapsegtabhist, "new stp=%#jx",
+		(uintptr_t)stp, 0, 0, 0);
 		const size_t n = NBPG / sizeof(*stp);
 		if (n > 1) {
 			/*
@@ -574,7 +576,7 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va
 		KASSERT(pte == stp->seg_tab[(va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1)]);
 		UVMHIST_CALLARGS(pmapsegtabhist, "pm=%#jx va=%#jx -> tab[%jd]=%jx",
 		(uintptr_t)pmap, (uintptr_t)va,
-		(va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1), pte);
+		(va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1), (uintptr_t)pte);
 
 		pmap_check_ptes(pte, __func__);
 		pte += (va >> PGSHIFT) & (NPTEPG - 1);



CVS commit: src/sys/uvm/pmap

2020-08-22 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Aug 22 15:32:36 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
Remove the #if defined(__mips_n64) && PAGE_SIZE == 8192 and make the
check MI - all PTs are PAGE_SIZE aligned


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.21 src/sys/uvm/pmap/pmap_segtab.c:1.22
--- src/sys/uvm/pmap/pmap_segtab.c:1.21	Sat Aug 22 13:59:16 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Sat Aug 22 15:32:36 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.21 2020/08/22 13:59:16 skrll Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.22 2020/08/22 15:32:36 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.21 2020/08/22 13:59:16 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.22 2020/08/22 15:32:36 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -171,6 +171,13 @@ pmap_check_stp(pmap_segtab_t *stp, const
 static void
 pmap_check_ptes(pt_entry_t *pte, const char *caller)
 {
+	/*
+	 * All pte arrays should be page aligned.
+	 */
+	if (((uintptr_t)pte & PAGE_MASK) != 0) {
+		panic("%s: pte entry at %p not page aligned", caller, pte);
+	}
+
 #ifdef DEBUG
 	for (size_t i = 0; i < NPTEPG; i++)
 		if (!pte_zero_p(pte[i])) {
@@ -283,17 +290,6 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 			continue;
 		pmap_check_ptes(pte, __func__);
 
-#if defined(__mips_n64) && PAGE_SIZE == 8192
-		/*
-		 * XXX This is evil.  If vinc is 100 we are in
-		 * the last level, and this pte should be page aligned.
-		 */
-		if (vinc == 0x100 && ((uintptr_t)pte & PAGE_MASK) != 0) {
-			panic("%s: pte entry at %p not page aligned",
-			__func__, pte);
-		}
-#endif
-
 		/*
 		 * If our caller wants a callback, do so.
 		 */



CVS commit: src/sys/uvm/pmap

2020-08-22 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Aug 22 14:51:44 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Whitespace - line continutation alignment


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.39 src/sys/uvm/pmap/pmap_tlb.c:1.40
--- src/sys/uvm/pmap/pmap_tlb.c:1.39	Wed Aug 19 06:11:49 2020
+++ src/sys/uvm/pmap/pmap_tlb.c	Sat Aug 22 14:51:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.39 2020/08/19 06:11:49 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.40 2020/08/22 14:51:44 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.39 2020/08/19 06:11:49 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.40 2020/08/22 14:51:44 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -629,7 +629,7 @@ pmap_tlb_shootdown_process(void)
 	   (nobody) << 3 * TLBINV_NOBODY)			\
 	 | (  (one) << 3 * TLBINV_ONE)			\
 	 | (  (alluser) << 3 * TLBINV_ALLUSER)			\
-	 | ((allkernel) << 3 * TLBINV_ALLKERNEL)			\
+	 | ((allkernel) << 3 * TLBINV_ALLKERNEL)		\
 	 | (  (all) << 3 * TLBINV_ALL)) >> 3 * (op)) & 7)
 
 #define	TLBINV_USER_MAP(op)	\



CVS commit: src/sys/uvm/pmap

2020-08-22 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Aug 22 13:59:16 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.20 src/sys/uvm/pmap/pmap_segtab.c:1.21
--- src/sys/uvm/pmap/pmap_segtab.c:1.20	Thu Aug 20 23:36:45 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Sat Aug 22 13:59:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.20 2020/08/20 23:36:45 mrg Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.21 2020/08/22 13:59:16 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.20 2020/08/20 23:36:45 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.21 2020/08/22 13:59:16 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -132,7 +132,7 @@ struct pmap_segtab_info {
 kmutex_t pmap_segtab_lock __cacheline_aligned;
 
 /*
- * Check that a seg_tab[] array is empty.  
+ * Check that a seg_tab[] array is empty.
  *
  * This is used when allocating or freeing a pmap_segtab_t.  The stp
  * should be unused -- meaning, none of the seg_tab[] pointers are
@@ -182,7 +182,7 @@ pmap_check_ptes(pt_entry_t *pte, const c
 if (!pte_zero_p(pte[j]))
 	UVMHIST_LOG(pmapsegtabhist,
 	"pte[%zu] = %#"PRIxPTE,
-	j, pte_value(pte[j]), 0, 0); 
+	j, pte_value(pte[j]), 0, 0);
 #endif
 			panic("%s: pte[%zu] entry at %p not 0 (%#"PRIxPTE")",
 			  caller, i, [i], pte_value(pte[i]));
@@ -281,7 +281,7 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 		pt_entry_t *pte = stp->seg_tab[i];
 		if (pte == NULL)
 			continue;
-		pmap_check_ptes(pte, __func__); 
+		pmap_check_ptes(pte, __func__);
 
 #if defined(__mips_n64) && PAGE_SIZE == 8192
 		/*



CVS commit: src/sys/uvm/pmap

2020-08-20 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Thu Aug 20 23:36:45 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
fix hpcmips and evbppc builds (wrong type in panic()).


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.19 src/sys/uvm/pmap/pmap_segtab.c:1.20
--- src/sys/uvm/pmap/pmap_segtab.c:1.19	Thu Aug 20 05:54:32 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Thu Aug 20 23:36:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.19 2020/08/20 05:54:32 mrg Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.20 2020/08/20 23:36:45 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.19 2020/08/20 05:54:32 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.20 2020/08/20 23:36:45 mrg Exp $");
 
 /*
  *	Manages physical address maps.
@@ -184,7 +184,7 @@ pmap_check_ptes(pt_entry_t *pte, const c
 	"pte[%zu] = %#"PRIxPTE,
 	j, pte_value(pte[j]), 0, 0); 
 #endif
-			panic("%s: pte[%ju] entry at %pu not 0 (%#"PRIxPTE")",
+			panic("%s: pte[%zu] entry at %p not 0 (%#"PRIxPTE")",
 			  caller, i, [i], pte_value(pte[i]));
 		}
 #endif



CVS commit: src/sys/uvm/pmap

2020-08-19 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Thu Aug 20 05:54:32 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.c pmap.h pmap_segtab.c

Log Message:
move pmap segtab history into a new history of only 1000 entries,
but will overflow much slower than the main pmap history.

move various debug info into kernhist.  make pte array checker
into an array and use it in pmap_segtab_release() and
pmap_pte_reserve().  move check before MD callback(), incase it
wants to change ptes for some reason (they're passed in, but
this callback is currently always NULL.)

clean up some history logs to reduce the number of lines required.


To generate a diff of this commit:
cvs rdiff -u -r1.54 -r1.55 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.16 -r1.17 src/sys/uvm/pmap/pmap.h
cvs rdiff -u -r1.18 -r1.19 src/sys/uvm/pmap/pmap_segtab.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.54 src/sys/uvm/pmap/pmap.c:1.55
--- src/sys/uvm/pmap/pmap.c:1.54	Wed Aug 19 07:29:01 2020
+++ src/sys/uvm/pmap/pmap.c	Thu Aug 20 05:54:32 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.54 2020/08/19 07:29:01 simonb Exp $	*/
+/*	$NetBSD: pmap.c,v 1.55 2020/08/20 05:54:32 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.54 2020/08/19 07:29:01 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.55 2020/08/20 05:54:32 mrg Exp $");
 
 /*
  *	Manages physical address maps.
@@ -217,8 +217,10 @@ struct pmap_limits pmap_limits = {	/* VA
 #ifdef UVMHIST
 static struct kern_history_ent pmapexechistbuf[1];
 static struct kern_history_ent pmaphistbuf[1];
+static struct kern_history_ent pmapsegtabhistbuf[1000];
 UVMHIST_DEFINE(pmapexechist);
 UVMHIST_DEFINE(pmaphist);
+UVMHIST_DEFINE(pmapsegtabhist);
 #endif
 
 /*
@@ -587,6 +589,7 @@ pmap_init(void)
 {
 	UVMHIST_INIT_STATIC(pmapexechist, pmapexechistbuf);
 	UVMHIST_INIT_STATIC(pmaphist, pmaphistbuf);
+	UVMHIST_INIT_STATIC(pmapsegtabhist, pmapsegtabhistbuf);
 
 	UVMHIST_FUNC(__func__);
 	UVMHIST_CALLED(pmaphist);

Index: src/sys/uvm/pmap/pmap.h
diff -u src/sys/uvm/pmap/pmap.h:1.16 src/sys/uvm/pmap/pmap.h:1.17
--- src/sys/uvm/pmap/pmap.h:1.16	Fri Aug  7 07:19:45 2020
+++ src/sys/uvm/pmap/pmap.h	Thu Aug 20 05:54:32 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.16 2020/08/07 07:19:45 skrll Exp $	*/
+/*	$NetBSD: pmap.h,v 1.17 2020/08/20 05:54:32 mrg Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -78,6 +78,7 @@
 #ifdef UVMHIST
 UVMHIST_DECL(pmapexechist);
 UVMHIST_DECL(pmaphist);
+UVMHIST_DECL(pmapsegtabhist);
 #endif
 
 /*

Index: src/sys/uvm/pmap/pmap_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.18 src/sys/uvm/pmap/pmap_segtab.c:1.19
--- src/sys/uvm/pmap/pmap_segtab.c:1.18	Tue Aug 18 11:48:21 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Thu Aug 20 05:54:32 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.18 2020/08/18 11:48:21 simonb Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.19 2020/08/20 05:54:32 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.18 2020/08/18 11:48:21 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.19 2020/08/20 05:54:32 mrg Exp $");
 
 /*
  *	Manages physical address maps.
@@ -131,16 +131,32 @@ struct pmap_segtab_info {
 
 kmutex_t pmap_segtab_lock __cacheline_aligned;
 
+/*
+ * Check that a seg_tab[] array is empty.  
+ *
+ * This is used when allocating or freeing a pmap_segtab_t.  The stp
+ * should be unused -- meaning, none of the seg_tab[] pointers are
+ * not NULL, as it transitions from either freshly allocated segtab from
+ * pmap pool, an unused allocated page segtab alloc from the SMP case,
+ * where two CPUs attempt to allocate the same underlying segtab, the
+ * release of a segtab entry to the freelist, or for SMP, where reserve
+ * also frees a freshly allocated but unused entry.
+ */
 static void
 pmap_check_stp(pmap_segtab_t *stp, const char *caller, const char *why)
 {
 #ifdef DEBUG
 	for (size_t i = 0; i < PMAP_SEGTABSIZE; i++) {
-		if (stp->seg_tab[i] != 0) {
+		if (stp->seg_tab[i] != NULL) {
+#define DEBUG_NOISY
 #ifdef DEBUG_NOISY
+			UVMHIST_FUNC(__func__);
+			UVMHIST_CALLARGS(pmapsegtabhist, "stp=%#jx",
+			(uintptr_t)stp, 0, 0, 0);
 			for (size_t j = i; j < PMAP_SEGTABSIZE; j++)
-printf("%s: pm_segtab.seg_tab[%zu] = %p\n",
-caller, j, stp->seg_tab[j]);
+if (stp->seg_tab[j] != NULL)
+	printf("%s: stp->seg_tab[%zu] = %p\n",
+	caller, j, stp->seg_tab[j]);
 #endif
 			panic("%s: pm_segtab.seg_tab[%zu] != 0 (%p): %s",
 			caller, i, stp->seg_tab[i], why);
@@ -149,6 +165,31 @@ pmap_check_stp(pmap_segtab_t *stp, const
 #endif
 }
 
+/*
+ * Check that an array of ptes is actually zero.
+ */
+static void
+pmap_check_ptes(pt_entry_t *pte, const char 

CVS commit: src/sys/uvm/pmap

2020-08-19 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Aug 19 06:11:49 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c pmap_tlb.h

Log Message:
KNF.  Add some whitespace to the TLBINV_MAP macro and tlb_invalidate_op
enum.


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/sys/uvm/pmap/pmap_tlb.c
cvs rdiff -u -r1.14 -r1.15 src/sys/uvm/pmap/pmap_tlb.h

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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.38 src/sys/uvm/pmap/pmap_tlb.c:1.39
--- src/sys/uvm/pmap/pmap_tlb.c:1.38	Wed Aug 19 06:08:27 2020
+++ src/sys/uvm/pmap/pmap_tlb.c	Wed Aug 19 06:11:49 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.38 2020/08/19 06:08:27 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.39 2020/08/19 06:11:49 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.38 2020/08/19 06:08:27 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.39 2020/08/19 06:11:49 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -626,11 +626,11 @@ pmap_tlb_shootdown_process(void)
  * can be loaded in a single instruction.
  */
 #define	TLBINV_MAP(op, nobody, one, alluser, allkernel, all)	\
-	   (nobody) << 3*TLBINV_NOBODY)			\
-	 | (  (one) << 3*TLBINV_ONE)			\
-	 | (  (alluser) << 3*TLBINV_ALLUSER)			\
-	 | ((allkernel) << 3*TLBINV_ALLKERNEL)			\
-	 | (  (all) << 3*TLBINV_ALL)) >> 3*(op)) & 7)
+	   (nobody) << 3 * TLBINV_NOBODY)			\
+	 | (  (one) << 3 * TLBINV_ONE)			\
+	 | (  (alluser) << 3 * TLBINV_ALLUSER)			\
+	 | ((allkernel) << 3 * TLBINV_ALLKERNEL)			\
+	 | (  (all) << 3 * TLBINV_ALL)) >> 3 * (op)) & 7)
 
 #define	TLBINV_USER_MAP(op)	\
 	TLBINV_MAP(op, TLBINV_ONE, TLBINV_ALLUSER, TLBINV_ALLUSER,	\

Index: src/sys/uvm/pmap/pmap_tlb.h
diff -u src/sys/uvm/pmap/pmap_tlb.h:1.14 src/sys/uvm/pmap/pmap_tlb.h:1.15
--- src/sys/uvm/pmap/pmap_tlb.h:1.14	Sat Aug  1 07:14:05 2020
+++ src/sys/uvm/pmap/pmap_tlb.h	Wed Aug 19 06:11:49 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.h,v 1.14 2020/08/01 07:14:05 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.h,v 1.15 2020/08/19 06:11:49 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -104,11 +104,11 @@ struct pmap_asid_info {
 	- offsetof(struct pmap, pm_pai[tlbinfo_index(ti)])))
 
 enum tlb_invalidate_op {
-	TLBINV_NOBODY=0,
-	TLBINV_ONE=1,
-	TLBINV_ALLUSER=2,
-	TLBINV_ALLKERNEL=3,
-	TLBINV_ALL=4
+	TLBINV_NOBODY = 0,
+	TLBINV_ONE = 1,
+	TLBINV_ALLUSER = 2,
+	TLBINV_ALLKERNEL = 3,
+	TLBINV_ALL = 4
 };
 
 struct pmap_tlb_info {



CVS commit: src/sys/uvm/pmap

2020-08-19 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Aug 19 06:08:27 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Unwrap short line KASSERT


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.37 src/sys/uvm/pmap/pmap_tlb.c:1.38
--- src/sys/uvm/pmap/pmap_tlb.c:1.37	Wed Aug 19 06:07:03 2020
+++ src/sys/uvm/pmap/pmap_tlb.c	Wed Aug 19 06:08:27 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.37 2020/08/19 06:07:03 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.38 2020/08/19 06:08:27 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.37 2020/08/19 06:07:03 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.38 2020/08/19 06:08:27 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -551,8 +551,7 @@ pmap_tlb_shootdown_process(void)
 #endif
 
 	KASSERT(cpu_intr_p());
-	KASSERTMSG(ci->ci_cpl >= IPL_SCHED,
-	"%s: cpl (%d) < IPL_SCHED (%d)",
+	KASSERTMSG(ci->ci_cpl >= IPL_SCHED, "%s: cpl (%d) < IPL_SCHED (%d)",
 	__func__, ci->ci_cpl, IPL_SCHED);
 
 	TLBINFO_LOCK(ti);



CVS commit: src/sys/uvm/pmap

2020-08-19 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Aug 19 06:07:03 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Fix inverted logic test in pmap_tlb_shootdown_process for if the victim
is onproc.


To generate a diff of this commit:
cvs rdiff -u -r1.36 -r1.37 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.36 src/sys/uvm/pmap/pmap_tlb.c:1.37
--- src/sys/uvm/pmap/pmap_tlb.c:1.36	Tue Aug 11 06:54:14 2020
+++ src/sys/uvm/pmap/pmap_tlb.c	Wed Aug 19 06:07:03 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.36 2020/08/11 06:54:14 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.37 2020/08/19 06:07:03 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.36 2020/08/11 06:54:14 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.37 2020/08/19 06:07:03 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -564,7 +564,7 @@ pmap_tlb_shootdown_process(void)
 		 */
 		struct pmap_asid_info * const pai = PMAP_PAI(ti->ti_victim, ti);
 		KASSERT(ti->ti_victim != pmap_kernel());
-		if (!pmap_tlb_intersecting_onproc_p(ti->ti_victim, ti)) {
+		if (pmap_tlb_intersecting_onproc_p(ti->ti_victim, ti)) {
 			/*
 			 * The victim is an active pmap so we will just
 			 * invalidate its TLB entries.



CVS commit: src/sys/uvm/pmap

2020-08-18 Thread Simon Burge
Module Name:src
Committed By:   simonb
Date:   Tue Aug 18 11:48:21 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
Fix small tyop in a comment.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.17 src/sys/uvm/pmap/pmap_segtab.c:1.18
--- src/sys/uvm/pmap/pmap_segtab.c:1.17	Tue Aug 18 07:25:46 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Tue Aug 18 11:48:21 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.17 2020/08/18 07:25:46 skrll Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.18 2020/08/18 11:48:21 simonb Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.17 2020/08/18 07:25:46 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.18 2020/08/18 11:48:21 simonb Exp $");
 
 /*
  *	Manages physical address maps.
@@ -237,7 +237,7 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 			continue;
 
 		/*
-		 * If our caller want a callback, do so.
+		 * If our caller wants a callback, do so.
 		 */
 		if (callback != NULL) {
 			(*callback)(pmap, va, va + vinc, pte, flags);



CVS commit: src/sys/uvm/pmap

2020-08-18 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Aug 18 07:25:46 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
Improve a panic message ever so slightly


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.16 src/sys/uvm/pmap/pmap_segtab.c:1.17
--- src/sys/uvm/pmap/pmap_segtab.c:1.16	Mon Aug 17 08:56:27 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Tue Aug 18 07:25:46 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.16 2020/08/17 08:56:27 mrg Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.17 2020/08/18 07:25:46 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.16 2020/08/17 08:56:27 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.17 2020/08/18 07:25:46 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -245,7 +245,7 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 #ifdef DEBUG
 		for (size_t j = 0; j < NPTEPG; j++) {
 			if (!pte_zero_p(pte[j]))
-panic("%s: pte entry %p not 0 (%#"PRIxPTE")",
+panic("%s: pte entry at %p not 0 (%#"PRIxPTE")",
 __func__, [j], pte_value(pte[j]));
 		}
 #endif



CVS commit: src/sys/uvm/pmap

2020-08-17 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Mon Aug 17 08:56:27 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
add pmaphist calls around seg_tab[] manipulation.  hopefully will
help find what causes this:

panic: pmap_segtab_alloc: pm_segtab.seg_tab[1010] != 0 (0x98004eeb6068): 
from free list


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.15 src/sys/uvm/pmap/pmap_segtab.c:1.16
--- src/sys/uvm/pmap/pmap_segtab.c:1.15	Fri Aug  7 07:19:45 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Mon Aug 17 08:56:27 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.15 2020/08/07 07:19:45 skrll Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.16 2020/08/17 08:56:27 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.15 2020/08/07 07:19:45 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.16 2020/08/17 08:56:27 mrg Exp $");
 
 /*
  *	Manages physical address maps.
@@ -210,12 +210,18 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 {
 	pmap_segtab_t *stp = *stp_p;
 
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "pm=%#jx stpp=%#jx free=%jd",
+	(uintptr_t)pmap, (uintptr_t)stp_p, free_stp, 0);
+	UVMHIST_LOG(pmaphist, " callback=%jx flags=%jx va=%jx vinc=%jx",
+	(uintptr_t)callback, flags, (uintptr_t)va, (uintptr_t)vinc);
 	for (size_t i = (va / vinc) & (PMAP_SEGTABSIZE - 1);
 	 i < PMAP_SEGTABSIZE;
 	 i++, va += vinc) {
 #ifdef _LP64
 		if (vinc > NBSEG) {
 			if (stp->seg_seg[i] != NULL) {
+UVMHIST_LOG(pmaphist, " recursing", 0, 0, 0, 0);
 pmap_segtab_release(pmap, >seg_seg[i],
 true, callback, flags, va, vinc / NSEGPG);
 KASSERT(stp->seg_seg[i] == NULL);
@@ -255,6 +261,7 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 #endif
 
 		stp->seg_tab[i] = NULL;
+		UVMHIST_LOG(pmaphist, " zeroing tab[%jd]", i, 0, 0, 0);
 	}
 
 	if (free_stp) {
@@ -448,6 +455,10 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va
 	pmap_segtab_t *stp = pmap->pm_segtab;
 	pt_entry_t *pte;
 
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "pm=%#jx va=%#jx flags=%jx",
+	(uintptr_t)pmap, (uintptr_t)va, flags, 0);
+
 	pte = pmap_pte_lookup(pmap, va);
 	if (__predict_false(pte == NULL)) {
 #ifdef _LP64
@@ -513,6 +524,8 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va
 		*pte_p = pte;
 #endif
 		KASSERT(pte == stp->seg_tab[(va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1)]);
+		UVMHIST_LOG(pmaphist, " set tab[%jd]=%jx",
+		(va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1), pte, 0, 0);
 
 #ifdef DEBUG
 		for (size_t i = 0; i < NPTEPG; i++) {



CVS commit: src/sys/uvm/pmap

2020-08-11 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Aug 11 06:54:14 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
s/pmaphist/maphist/ for now


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.35 src/sys/uvm/pmap/pmap_tlb.c:1.36
--- src/sys/uvm/pmap/pmap_tlb.c:1.35	Tue Aug 11 06:09:44 2020
+++ src/sys/uvm/pmap/pmap_tlb.c	Tue Aug 11 06:54:14 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.35 2020/08/11 06:09:44 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.36 2020/08/11 06:54:14 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.35 2020/08/11 06:09:44 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.36 2020/08/11 06:54:14 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -215,7 +215,7 @@ static void
 pmap_tlb_pai_check(struct pmap_tlb_info *ti, bool locked_p)
 {
 	UVMHIST_FUNC(__func__);
-	UVMHIST_CALLARGS(pmaphist, "(ti=%#jx)", (uintptr_t)ti, 0, 0, 0);
+	UVMHIST_CALLARGS(maphist, "(ti=%#jx)", (uintptr_t)ti, 0, 0, 0);
 
 #ifdef DIAGNOSTIC
 	struct pmap_asid_info *pai;
@@ -236,7 +236,7 @@ pmap_tlb_pai_check(struct pmap_tlb_info 
 	if (!locked_p)
 		TLBINFO_UNLOCK(ti);
 #endif
-	UVMHIST_LOG(pmaphist, " <-- done", 0, 0, 0, 0);
+	UVMHIST_LOG(maphist, " <-- done", 0, 0, 0, 0);
 }
 
 static void



CVS commit: src/sys/uvm/pmap

2020-08-11 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Aug 11 06:09:44 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.c pmap_tlb.c

Log Message:
More UVMHIST_LOG.  Remove some commented output printfs.


To generate a diff of this commit:
cvs rdiff -u -r1.52 -r1.53 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.34 -r1.35 src/sys/uvm/pmap/pmap_tlb.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.52 src/sys/uvm/pmap/pmap.c:1.53
--- src/sys/uvm/pmap/pmap.c:1.52	Tue Aug 11 05:43:45 2020
+++ src/sys/uvm/pmap/pmap.c	Tue Aug 11 06:09:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.52 2020/08/11 05:43:45 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.53 2020/08/11 06:09:44 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.52 2020/08/11 05:43:45 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.53 2020/08/11 06:09:44 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -388,6 +388,8 @@ pmap_page_set_attributes(struct vm_page_
 static void
 pmap_page_syncicache(struct vm_page *pg)
 {
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLED(pmaphist);
 #ifndef MULTIPROCESSOR
 	struct pmap * const curpmap = curlwp->l_proc->p_vmspace->vm_map.pmap;
 #endif
@@ -403,9 +405,14 @@ pmap_page_syncicache(struct vm_page *pg)
 	VM_PAGEMD_PVLIST_READLOCK(mdpg);
 	pmap_pvlist_check(mdpg);
 
+	UVMHIST_LOG(pmaphist, "pv %jx pv_pmap %jx\n", (uintptr_t)pv,
+	 (uintptr_t)pv->pv_pmap, 0, 0);
+
 	if (pv->pv_pmap != NULL) {
 		for (; pv != NULL; pv = pv->pv_next) {
 #ifdef MULTIPROCESSOR
+			UVMHIST_LOG(pmaphist, "pv %jx pv_pmap %jx\n",
+			(uintptr_t)pv, (uintptr_t)pv->pv_pmap, 0, 0);
 			kcpuset_merge(onproc, pv->pv_pmap->pm_onproc);
 			if (kcpuset_match(onproc, kcpuset_running)) {
 break;

Index: src/sys/uvm/pmap/pmap_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.34 src/sys/uvm/pmap/pmap_tlb.c:1.35
--- src/sys/uvm/pmap/pmap_tlb.c:1.34	Sun Aug  9 06:26:49 2020
+++ src/sys/uvm/pmap/pmap_tlb.c	Tue Aug 11 06:09:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.34 2020/08/09 06:26:49 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.35 2020/08/11 06:09:44 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.34 2020/08/09 06:26:49 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.35 2020/08/11 06:09:44 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -214,6 +214,9 @@ pmap_tlb_intersecting_onproc_p(pmap_t pm
 static void
 pmap_tlb_pai_check(struct pmap_tlb_info *ti, bool locked_p)
 {
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "(ti=%#jx)", (uintptr_t)ti, 0, 0, 0);
+
 #ifdef DIAGNOSTIC
 	struct pmap_asid_info *pai;
 	if (!locked_p)
@@ -233,6 +236,7 @@ pmap_tlb_pai_check(struct pmap_tlb_info 
 	if (!locked_p)
 		TLBINFO_UNLOCK(ti);
 #endif
+	UVMHIST_LOG(pmaphist, " <-- done", 0, 0, 0, 0);
 }
 
 static void
@@ -268,9 +272,13 @@ pmap_tlb_pai_reset(struct pmap_tlb_info 
 	 */
 	if (PMAP_TLB_FLUSH_ASID_ON_RESET) {
 #ifndef MULTIPROCESSOR
+		UVMHIST_LOG(maphist, " ... asid %u flushed", pai->pai_asid, 0,
+		0, 0);
 		tlb_invalidate_asids(pai->pai_asid, pai->pai_asid);
 #endif
 		if (TLBINFO_ASID_INUSE_P(ti, pai->pai_asid)) {
+			UVMHIST_LOG(maphist, " ... asid marked unused",
+			pai->pai_asid, 0, 0, 0);
 			TLBINFO_ASID_MARK_UNUSED(ti, pai->pai_asid);
 			ti->ti_asids_free++;
 		}
@@ -363,13 +371,13 @@ pmap_tlb_info_init(struct pmap_tlb_info 
 #endif /* MULTIPROCESSOR */
 	KASSERT(ti == _tlb0_info);
 	KASSERT(ti->ti_lock == _tlb0_lock);
-	//printf("ti_lock %p ", ti->ti_lock);
+
 	mutex_init(ti->ti_lock, MUTEX_DEFAULT, IPL_SCHED);
 #if defined(MULTIPROCESSOR) && PMAP_TLB_MAX > 1
 	kcpuset_create(>ti_kcpuset, true);
 	kcpuset_set(ti->ti_kcpuset, cpu_index(curcpu()));
 #endif
-	//printf("asid ");
+
 	if (ti->ti_asid_max == 0) {
 		ti->ti_asid_max = pmap_md_tlb_asid_max();
 		ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti->ti_asid_max);
@@ -991,12 +999,13 @@ pmap_tlb_asid_deactivate(pmap_t pm)
 	}
 #endif
 	curcpu()->ci_pmap_asid_cur = KERNEL_PID;
-	UVMHIST_LOG(maphist, " <-- done (pm=%#jx)", (uintptr_t)pm, 0, 0, 0);
 	tlb_set_asid(KERNEL_PID);
+
 	pmap_tlb_pai_check(cpu_tlb_info(curcpu()), false);
 #if defined(DEBUG)
 	pmap_tlb_asid_check();
 #endif
+	UVMHIST_LOG(maphist, " <-- done (pm=%#jx)", (uintptr_t)pm, 0, 0, 0);
 }
 
 void



CVS commit: src/sys/uvm/pmap

2020-08-10 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Aug 11 05:43:45 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Fix a comment


To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 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.51 src/sys/uvm/pmap/pmap.c:1.52
--- src/sys/uvm/pmap/pmap.c:1.51	Fri Aug  7 07:19:45 2020
+++ src/sys/uvm/pmap/pmap.c	Tue Aug 11 05:43:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.51 2020/08/07 07:19:45 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.52 2020/08/11 05:43:45 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.51 2020/08/07 07:19:45 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.52 2020/08/11 05:43:45 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1309,8 +1309,6 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 
 	/*
 	 * Now validate mapping with desired protection/wiring.
-	 * Assume uniform modified and referenced status for all
-	 * MIPS pages in a MACH page.
 	 */
 	if (wired) {
 		pmap->pm_stats.wired_count++;



CVS commit: src/sys/uvm/pmap

2020-08-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Aug  1 07:14:05 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_tlb.h

Log Message:
Provide a TLBINFO_OWNED


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/uvm/pmap/pmap_tlb.h

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_tlb.h
diff -u src/sys/uvm/pmap/pmap_tlb.h:1.13 src/sys/uvm/pmap/pmap_tlb.h:1.14
--- src/sys/uvm/pmap/pmap_tlb.h:1.13	Mon Feb 19 22:01:15 2018
+++ src/sys/uvm/pmap/pmap_tlb.h	Sat Aug  1 07:14:05 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.h,v 1.13 2018/02/19 22:01:15 jdolecek Exp $	*/
+/*	$NetBSD: pmap_tlb.h,v 1.14 2020/08/01 07:14:05 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -96,6 +96,7 @@ struct pmap_asid_info {
 
 #define	TLBINFO_LOCK(ti)		mutex_spin_enter((ti)->ti_lock)
 #define	TLBINFO_UNLOCK(ti)		mutex_spin_exit((ti)->ti_lock)
+#define	TLBINFO_OWNED(ti)		mutex_owned((ti)->ti_lock)
 #define	PMAP_PAI_ASIDVALID_P(pai, ti)	((pai)->pai_asid != 0)
 #define	PMAP_PAI(pmap, ti)		(&(pmap)->pm_pai[tlbinfo_index(ti)])
 #define	PAI_PMAP(pai, ti)	\



CVS commit: src/sys/uvm/pmap

2020-07-18 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Jul 18 16:12:09 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Always call pmap_segtab_activate in pmap_activate.  pmap_segtab_activate
does the right thing if called with non-curlwp.


To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 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.49 src/sys/uvm/pmap/pmap.c:1.50
--- src/sys/uvm/pmap/pmap.c:1.49	Sun Apr 12 15:36:18 2020
+++ src/sys/uvm/pmap/pmap.c	Sat Jul 18 16:12:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.49 2020/04/12 15:36:18 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.50 2020/07/18 16:12:09 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.49 2020/04/12 15:36:18 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.50 2020/07/18 16:12:09 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -723,9 +723,7 @@ pmap_activate(struct lwp *l)
 	kpreempt_disable();
 	pmap_tlb_miss_lock_enter();
 	pmap_tlb_asid_acquire(pmap, l);
-	if (l == curlwp) {
-		pmap_segtab_activate(pmap, l);
-	}
+	pmap_segtab_activate(pmap, l);
 	pmap_tlb_miss_lock_exit();
 	kpreempt_enable();
 



CVS commit: src/sys/uvm/pmap

2020-07-08 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Jul  8 12:12:16 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.h

Log Message:
Comment updates


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/uvm/pmap/pmap.h

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.h
diff -u src/sys/uvm/pmap/pmap.h:1.14 src/sys/uvm/pmap/pmap.h:1.15
--- src/sys/uvm/pmap/pmap.h:1.14	Sun Mar 15 11:36:24 2020
+++ src/sys/uvm/pmap/pmap.h	Wed Jul  8 12:12:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.14 2020/03/15 11:36:24 rin Exp $	*/
+/*	$NetBSD: pmap.h,v 1.15 2020/07/08 12:12:16 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -103,6 +103,11 @@ typedef union pmap_segtab {
 struct pmap;
 typedef bool (*pte_callback_t)(struct pmap *, vaddr_t, vaddr_t,
 	pt_entry_t *, uintptr_t);
+
+/*
+ * Common part of the bootstraping the system enough to run with
+ * virtual memory.
+ */
 void pmap_bootstrap_common(void);
 pt_entry_t *pmap_pte_lookup(struct pmap *, vaddr_t);
 pt_entry_t *pmap_pte_reserve(struct pmap *, vaddr_t, int);
@@ -182,9 +187,6 @@ extern pmap_segtab_t pmap_kern_segtab;
 #define	pmap_wired_count(pmap) 	((pmap)->pm_stats.wired_count)
 #define pmap_resident_count(pmap) ((pmap)->pm_stats.resident_count)
 
-/*
- *	Bootstrap the system enough to run with virtual memory.
- */
 bool	pmap_remove_all(pmap_t);
 void	pmap_set_modified(paddr_t);
 bool	pmap_page_clear_attributes(struct vm_page_md *, u_int);



CVS commit: src/sys/uvm/pmap

2020-04-13 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Apr 14 05:43:57 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Fix UVMHIST bulid


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.32 src/sys/uvm/pmap/pmap_tlb.c:1.33
--- src/sys/uvm/pmap/pmap_tlb.c:1.32	Sun Apr 12 15:36:18 2020
+++ src/sys/uvm/pmap/pmap_tlb.c	Tue Apr 14 05:43:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.32 2020/04/12 15:36:18 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.33 2020/04/14 05:43:57 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.32 2020/04/12 15:36:18 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.33 2020/04/14 05:43:57 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -241,7 +241,7 @@ pmap_tlb_pai_reset(struct pmap_tlb_info 
 {
 	UVMHIST_FUNC(__func__);
 	UVMHIST_CALLARGS(maphist, "(ti=%#jx, pai=%#jx, pm=%#jx): asid %u",
-	ti, (uintptr_t)pai, (uintptr_t)pm, pai->pai_asid);
+	(uintptr_t)ti, (uintptr_t)pai, (uintptr_t)pm, pai->pai_asid);
 
 	/*
 	 * We must have an ASID but it must not be onproc (on a processor).



CVS commit: src/sys/uvm/pmap

2020-04-13 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Apr 13 08:05:22 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_synci.c

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/uvm/pmap/pmap_synci.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_synci.c
diff -u src/sys/uvm/pmap/pmap_synci.c:1.4 src/sys/uvm/pmap/pmap_synci.c:1.5
--- src/sys/uvm/pmap/pmap_synci.c:1.4	Wed Dec 18 11:27:56 2019
+++ src/sys/uvm/pmap/pmap_synci.c	Mon Apr 13 08:05:22 2020
@@ -29,7 +29,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_synci.c,v 1.4 2019/12/18 11:27:56 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_synci.c,v 1.5 2020/04/13 08:05:22 skrll Exp $");
 
 #define __PMAP_PRIVATE
 
@@ -41,7 +41,7 @@ __KERNEL_RCSID(0, "$NetBSD: pmap_synci.c
 #include 
 #include 
 #include 
- 
+
 #include 
 
 #if defined(MULTIPROCESSOR)



CVS commit: src/sys/uvm/pmap

2020-04-12 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Apr 12 15:36:18 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.c pmap_tlb.c

Log Message:
Use UVMHIST_CALLARGS


To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.31 -r1.32 src/sys/uvm/pmap/pmap_tlb.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.48 src/sys/uvm/pmap/pmap.c:1.49
--- src/sys/uvm/pmap/pmap.c:1.48	Sat Mar 14 14:05:44 2020
+++ src/sys/uvm/pmap/pmap.c	Sun Apr 12 15:36:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.48 2020/03/14 14:05:44 ad Exp $	*/
+/*	$NetBSD: pmap.c,v 1.49 2020/04/12 15:36:18 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.48 2020/03/14 14:05:44 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.49 2020/04/12 15:36:18 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -581,7 +581,8 @@ pmap_init(void)
 	UVMHIST_INIT_STATIC(pmapexechist, pmapexechistbuf);
 	UVMHIST_INIT_STATIC(pmaphist, pmaphistbuf);
 
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLED(pmaphist);
 
 	/*
 	 * Initialize the segtab lock.
@@ -623,7 +624,8 @@ pmap_init(void)
 pmap_t
 pmap_create(void)
 {
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLED(pmaphist);
 	PMAP_COUNT(create);
 
 	pmap_t pmap = pool_get(_pmap_pool, PR_WAITOK);
@@ -658,8 +660,8 @@ pmap_create(void)
 void
 pmap_destroy(pmap_t pmap)
 {
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pmap=%#jx)", (uintptr_t)pmap, 0, 0, 0);
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx)", (uintptr_t)pmap, 0, 0, 0);
 
 	if (atomic_dec_uint_nv(>pm_count) > 0) {
 		PMAP_COUNT(dereference);
@@ -694,8 +696,8 @@ pmap_destroy(pmap_t pmap)
 void
 pmap_reference(pmap_t pmap)
 {
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pmap=%#jx)", (uintptr_t)pmap, 0, 0, 0);
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx)", (uintptr_t)pmap, 0, 0, 0);
 	PMAP_COUNT(reference);
 
 	if (pmap != NULL) {
@@ -713,8 +715,8 @@ pmap_activate(struct lwp *l)
 {
 	pmap_t pmap = l->l_proc->p_vmspace->vm_map.pmap;
 
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(l=%#jx pmap=%#jx)", (uintptr_t)l,
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "(l=%#jx pmap=%#jx)", (uintptr_t)l,
 	(uintptr_t)pmap, 0, 0);
 	PMAP_COUNT(activate);
 
@@ -744,9 +746,8 @@ pmap_page_remove(struct vm_page *pg)
 	VM_PAGEMD_PVLIST_LOCK(mdpg);
 	pmap_pvlist_check(mdpg);
 
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-
-	UVMHIST_LOG(pmapexechist, "pg %#jx (pa %#jx) [page removed]: "
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmapexechist, "pg %#jx (pa %#jx) [page removed]: "
 	"execpage cleared", (uintptr_t)pg, VM_PAGE_TO_PHYS(pg), 0, 0);
 #ifdef PMAP_VIRTUAL_CACHE_ALIASES
 	pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE|VM_PAGEMD_UNCACHED);
@@ -862,8 +863,8 @@ pmap_deactivate(struct lwp *l)
 {
 	pmap_t pmap = l->l_proc->p_vmspace->vm_map.pmap;
 
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(l=%#jx pmap=%#jx)", (uintptr_t)l,
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "(l=%#jx pmap=%#jx)", (uintptr_t)l,
 	(uintptr_t)pmap, 0, 0);
 	PMAP_COUNT(deactivate);
 
@@ -885,8 +886,8 @@ pmap_deactivate(struct lwp *l)
 void
 pmap_update(struct pmap *pmap)
 {
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pmap=%#jx)", (uintptr_t)pmap, 0, 0, 0);
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx)", (uintptr_t)pmap, 0, 0, 0);
 	PMAP_COUNT(update);
 
 	kpreempt_disable();
@@ -930,10 +931,10 @@ pmap_pte_remove(pmap_t pmap, vaddr_t sva
 	const pt_entry_t npte = flags;
 	const bool is_kernel_pmap_p = (pmap == pmap_kernel());
 
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pmap=%#jx kernel=%c va=%#jx..%#jx)",
-	(uintptr_t)pmap, (is_kernel_pmap_p ? 1 : 0), sva, eva);
-	UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx",
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jx va=%#jx..%#jx)",
+	(uintptr_t)pmap, (pmap == pmap_kernel() ? 1 : 0), sva, eva);
+	UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx)",
 	(uintptr_t)ptep, flags, 0, 0);
 
 	KASSERT(kpreempt_disabled());
@@ -977,8 +978,8 @@ pmap_remove(pmap_t pmap, vaddr_t sva, va
 	const bool is_kernel_pmap_p = (pmap == pmap_kernel());
 	const pt_entry_t npte = pte_nv_entry(is_kernel_pmap_p);
 
-	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pmap=%#jx, va=%#jx..%#jx)",
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx, va=%#jx..%#jx)",
 	(uintptr_t)pmap, 

CVS commit: src/sys/uvm/pmap

2020-04-09 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Apr  9 08:55:45 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Make a comment less MIPS specific


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.30 src/sys/uvm/pmap/pmap_tlb.c:1.31
--- src/sys/uvm/pmap/pmap_tlb.c:1.30	Wed Dec 18 11:27:56 2019
+++ src/sys/uvm/pmap/pmap_tlb.c	Thu Apr  9 08:55:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.30 2019/12/18 11:27:56 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.31 2020/04/09 08:55:45 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.30 2019/12/18 11:27:56 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.31 2020/04/09 08:55:45 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -69,13 +69,14 @@ __KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v
  *
  * Each pmap has two bitmaps: pm_active and pm_onproc.  Each bit in pm_active
  * indicates whether that pmap has an allocated ASID for a CPU.  Each bit in
- * pm_onproc indicates that pmap's ASID is active (equal to the ASID in COP 0
- * register EntryHi) on a CPU.  The bit number comes from the CPU's cpu_index().
- * Even though these bitmaps contain the bits for all CPUs, the bits that
- * correspond to the bits belonging to the CPUs sharing a TLB can only be
- * manipulated while holding that TLB's lock.  Atomic ops must be used to
- * update them since multiple CPUs may be changing different sets of bits at
- * same time but these sets never overlap.
+ * pm_onproc indicates that the pmap's ASID is in use, i.e. a CPU has it in its
+ * "current ASID" field, e.g. the ASID field of the COP 0 register EntryHi for
+ * MIPS, or the ASID field of TTBR0 for AA64.  The bit number used in these
+ * bitmaps comes from the CPU's cpu_index().  Even though these bitmaps contain
+ * the bits for all CPUs, the bits that  correspond to the bits belonging to
+ * the CPUs sharing a TLB can only be manipulated while holding that TLB's
+ * lock.  Atomic ops must be used to update them since multiple CPUs may be
+ * changing different sets of bits at same time but these sets never overlap.
  *
  * When a change to the local TLB may require a change in the TLB's of other
  * CPUs, we try to avoid sending an IPI if at all possible.  For instance, if



CVS commit: src/sys/uvm/pmap

2020-03-16 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Mon Mar 16 20:07:44 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_pvt.c

Log Message:
Use C99-ism to reduce ifdefs.  Pointed out by christos@.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/uvm/pmap/pmap_pvt.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_pvt.c
diff -u src/sys/uvm/pmap/pmap_pvt.c:1.9 src/sys/uvm/pmap/pmap_pvt.c:1.10
--- src/sys/uvm/pmap/pmap_pvt.c:1.9	Mon Mar 16 19:56:39 2020
+++ src/sys/uvm/pmap/pmap_pvt.c	Mon Mar 16 20:07:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_pvt.c,v 1.9 2020/03/16 19:56:39 ad Exp $	*/
+/*	$NetBSD: pmap_pvt.c,v 1.10 2020/03/16 20:07:44 ad Exp $	*/
 
 /*-
  * Copyright (c) 2014, 2020 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__RCSID("$NetBSD: pmap_pvt.c,v 1.9 2020/03/16 19:56:39 ad Exp $");
+__RCSID("$NetBSD: pmap_pvt.c,v 1.10 2020/03/16 20:07:44 ad Exp $");
 
 #include 
 #include 
@@ -77,9 +77,6 @@ pmap_pv_track(paddr_t start, psize_t siz
 {
 	struct pv_track *pvt;
 	size_t npages;
-#ifdef PMAP_PAGE_INIT
-	size_t i;
-#endif
 
 	KASSERT(start == trunc_page(start));
 	KASSERT(size == trunc_page(size));
@@ -94,7 +91,7 @@ pmap_pv_track(paddr_t start, psize_t siz
 	pvt->pvt_size = size;
 
 #ifdef PMAP_PAGE_INIT
-	for (i = 0; i < npages; i++)
+	for (size_t i = 0; i < npages; i++)
 		PMAP_PAGE_INIT(>pvt_pages[i]);
 #endif
 



CVS commit: src/sys/uvm/pmap

2020-03-16 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Mon Mar 16 19:56:39 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_pvt.c

Log Message:
pmap_pv_track(): use PMAP_PAGE_INIT() otherwise the x86 pmap pukes.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/uvm/pmap/pmap_pvt.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_pvt.c
diff -u src/sys/uvm/pmap/pmap_pvt.c:1.8 src/sys/uvm/pmap/pmap_pvt.c:1.9
--- src/sys/uvm/pmap/pmap_pvt.c:1.8	Wed Jan  1 16:50:41 2020
+++ src/sys/uvm/pmap/pmap_pvt.c	Mon Mar 16 19:56:39 2020
@@ -1,7 +1,7 @@
-/*	$NetBSD: pmap_pvt.c,v 1.8 2020/01/01 16:50:41 martin Exp $	*/
+/*	$NetBSD: pmap_pvt.c,v 1.9 2020/03/16 19:56:39 ad Exp $	*/
 
 /*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * Copyright (c) 2014, 2020 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -30,7 +30,7 @@
  */
 
 #include 
-__RCSID("$NetBSD: pmap_pvt.c,v 1.8 2020/01/01 16:50:41 martin Exp $");
+__RCSID("$NetBSD: pmap_pvt.c,v 1.9 2020/03/16 19:56:39 ad Exp $");
 
 #include 
 #include 
@@ -77,6 +77,9 @@ pmap_pv_track(paddr_t start, psize_t siz
 {
 	struct pv_track *pvt;
 	size_t npages;
+#ifdef PMAP_PAGE_INIT
+	size_t i;
+#endif
 
 	KASSERT(start == trunc_page(start));
 	KASSERT(size == trunc_page(size));
@@ -90,6 +93,11 @@ pmap_pv_track(paddr_t start, psize_t siz
 	pvt->pvt_start = start;
 	pvt->pvt_size = size;
 
+#ifdef PMAP_PAGE_INIT
+	for (i = 0; i < npages; i++)
+		PMAP_PAGE_INIT(>pvt_pages[i]);
+#endif
+
 	mutex_enter(_unmanaged.lock);
 	pvt->pvt_next = pv_unmanaged.list;
 	atomic_store_release(_unmanaged.list, pvt);



CVS commit: src/sys/uvm/pmap

2020-03-15 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Sun Mar 15 11:36:24 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.h

Log Message:
Fix build for ports using uvm/pmap; pmap_remove_all() returns a boolean.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/uvm/pmap/pmap.h

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.h
diff -u src/sys/uvm/pmap/pmap.h:1.13 src/sys/uvm/pmap/pmap.h:1.14
--- src/sys/uvm/pmap/pmap.h:1.13	Wed Mar 11 13:30:31 2020
+++ src/sys/uvm/pmap/pmap.h	Sun Mar 15 11:36:24 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.13 2020/03/11 13:30:31 thorpej Exp $	*/
+/*	$NetBSD: pmap.h,v 1.14 2020/03/15 11:36:24 rin Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -185,7 +185,7 @@ extern pmap_segtab_t pmap_kern_segtab;
 /*
  *	Bootstrap the system enough to run with virtual memory.
  */
-void	pmap_remove_all(pmap_t);
+bool	pmap_remove_all(pmap_t);
 void	pmap_set_modified(paddr_t);
 bool	pmap_page_clear_attributes(struct vm_page_md *, u_int);
 void	pmap_page_set_attributes(struct vm_page_md *, u_int);



CVS commit: src/sys/uvm/pmap

2020-03-12 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Thu Mar 12 23:10:27 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
pmap_tlb_miss_lock needs to be globally visible.


To generate a diff of this commit:
cvs rdiff -u -r1.46 -r1.47 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.46 src/sys/uvm/pmap/pmap.c:1.47
--- src/sys/uvm/pmap/pmap.c:1.46	Wed Mar 11 13:30:31 2020
+++ src/sys/uvm/pmap/pmap.c	Thu Mar 12 23:10:27 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.46 2020/03/11 13:30:31 thorpej Exp $	*/
+/*	$NetBSD: pmap.c,v 1.47 2020/03/12 23:10:27 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.46 2020/03/11 13:30:31 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.47 2020/03/12 23:10:27 thorpej Exp $");
 
 /*
  *	Manages physical address maps.
@@ -277,7 +277,7 @@ struct pool_allocator pmap_pv_page_alloc
 #define	pmap_tlb_miss_lock_enter()	pmap_md_tlb_miss_lock_enter()
 #define	pmap_tlb_miss_lock_exit()	pmap_md_tlb_miss_lock_exit()
 #else
-static kmutex_t pmap_tlb_miss_lock __cacheline_aligned;
+kmutex_t pmap_tlb_miss_lock 		__cacheline_aligned;
 
 static void
 pmap_tlb_miss_lock_init(void)



CVS commit: src/sys/uvm/pmap

2020-01-01 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Jan  1 16:50:42 UTC 2020

Modified Files:
src/sys/uvm/pmap: pmap_pvt.c

Log Message:
Revert previous (include of sys/param.h) - the headers requiring this
have been fixed.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/uvm/pmap/pmap_pvt.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_pvt.c
diff -u src/sys/uvm/pmap/pmap_pvt.c:1.7 src/sys/uvm/pmap/pmap_pvt.c:1.8
--- src/sys/uvm/pmap/pmap_pvt.c:1.7	Sat Dec 28 08:25:33 2019
+++ src/sys/uvm/pmap/pmap_pvt.c	Wed Jan  1 16:50:41 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_pvt.c,v 1.7 2019/12/28 08:25:33 martin Exp $	*/
+/*	$NetBSD: pmap_pvt.c,v 1.8 2020/01/01 16:50:41 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,9 +30,8 @@
  */
 
 #include 
-__RCSID("$NetBSD: pmap_pvt.c,v 1.7 2019/12/28 08:25:33 martin Exp $");
+__RCSID("$NetBSD: pmap_pvt.c,v 1.8 2020/01/01 16:50:41 martin Exp $");
 
-#include 
 #include 
 #include 
 #include 



CVS commit: src/sys/uvm/pmap

2019-12-30 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Mon Dec 30 18:28:06 UTC 2019

Modified Files:
src/sys/uvm/pmap: vmpagemd.h

Log Message:
pg->phys_addr -> VM_PAGE_TO_PHYS().


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/uvm/pmap/vmpagemd.h

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/vmpagemd.h
diff -u src/sys/uvm/pmap/vmpagemd.h:1.15 src/sys/uvm/pmap/vmpagemd.h:1.16
--- src/sys/uvm/pmap/vmpagemd.h:1.15	Sun Oct 20 08:29:38 2019
+++ src/sys/uvm/pmap/vmpagemd.h	Mon Dec 30 18:28:06 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: vmpagemd.h,v 1.15 2019/10/20 08:29:38 skrll Exp $	*/
+/*	$NetBSD: vmpagemd.h,v 1.16 2019/12/30 18:28:06 ad Exp $	*/
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -149,7 +149,7 @@ pmap_pvlist_locked_p(struct vm_page_md *
 do {	\
 	(pg)->mdpage.mdpg_first.pv_next = NULL;\
 	(pg)->mdpage.mdpg_first.pv_pmap = NULL;\
-	(pg)->mdpage.mdpg_first.pv_va = (pg)->phys_addr;		\
+	(pg)->mdpage.mdpg_first.pv_va = VM_PAGE_TO_PHYS(pg);		\
 	(pg)->mdpage.mdpg_attrs = 0;	\
 	VM_PAGEMD_PVLIST_LOCK_INIT(&(pg)->mdpage);			\
 } while (/* CONSTCOND */ 0)



CVS commit: src/sys/uvm/pmap

2019-12-28 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sat Dec 28 08:25:33 UTC 2019

Modified Files:
src/sys/uvm/pmap: pmap_pvt.c

Log Message:
Add mising sys/param.h include (for COHERENCY_UNIT, now needed in uvm headers)


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/uvm/pmap/pmap_pvt.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_pvt.c
diff -u src/sys/uvm/pmap/pmap_pvt.c:1.6 src/sys/uvm/pmap/pmap_pvt.c:1.7
--- src/sys/uvm/pmap/pmap_pvt.c:1.6	Wed Dec 18 11:27:56 2019
+++ src/sys/uvm/pmap/pmap_pvt.c	Sat Dec 28 08:25:33 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_pvt.c,v 1.6 2019/12/18 11:27:56 skrll Exp $	*/
+/*	$NetBSD: pmap_pvt.c,v 1.7 2019/12/28 08:25:33 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,8 +30,9 @@
  */
 
 #include 
-__RCSID("$NetBSD: pmap_pvt.c,v 1.6 2019/12/18 11:27:56 skrll Exp $");
+__RCSID("$NetBSD: pmap_pvt.c,v 1.7 2019/12/28 08:25:33 martin Exp $");
 
+#include 
 #include 
 #include 
 #include 



CVS commit: src/sys/uvm/pmap

2019-12-18 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Dec 18 11:27:56 UTC 2019

Modified Files:
src/sys/uvm/pmap: pmap_pvt.c pmap_segtab.c pmap_synci.c pmap_tlb.c

Log Message:
KNF


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/uvm/pmap/pmap_pvt.c
cvs rdiff -u -r1.12 -r1.13 src/sys/uvm/pmap/pmap_segtab.c
cvs rdiff -u -r1.3 -r1.4 src/sys/uvm/pmap/pmap_synci.c
cvs rdiff -u -r1.29 -r1.30 src/sys/uvm/pmap/pmap_tlb.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_pvt.c
diff -u src/sys/uvm/pmap/pmap_pvt.c:1.5 src/sys/uvm/pmap/pmap_pvt.c:1.6
--- src/sys/uvm/pmap/pmap_pvt.c:1.5	Mon Dec  9 04:39:58 2019
+++ src/sys/uvm/pmap/pmap_pvt.c	Wed Dec 18 11:27:56 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_pvt.c,v 1.5 2019/12/09 04:39:58 riastradh Exp $	*/
+/*	$NetBSD: pmap_pvt.c,v 1.6 2019/12/18 11:27:56 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,11 +30,11 @@
  */
 
 #include 
-__RCSID("$NetBSD: pmap_pvt.c,v 1.5 2019/12/09 04:39:58 riastradh Exp $");
+__RCSID("$NetBSD: pmap_pvt.c,v 1.6 2019/12/18 11:27:56 skrll Exp $");
 
+#include 
 #include 
 #include 
-#include 
 
 #include 
 #include 

Index: src/sys/uvm/pmap/pmap_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.12 src/sys/uvm/pmap/pmap_segtab.c:1.13
--- src/sys/uvm/pmap/pmap_segtab.c:1.12	Sat Dec 14 14:46:11 2019
+++ src/sys/uvm/pmap/pmap_segtab.c	Wed Dec 18 11:27:56 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.12 2019/12/14 14:46:11 ad Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.13 2019/12/18 11:27:56 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.12 2019/12/14 14:46:11 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.13 2019/12/18 11:27:56 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -100,10 +100,11 @@ __KERNEL_RCSID(0, "$NetBSD: pmap_segtab.
 #include "opt_multiprocessor.h"
 
 #include 
-#include 
-#include 
-#include 
+
 #include 
+#include 
+#include 
+#include 
 
 #include 
 

Index: src/sys/uvm/pmap/pmap_synci.c
diff -u src/sys/uvm/pmap/pmap_synci.c:1.3 src/sys/uvm/pmap/pmap_synci.c:1.4
--- src/sys/uvm/pmap/pmap_synci.c:1.3	Mon Jul 11 16:06:09 2016
+++ src/sys/uvm/pmap/pmap_synci.c	Wed Dec 18 11:27:56 2019
@@ -29,17 +29,18 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_synci.c,v 1.3 2016/07/11 16:06:09 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_synci.c,v 1.4 2019/12/18 11:27:56 skrll Exp $");
 
 #define __PMAP_PRIVATE
 
 #include "opt_multiprocessor.h"
 
 #include 
-#include 
-#include 
+
 #include 
 #include 
+#include 
+#include 
  
 #include 
 

Index: src/sys/uvm/pmap/pmap_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.29 src/sys/uvm/pmap/pmap_tlb.c:1.30
--- src/sys/uvm/pmap/pmap_tlb.c:1.29	Tue Dec 17 13:25:50 2019
+++ src/sys/uvm/pmap/pmap_tlb.c	Wed Dec 18 11:27:56 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.29 2019/12/17 13:25:50 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.30 2019/12/18 11:27:56 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.29 2019/12/17 13:25:50 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.30 2019/12/18 11:27:56 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -127,12 +127,13 @@ __KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v
 #include "opt_multiprocessor.h"
 
 #include 
-#include 
-#include 
-#include 
+
 #include 
-#include 			/* for cold */
 #include 
+#include 			/* for cold */
+#include 
+#include 
+#include 
 
 #include 
 



CVS commit: src/sys/uvm/pmap

2019-12-18 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Dec 18 10:55:50 UTC 2019

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Remove duplicate #includes


To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 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.44 src/sys/uvm/pmap/pmap.c:1.45
--- src/sys/uvm/pmap/pmap.c:1.44	Sun Oct 20 08:29:38 2019
+++ src/sys/uvm/pmap/pmap.c	Wed Dec 18 10:55:50 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.44 2019/10/20 08:29:38 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.45 2019/12/18 10:55:50 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.44 2019/10/20 08:29:38 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.45 2019/12/18 10:55:50 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -102,14 +102,12 @@ __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.4
 #define __PMAP_PRIVATE
 
 #include 
+
 #include 
 #include 
 #include 
 #include 
 #include 
-#include 
-#include 
-#include 
 
 #include 
 #include 



CVS commit: src/sys/uvm/pmap

2019-12-17 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Dec 17 13:25:50 UTC 2019

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Fix a UVMHIST_LOG format


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.28 src/sys/uvm/pmap/pmap_tlb.c:1.29
--- src/sys/uvm/pmap/pmap_tlb.c:1.28	Sun Feb 25 21:43:03 2018
+++ src/sys/uvm/pmap/pmap_tlb.c	Tue Dec 17 13:25:50 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.28 2018/02/25 21:43:03 jdolecek Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.29 2019/12/17 13:25:50 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.28 2018/02/25 21:43:03 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.29 2019/12/17 13:25:50 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -734,7 +734,7 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t 
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(maphist);
 	UVMHIST_LOG(maphist,
-	" (pm=%#jx va=%#j, pte=%#jx flags=%#jx)",
+	" (pm=%#jx va=%#jx, pte=%#jx flags=%#jx)",
 	(uintptr_t)pm, va, pte_value(pte), flags);
 
 	KASSERT(kpreempt_disabled());



CVS commit: src/sys/uvm/pmap

2019-12-14 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Sat Dec 14 14:46:11 UTC 2019

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
Use pageq.list instead of listq.list.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.11 src/sys/uvm/pmap/pmap_segtab.c:1.12
--- src/sys/uvm/pmap/pmap_segtab.c:1.11	Sun Oct 20 07:22:51 2019
+++ src/sys/uvm/pmap/pmap_segtab.c	Sat Dec 14 14:46:11 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.11 2019/10/20 07:22:51 skrll Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.12 2019/12/14 14:46:11 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.11 2019/10/20 07:22:51 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.12 2019/12/14 14:46:11 ad Exp $");
 
 /*
  *	Manages physical address maps.
@@ -247,7 +247,7 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 		struct vm_page *pg = PHYS_TO_VM_PAGE(pa);
 #ifdef PMAP_PTP_CACHE
 		mutex_spin_enter(_segtab_lock);
-		LIST_INSERT_HEAD(_segtab_info.ptp_pgflist, pg, listq.list);
+		LIST_INSERT_HEAD(_segtab_info.ptp_pgflist, pg, pageq.list);
 		mutex_spin_exit(_segtab_lock);
 #else
 		uvm_pagefree(pg);
@@ -457,7 +457,7 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va
 #ifdef PMAP_PTP_CACHE
 		mutex_spin_enter(_segtab_lock);
 		if ((pg = LIST_FIRST(_segtab_info.ptp_pgflist)) != NULL) {
-			LIST_REMOVE(pg, listq.list);
+			LIST_REMOVE(pg, pageq.list);
 			KASSERT(LIST_FIRST(_segtab_info.ptp_pgflist) != pg);
 		}
 		mutex_spin_exit(_segtab_lock);
@@ -485,7 +485,7 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va
 #ifdef PMAP_PTP_CACHE
 			mutex_spin_enter(_segtab_lock);
 			LIST_INSERT_HEAD(_segtab_info.ptp_pgflist,
-			pg, listq.list);
+			pg, pageq.list);
 			mutex_spin_exit(_segtab_lock);
 #else
 			PMAP_UNMAP_POOLPAGE((vaddr_t)pte);



CVS commit: src/sys/uvm/pmap

2019-12-08 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Dec  9 04:39:58 UTC 2019

Modified Files:
src/sys/uvm/pmap: pmap_pvt.c

Log Message:
Convert pmap_pvt to atomic_load/store.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/uvm/pmap/pmap_pvt.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_pvt.c
diff -u src/sys/uvm/pmap/pmap_pvt.c:1.4 src/sys/uvm/pmap/pmap_pvt.c:1.5
--- src/sys/uvm/pmap/pmap_pvt.c:1.4	Sat Dec  7 17:56:08 2019
+++ src/sys/uvm/pmap/pmap_pvt.c	Mon Dec  9 04:39:58 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_pvt.c,v 1.4 2019/12/07 17:56:08 jmcneill Exp $	*/
+/*	$NetBSD: pmap_pvt.c,v 1.5 2019/12/09 04:39:58 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__RCSID("$NetBSD: pmap_pvt.c,v 1.4 2019/12/07 17:56:08 jmcneill Exp $");
+__RCSID("$NetBSD: pmap_pvt.c,v 1.5 2019/12/09 04:39:58 riastradh Exp $");
 
 #include 
 #include 
@@ -92,8 +92,7 @@ pmap_pv_track(paddr_t start, psize_t siz
 
 	mutex_enter(_unmanaged.lock);
 	pvt->pvt_next = pv_unmanaged.list;
-	membar_producer();
-	pv_unmanaged.list = pvt;
+	atomic_store_release(_unmanaged.list, pvt);
 	mutex_exit(_unmanaged.lock);
 }
 
@@ -119,9 +118,21 @@ pmap_pv_untrack(paddr_t start, psize_t s
 			panic("pmap_pv_untrack: pv-tracking at 0x%"PRIxPADDR
 			": 0x%"PRIxPSIZE" bytes, not 0x%"PRIxPSIZE" bytes",
 			pvt->pvt_start, pvt->pvt_size, size);
-		*pvtp = pvt->pvt_next;
+
+		/*
+		 * Remove from list.  Readers can safely see the old
+		 * and new states of the list.
+		 */
+		atomic_store_relaxed(pvtp, pvt->pvt_next);
+
+		/* Wait for readers who can see the old state to finish.  */
 		pserialize_perform(pv_unmanaged.psz);
-		pvt->pvt_next = NULL;
+
+		/*
+		 * We now have exclusive access to pvt and can destroy
+		 * it.  Poison it to catch bugs.
+		 */
+		explicit_memset(>pvt_next, 0x1a, sizeof pvt->pvt_next);
 		goto out;
 	}
 	panic("pmap_pv_untrack: pages not pv-tracked at 0x%"PRIxPADDR
@@ -143,8 +154,9 @@ pmap_pv_tracked(paddr_t pa)
 	KASSERT(pa == trunc_page(pa));
 
 	s = pserialize_read_enter();
-	for (pvt = pv_unmanaged.list; pvt != NULL; pvt = pvt->pvt_next) {
-		membar_datadep_consumer();
+	for (pvt = atomic_load_consume(_unmanaged.list);
+	 pvt != NULL;
+	 pvt = pvt->pvt_next) {
 		if ((pvt->pvt_start <= pa) &&
 		((pa - pvt->pvt_start) < pvt->pvt_size))
 			break;



CVS commit: src/sys/uvm/pmap

2019-12-07 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Dec  7 17:56:08 UTC 2019

Modified Files:
src/sys/uvm/pmap: pmap_pvt.c

Log Message:
sys/atomic.h for membar_*


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/uvm/pmap/pmap_pvt.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_pvt.c
diff -u src/sys/uvm/pmap/pmap_pvt.c:1.3 src/sys/uvm/pmap/pmap_pvt.c:1.4
--- src/sys/uvm/pmap/pmap_pvt.c:1.3	Sun Feb  7 18:41:25 2016
+++ src/sys/uvm/pmap/pmap_pvt.c	Sat Dec  7 17:56:08 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_pvt.c,v 1.3 2016/02/07 18:41:25 riastradh Exp $	*/
+/*	$NetBSD: pmap_pvt.c,v 1.4 2019/12/07 17:56:08 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,10 +30,11 @@
  */
 
 #include 
-__RCSID("$NetBSD: pmap_pvt.c,v 1.3 2016/02/07 18:41:25 riastradh Exp $");
+__RCSID("$NetBSD: pmap_pvt.c,v 1.4 2019/12/07 17:56:08 jmcneill Exp $");
 
 #include 
 #include 
+#include 
 
 #include 
 #include 



CVS commit: src/sys/uvm/pmap

2018-02-25 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Sun Feb 25 21:43:03 UTC 2018

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
fix the DIAGNOSTIC function pmap_tlb_asid_count() to not expect
that TLBINFO_ASID_INUSE_P() returns just 0 or 1; the underlying
__BITMAP_ISSET() actually returns the matching bit nowadays, which
caused miscounting

fixes PR kern/53054 by Sevan Janiyan


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.27 src/sys/uvm/pmap/pmap_tlb.c:1.28
--- src/sys/uvm/pmap/pmap_tlb.c:1.27	Sun Feb 25 16:44:31 2018
+++ src/sys/uvm/pmap/pmap_tlb.c	Sun Feb 25 21:43:03 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.27 2018/02/25 16:44:31 jdolecek Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.28 2018/02/25 21:43:03 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.27 2018/02/25 16:44:31 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.28 2018/02/25 21:43:03 jdolecek Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -409,7 +409,8 @@ pmap_tlb_asid_count(struct pmap_tlb_info
 {
 	size_t count = 0;
 	for (tlb_asid_t asid = 1; asid <= ti->ti_asid_max; asid++) {
-		count += TLBINFO_ASID_INUSE_P(ti, asid);
+		if (TLBINFO_ASID_INUSE_P(ti, asid))
+			count++;
 	}
 	return count;
 }



CVS commit: src/sys/uvm/pmap

2018-02-25 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Sun Feb 25 16:44:31 UTC 2018

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
adjust KASSERT() triggered in PR port-cobalt/53054 to provide more info


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.26 src/sys/uvm/pmap/pmap_tlb.c:1.27
--- src/sys/uvm/pmap/pmap_tlb.c:1.26	Wed Feb 21 21:53:54 2018
+++ src/sys/uvm/pmap/pmap_tlb.c	Sun Feb 25 16:44:31 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.26 2018/02/21 21:53:54 jdolecek Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.27 2018/02/25 16:44:31 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.26 2018/02/21 21:53:54 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.27 2018/02/25 16:44:31 jdolecek Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -457,7 +457,11 @@ pmap_tlb_asid_reinitialize(struct pmap_t
 		const u_int asids_found = tlb_record_asids(
 		ti->ti_asid_bitmap._b, ti->ti_asid_max);
 		pmap_tlb_asid_check();
-		KASSERT(asids_found == pmap_tlb_asid_count(ti));
+#ifdef DIAGNOSTIC
+		const u_int asids_count = pmap_tlb_asid_count(ti);
+#endif
+		KASSERTMSG(asids_found == asids_count,
+		"found %u != count %u", asids_found, asids_count);
 		if (__predict_false(asids_found >= ti->ti_asid_max / 2)) {
 			tlb_invalidate_asids(KERNEL_PID + 1, ti->ti_asid_max);
 #else /* MULTIPROCESSOR && !PMAP_TLB_NEED_SHOOTDOWN */



CVS commit: src/sys/uvm/pmap

2018-02-21 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Wed Feb 21 21:53:54 UTC 2018

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
KERNEL_PID is > 0 on powerpc/ibm4xx, need to mask all bits <0,
KERNEL_PID> to avoid triggering KASSERT() checking allocated asid
is bigger than KERNEL_PID; adjust also TLBINFO_ASID_INITIAL_FREE()
accordingly

discussed with Nick


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.25 src/sys/uvm/pmap/pmap_tlb.c:1.26
--- src/sys/uvm/pmap/pmap_tlb.c:1.25	Mon Feb 19 22:01:15 2018
+++ src/sys/uvm/pmap/pmap_tlb.c	Wed Feb 21 21:53:54 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.25 2018/02/19 22:01:15 jdolecek Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.26 2018/02/21 21:53:54 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.25 2018/02/19 22:01:15 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.26 2018/02/21 21:53:54 jdolecek Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -144,14 +144,30 @@ static kmutex_t pmap_tlb0_lock __cacheli
 #error "KERNEL_PID expected in range 0-31"
 #endif
 
+#define	TLBINFO_ASID_MARK_UNUSED(ti, asid) \
+	__BITMAP_CLR((asid), &(ti)->ti_asid_bitmap)
+#define	TLBINFO_ASID_MARK_USED(ti, asid) \
+	__BITMAP_SET((asid), &(ti)->ti_asid_bitmap)
+#define	TLBINFO_ASID_INUSE_P(ti, asid) \
+	__BITMAP_ISSET((asid), &(ti)->ti_asid_bitmap)
+#define	TLBINFO_ASID_RESET(ti) \
+	do {\
+		__BITMAP_ZERO(>ti_asid_bitmap);			\
+		for (tlb_asid_t asid = 0; asid <= KERNEL_PID; asid++) 	\
+			TLBINFO_ASID_MARK_USED(ti, asid);	 	\
+	} while (0)
+#define	TLBINFO_ASID_INITIAL_FREE(asid_max) \
+	(asid_max + 1 /* 0 */ - (1 + KERNEL_PID))
+
 struct pmap_tlb_info pmap_tlb0_info = {
 	.ti_name = "tlb0",
 	.ti_asid_hint = KERNEL_PID + 1,
 #ifdef PMAP_TLB_NUM_PIDS
 	.ti_asid_max = IFCONSTANT(PMAP_TLB_NUM_PIDS - 1),
-	.ti_asids_free = IFCONSTANT(PMAP_TLB_NUM_PIDS - (1 + KERNEL_PID)),
+	.ti_asids_free = IFCONSTANT(
+		TLBINFO_ASID_INITIAL_FREE(PMAP_TLB_NUM_PIDS - 1)),
 #endif
-	.ti_asid_bitmap._b[0] = __BIT(KERNEL_PID),
+	.ti_asid_bitmap._b[0] = __BITS(0, KERNEL_PID),
 #ifdef PMAP_TLB_WIRED_UPAGES
 	.ti_wired = PMAP_TLB_WIRED_UPAGES,
 #endif
@@ -171,20 +187,6 @@ struct pmap_tlb_info *pmap_tlbs[PMAP_TLB
 u_int pmap_ntlbs = 1;
 #endif
 
-#define	TLBINFO_ASID_MARK_UNUSED(ti, asid) \
-	__BITMAP_CLR((asid), &(ti)->ti_asid_bitmap)
-#define	TLBINFO_ASID_MARK_USED(ti, asid) \
-	__BITMAP_SET((asid), &(ti)->ti_asid_bitmap)
-#define	TLBINFO_ASID_INUSE_P(ti, asid) \
-	__BITMAP_ISSET((asid), &(ti)->ti_asid_bitmap)
-#define	TLBINFO_ASID_RESET(ti) \
-	do {		\
-		__BITMAP_ZERO(>ti_asid_bitmap);	\
-		TLBINFO_ASID_MARK_USED(ti, KERNEL_PID); \
-	} while (0)
-#define	TLBINFO_ASID_INITIAL_FREE(ti) \
-	((ti)->ti_asid_max + 1 /* 0 */ - 1 /* reserved KERNEL_PID */)
-
 #ifdef MULTIPROCESSOR
 __unused static inline bool
 pmap_tlb_intersecting_active_p(pmap_t pm, struct pmap_tlb_info *ti)
@@ -338,10 +340,10 @@ pmap_tlb_info_init(struct pmap_tlb_info 
 		KASSERT(pmap_tlbs[pmap_ntlbs] == NULL);
 
 		ti->ti_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_SCHED);
-		TLBINFO_ASID_MARK_USED(ti, KERNEL_PID);
+		TLBINFO_ASID_RESET(ti);
 		ti->ti_asid_hint = KERNEL_PID + 1;
 		ti->ti_asid_max = pmap_tlbs[0]->ti_asid_max;
-		ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
+		ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti->ti_asid_max);
 		ti->ti_tlbinvop = TLBINV_NOBODY;
 		ti->ti_victim = NULL;
 		kcpuset_create(>ti_kcpuset, true);
@@ -368,7 +370,7 @@ pmap_tlb_info_init(struct pmap_tlb_info 
 	//printf("asid ");
 	if (ti->ti_asid_max == 0) {
 		ti->ti_asid_max = pmap_md_tlb_asid_max();
-		ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
+		ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti->ti_asid_max);
 	}
 
 	KASSERT(ti->ti_asid_max < PMAP_TLB_BITMAP_LENGTH);
@@ -427,7 +429,7 @@ pmap_tlb_asid_reinitialize(struct pmap_t
 	 * First, clear the ASID bitmap (except for ASID 0 which belongs
 	 * to the kernel).
 	 */
-	ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
+	ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti->ti_asid_max);
 	ti->ti_asid_hint = KERNEL_PID + 1;
 	TLBINFO_ASID_RESET(ti);
 
@@ -471,7 +473,8 @@ pmap_tlb_asid_reinitialize(struct pmap_t
 			tlb_invalidate_all();
 #endif /* MULTIPROCESSOR && !PMAP_TLB_NEED_SHOOTDOWN */
 			TLBINFO_ASID_RESET(ti);
-			ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
+			ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(
+ti->ti_asid_max);
 #if !defined(MULTIPROCESSOR) || defined(PMAP_TLB_NEED_SHOOTDOWN)
 		} else {
 			ti->ti_asids_free -= asids_found;



CVS commit: src/sys/uvm/pmap

2018-02-19 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Mon Feb 19 22:01:16 UTC 2018

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c pmap_tlb.h

Log Message:
convert to use actual __BITMAP_*() macros from , and make
it possible to override the ASID bitmap length; default to 256 ASIDs as before

XXX NFCI; compile tested only on evbpcc and evbmips, unfortunately didn't
find any combination of port using the MI pmap_tlb.c and working in QEMU


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/uvm/pmap/pmap_tlb.c
cvs rdiff -u -r1.12 -r1.13 src/sys/uvm/pmap/pmap_tlb.h

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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.24 src/sys/uvm/pmap/pmap_tlb.c:1.25
--- src/sys/uvm/pmap/pmap_tlb.c:1.24	Mon Feb 19 21:40:45 2018
+++ src/sys/uvm/pmap/pmap_tlb.c	Mon Feb 19 22:01:15 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.24 2018/02/19 21:40:45 jdolecek Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.25 2018/02/19 22:01:15 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.24 2018/02/19 21:40:45 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.25 2018/02/19 22:01:15 jdolecek Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -140,6 +140,10 @@ static kmutex_t pmap_tlb0_lock __cacheli
 
 #define	IFCONSTANT(x)	(__builtin_constant_p((x)) ? (x) : 0)
 
+#if KERNEL_PID > 31
+#error "KERNEL_PID expected in range 0-31"
+#endif
+
 struct pmap_tlb_info pmap_tlb0_info = {
 	.ti_name = "tlb0",
 	.ti_asid_hint = KERNEL_PID + 1,
@@ -147,7 +151,7 @@ struct pmap_tlb_info pmap_tlb0_info = {
 	.ti_asid_max = IFCONSTANT(PMAP_TLB_NUM_PIDS - 1),
 	.ti_asids_free = IFCONSTANT(PMAP_TLB_NUM_PIDS - (1 + KERNEL_PID)),
 #endif
-	.ti_asid_bitmap[0] = (2 << KERNEL_PID) - 1,
+	.ti_asid_bitmap._b[0] = __BIT(KERNEL_PID),
 #ifdef PMAP_TLB_WIRED_UPAGES
 	.ti_wired = PMAP_TLB_WIRED_UPAGES,
 #endif
@@ -167,22 +171,19 @@ struct pmap_tlb_info *pmap_tlbs[PMAP_TLB
 u_int pmap_ntlbs = 1;
 #endif
 
-#define	__BITMAP_SET(bm, n) \
-	((bm)[(n) / (8*sizeof(bm[0]))] |= 1LU << ((n) % (8*sizeof(bm[0]
-#define	__BITMAP_CLR(bm, n) \
-	((bm)[(n) / (8*sizeof(bm[0]))] &= ~(1LU << ((n) % (8*sizeof(bm[0])
-#define	__BITMAP_ISSET_P(bm, n) \
-	(((bm)[(n) / (8*sizeof(bm[0]))] & (1LU << ((n) % (8*sizeof(bm[0]) != 0)
-
 #define	TLBINFO_ASID_MARK_UNUSED(ti, asid) \
-	__BITMAP_CLR((ti)->ti_asid_bitmap, (asid))
+	__BITMAP_CLR((asid), &(ti)->ti_asid_bitmap)
 #define	TLBINFO_ASID_MARK_USED(ti, asid) \
-	__BITMAP_SET((ti)->ti_asid_bitmap, (asid))
+	__BITMAP_SET((asid), &(ti)->ti_asid_bitmap)
 #define	TLBINFO_ASID_INUSE_P(ti, asid) \
-	__BITMAP_ISSET_P((ti)->ti_asid_bitmap, (asid))
+	__BITMAP_ISSET((asid), &(ti)->ti_asid_bitmap)
+#define	TLBINFO_ASID_RESET(ti) \
+	do {		\
+		__BITMAP_ZERO(>ti_asid_bitmap);	\
+		TLBINFO_ASID_MARK_USED(ti, KERNEL_PID); \
+	} while (0)
 #define	TLBINFO_ASID_INITIAL_FREE(ti) \
 	((ti)->ti_asid_max + 1 /* 0 */ - 1 /* reserved KERNEL_PID */)
-	
 
 #ifdef MULTIPROCESSOR
 __unused static inline bool
@@ -337,7 +338,7 @@ pmap_tlb_info_init(struct pmap_tlb_info 
 		KASSERT(pmap_tlbs[pmap_ntlbs] == NULL);
 
 		ti->ti_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_SCHED);
-		ti->ti_asid_bitmap[0] = (2 << KERNEL_PID) - 1;
+		TLBINFO_ASID_MARK_USED(ti, KERNEL_PID);
 		ti->ti_asid_hint = KERNEL_PID + 1;
 		ti->ti_asid_max = pmap_tlbs[0]->ti_asid_max;
 		ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
@@ -350,6 +351,8 @@ pmap_tlb_info_init(struct pmap_tlb_info 
 		snprintf(ti->ti_name, sizeof(ti->ti_name), "tlb%u",
 		ti->ti_index);
 		pmap_tlb_info_evcnt_attach(ti);
+
+		KASSERT(ti->ti_asid_max < PMAP_TLB_BITMAP_LENGTH);
 		return;
 	}
 #endif
@@ -368,7 +371,7 @@ pmap_tlb_info_init(struct pmap_tlb_info 
 		ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
 	}
 
-	KASSERT(ti->ti_asid_max < sizeof(ti->ti_asid_bitmap)*8);
+	KASSERT(ti->ti_asid_max < PMAP_TLB_BITMAP_LENGTH);
 }
 
 #if defined(MULTIPROCESSOR)
@@ -413,9 +416,6 @@ pmap_tlb_asid_count(struct pmap_tlb_info
 static void
 pmap_tlb_asid_reinitialize(struct pmap_tlb_info *ti, enum tlb_invalidate_op op)
 {
-	const size_t asid_bitmap_words =
-	ti->ti_asid_max / (8 * sizeof(ti->ti_asid_bitmap[0]));
-
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(maphist);
 	UVMHIST_LOG(maphist, "(ti=%#jx, op=%ju)", (uintptr_t)ti, op, 0, 0);
 
@@ -429,10 +429,7 @@ pmap_tlb_asid_reinitialize(struct pmap_t
 	 */
 	ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
 	ti->ti_asid_hint = KERNEL_PID + 1;
-	ti->ti_asid_bitmap[0] = (2 << KERNEL_PID) - 1;
-	for (size_t word = 1; word <= asid_bitmap_words; word++) {
-		ti->ti_asid_bitmap[word] = 0;
-	}
+	TLBINFO_ASID_RESET(ti);
 
 	switch (op) {
 #if defined(MULTIPROCESSOR) && defined(PMAP_TLB_NEED_SHOOTDOWN)
@@ -455,8 +452,8 @@ pmap_tlb_asid_reinitialize(struct pmap_t
 		 */
 #if 

CVS commit: src/sys/uvm/pmap

2018-02-19 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Mon Feb 19 21:40:45 UTC 2018

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
a bit of DRY - add macro for initial free ASID count


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.23 src/sys/uvm/pmap/pmap_tlb.c:1.24
--- src/sys/uvm/pmap/pmap_tlb.c:1.23	Mon Feb 19 21:20:33 2018
+++ src/sys/uvm/pmap/pmap_tlb.c	Mon Feb 19 21:40:45 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.23 2018/02/19 21:20:33 jdolecek Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.24 2018/02/19 21:40:45 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.23 2018/02/19 21:20:33 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.24 2018/02/19 21:40:45 jdolecek Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -180,6 +180,9 @@ u_int pmap_ntlbs = 1;
 	__BITMAP_SET((ti)->ti_asid_bitmap, (asid))
 #define	TLBINFO_ASID_INUSE_P(ti, asid) \
 	__BITMAP_ISSET_P((ti)->ti_asid_bitmap, (asid))
+#define	TLBINFO_ASID_INITIAL_FREE(ti) \
+	((ti)->ti_asid_max + 1 /* 0 */ - 1 /* reserved KERNEL_PID */)
+	
 
 #ifdef MULTIPROCESSOR
 __unused static inline bool
@@ -337,7 +340,7 @@ pmap_tlb_info_init(struct pmap_tlb_info 
 		ti->ti_asid_bitmap[0] = (2 << KERNEL_PID) - 1;
 		ti->ti_asid_hint = KERNEL_PID + 1;
 		ti->ti_asid_max = pmap_tlbs[0]->ti_asid_max;
-		ti->ti_asids_free = ti->ti_asid_max - KERNEL_PID;
+		ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
 		ti->ti_tlbinvop = TLBINV_NOBODY;
 		ti->ti_victim = NULL;
 		kcpuset_create(>ti_kcpuset, true);
@@ -362,7 +365,7 @@ pmap_tlb_info_init(struct pmap_tlb_info 
 	//printf("asid ");
 	if (ti->ti_asid_max == 0) {
 		ti->ti_asid_max = pmap_md_tlb_asid_max();
-		ti->ti_asids_free = ti->ti_asid_max - KERNEL_PID;
+		ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
 	}
 
 	KASSERT(ti->ti_asid_max < sizeof(ti->ti_asid_bitmap)*8);
@@ -424,7 +427,7 @@ pmap_tlb_asid_reinitialize(struct pmap_t
 	 * First, clear the ASID bitmap (except for ASID 0 which belongs
 	 * to the kernel).
 	 */
-	ti->ti_asids_free = ti->ti_asid_max - KERNEL_PID;
+	ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
 	ti->ti_asid_hint = KERNEL_PID + 1;
 	ti->ti_asid_bitmap[0] = (2 << KERNEL_PID) - 1;
 	for (size_t word = 1; word <= asid_bitmap_words; word++) {
@@ -476,7 +479,7 @@ pmap_tlb_asid_reinitialize(struct pmap_t
 			 word++) {
 ti->ti_asid_bitmap[word] = 0;
 			}
-			ti->ti_asids_free = ti->ti_asid_max - KERNEL_PID;
+			ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti);
 #if !defined(MULTIPROCESSOR) || defined(PMAP_TLB_NEED_SHOOTDOWN)
 		} else {
 			ti->ti_asids_free -= asids_found;



CVS commit: src/sys/uvm/pmap

2018-02-19 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Mon Feb 19 21:20:34 UTC 2018

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c pmap_tlb.h

Log Message:
make it possible to not use the icache evcnts


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/uvm/pmap/pmap_tlb.c
cvs rdiff -u -r1.11 -r1.12 src/sys/uvm/pmap/pmap_tlb.h

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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.22 src/sys/uvm/pmap/pmap_tlb.c:1.23
--- src/sys/uvm/pmap/pmap_tlb.c:1.22	Sat Oct 28 00:37:13 2017
+++ src/sys/uvm/pmap/pmap_tlb.c	Mon Feb 19 21:20:33 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.22 2017/10/28 00:37:13 pgoyette Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.23 2018/02/19 21:20:33 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.22 2017/10/28 00:37:13 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.23 2018/02/19 21:20:33 jdolecek Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -296,7 +296,7 @@ pmap_tlb_pai_reset(struct pmap_tlb_info 
 void
 pmap_tlb_info_evcnt_attach(struct pmap_tlb_info *ti)
 {
-#if defined(MULTIPROCESSOR)
+#if defined(MULTIPROCESSOR) && !defined(PMAP_TLB_NO_SYNCI_EVCNT)
 	evcnt_attach_dynamic_nozero(>ti_evcnt_synci_desired,
 	EVCNT_TYPE_MISC, NULL,
 	ti->ti_name, "icache syncs desired");
@@ -315,7 +315,7 @@ pmap_tlb_info_evcnt_attach(struct pmap_t
 	evcnt_attach_dynamic_nozero(>ti_evcnt_synci_deferred,
 	EVCNT_TYPE_MISC, >ti_evcnt_synci_desired,
 	ti->ti_name, "icache pages deferred");
-#endif /* MULTIPROCESSOR */
+#endif /* MULTIPROCESSOR && !PMAP_TLB_NO_SYNCI_EVCNT */
 	evcnt_attach_dynamic_nozero(>ti_evcnt_asid_reinits,
 	EVCNT_TYPE_MISC, NULL,
 	ti->ti_name, "asid pool reinit");

Index: src/sys/uvm/pmap/pmap_tlb.h
diff -u src/sys/uvm/pmap/pmap_tlb.h:1.11 src/sys/uvm/pmap/pmap_tlb.h:1.12
--- src/sys/uvm/pmap/pmap_tlb.h:1.11	Sat Jun 24 05:31:03 2017
+++ src/sys/uvm/pmap/pmap_tlb.h	Mon Feb 19 21:20:33 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.h,v 1.11 2017/06/24 05:31:03 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.h,v 1.12 2018/02/19 21:20:33 jdolecek Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -129,12 +129,14 @@ struct pmap_tlb_info {
 #else
 #define tlbinfo_index(ti)	((void)(ti), 0)
 #endif
+#if !defined(PMAP_TLB_NO_SYNCI_EVCNT)
 	struct evcnt ti_evcnt_synci_asts;
 	struct evcnt ti_evcnt_synci_all;
 	struct evcnt ti_evcnt_synci_pages;
 	struct evcnt ti_evcnt_synci_deferred;
 	struct evcnt ti_evcnt_synci_desired;
 	struct evcnt ti_evcnt_synci_duplicate;
+#endif /* !PMAP_TLB_NO_SYNCI_EVCNT */
 #else
 #define tlbinfo_index(ti)	((void)(ti), 0)
 #endif



CVS commit: src/sys/uvm/pmap

2017-10-29 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Mon Oct 30 03:25:14 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Remove unneeded casts to (uintptr_t).  This is already taken care of in
the xxxHIST_LOG() macros.

No need to pull-up to -8 - the extra cast really won't hurt anything.


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 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.39 src/sys/uvm/pmap/pmap.c:1.40
--- src/sys/uvm/pmap/pmap.c:1.39	Mon Oct 30 01:19:46 2017
+++ src/sys/uvm/pmap/pmap.c	Mon Oct 30 03:25:14 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.39 2017/10/30 01:19:46 pgoyette Exp $	*/
+/*	$NetBSD: pmap.c,v 1.40 2017/10/30 03:25:14 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.39 2017/10/30 01:19:46 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.40 2017/10/30 03:25:14 pgoyette Exp $");
 
 /*
  *	Manages physical address maps.
@@ -885,7 +885,7 @@ pmap_pte_remove(pmap_t pmap, vaddr_t sva
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
 	UVMHIST_LOG(pmaphist, "(pmap=%#jx kernel=%c va=%#jx..%#jx)",
-	(uintmax_t)(uintptr_t)pmap, (is_kernel_pmap_p ? 1 : 0), sva, eva);
+	(uintptr_t)pmap, (is_kernel_pmap_p ? 1 : 0), sva, eva);
 	UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx",
 	(uintptr_t)ptep, flags, 0, 0);
 
@@ -1029,8 +1029,7 @@ pmap_pte_protect(pmap_t pmap, vaddr_t sv
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
 	UVMHIST_LOG(pmaphist, "(pmap=%#jx kernel=%jx va=%#jx..%#jx)",
-	(uintmax_t)(uintptr_t)pmap, (pmap == pmap_kernel() ? 1 : 0),
-	sva, eva);
+	(uintptr_t)pmap, (pmap == pmap_kernel() ? 1 : 0), sva, eva);
 	UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx)",
 	(uintptr_t)ptep, flags, 0, 0);
 



CVS commit: src/sys/uvm/pmap

2017-10-29 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Mon Oct 30 01:19:46 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
And replace an instance of "%p" conversion with "%#jx"


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 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.38 src/sys/uvm/pmap/pmap.c:1.39
--- src/sys/uvm/pmap/pmap.c:1.38	Mon Oct 30 00:55:42 2017
+++ src/sys/uvm/pmap/pmap.c	Mon Oct 30 01:19:46 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.38 2017/10/30 00:55:42 kre Exp $	*/
+/*	$NetBSD: pmap.c,v 1.39 2017/10/30 01:19:46 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.38 2017/10/30 00:55:42 kre Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.39 2017/10/30 01:19:46 pgoyette Exp $");
 
 /*
  *	Manages physical address maps.
@@ -884,7 +884,7 @@ pmap_pte_remove(pmap_t pmap, vaddr_t sva
 	const bool is_kernel_pmap_p = (pmap == pmap_kernel());
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pmap=%p kernel=%c va=%#jx..%#jx)",
+	UVMHIST_LOG(pmaphist, "(pmap=%#jx kernel=%c va=%#jx..%#jx)",
 	(uintmax_t)(uintptr_t)pmap, (is_kernel_pmap_p ? 1 : 0), sva, eva);
 	UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx",
 	(uintptr_t)ptep, flags, 0, 0);



CVS commit: src/sys/uvm/pmap

2017-10-29 Thread Robert Elz
Module Name:src
Committed By:   kre
Date:   Mon Oct 30 00:55:42 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Remove a stray '"' (obvious typo) and add a couple of casts that are
probably needed.


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 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.37 src/sys/uvm/pmap/pmap.c:1.38
--- src/sys/uvm/pmap/pmap.c:1.37	Sat Oct 28 00:37:13 2017
+++ src/sys/uvm/pmap/pmap.c	Mon Oct 30 00:55:42 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.37 2017/10/28 00:37:13 pgoyette Exp $	*/
+/*	$NetBSD: pmap.c,v 1.38 2017/10/30 00:55:42 kre Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.37 2017/10/28 00:37:13 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.38 2017/10/30 00:55:42 kre Exp $");
 
 /*
  *	Manages physical address maps.
@@ -884,8 +884,8 @@ pmap_pte_remove(pmap_t pmap, vaddr_t sva
 	const bool is_kernel_pmap_p = (pmap == pmap_kernel());
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pmap=%p kernel=%c va=%#jx"..%#jx)",
-	pmap, (is_kernel_pmap_p ? 1 : 0), sva, eva);
+	UVMHIST_LOG(pmaphist, "(pmap=%p kernel=%c va=%#jx..%#jx)",
+	(uintmax_t)(uintptr_t)pmap, (is_kernel_pmap_p ? 1 : 0), sva, eva);
 	UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx",
 	(uintptr_t)ptep, flags, 0, 0);
 
@@ -1029,7 +1029,8 @@ pmap_pte_protect(pmap_t pmap, vaddr_t sv
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
 	UVMHIST_LOG(pmaphist, "(pmap=%#jx kernel=%jx va=%#jx..%#jx)",
-	pmap, (pmap == pmap_kernel() ? 1 : 0), sva, eva);
+	(uintmax_t)(uintptr_t)pmap, (pmap == pmap_kernel() ? 1 : 0),
+	sva, eva);
 	UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx)",
 	(uintptr_t)ptep, flags, 0, 0);
 



CVS commit: src/sys/uvm/pmap

2017-09-07 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Sep  7 06:29:47 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
There's no need to call pmap_tlb_invalidate_addr if pmap_remove_all was
called and PMAP_DEFERRED_ACTIVATE is set.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 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.35 src/sys/uvm/pmap/pmap.c:1.36
--- src/sys/uvm/pmap/pmap.c:1.35	Sat Jun 24 07:30:17 2017
+++ src/sys/uvm/pmap/pmap.c	Thu Sep  7 06:29:47 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.35 2017/06/24 07:30:17 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.36 2017/09/07 06:29:47 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.35 2017/06/24 07:30:17 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.36 2017/09/07 06:29:47 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -774,10 +774,12 @@ pmap_page_remove(struct vm_page *pg)
 		pmap_md_tlb_miss_lock_enter();
 		const pt_entry_t npte = pte_nv_entry(is_kernel_pmap_p);
 		pte_set(ptep, npte);
-		/*
-		 * Flush the TLB for the given address.
-		 */
-		pmap_tlb_invalidate_addr(pmap, va);
+		if (__predict_true(!(pmap->pm_flags & PMAP_DEFERRED_ACTIVATE))) {
+			/*
+			 * Flush the TLB for the given address.
+			 */
+			pmap_tlb_invalidate_addr(pmap, va);
+		}
 		pmap_md_tlb_miss_lock_exit();
 
 		/*
@@ -903,10 +905,13 @@ pmap_pte_remove(pmap_t pmap, vaddr_t sva
 		}
 		pmap_md_tlb_miss_lock_enter();
 		pte_set(ptep, npte);
-		/*
-		 * Flush the TLB for the given address.
-		 */
-		pmap_tlb_invalidate_addr(pmap, sva);
+		if (__predict_true(!(pmap->pm_flags & PMAP_DEFERRED_ACTIVATE))) {
+
+			/*
+			 * Flush the TLB for the given address.
+			 */
+			pmap_tlb_invalidate_addr(pmap, sva);
+		}
 		pmap_md_tlb_miss_lock_exit();
 	}
 



CVS commit: src/sys/uvm/pmap

2017-06-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Jun 24 07:30:17 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Use pte_set


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 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.34 src/sys/uvm/pmap/pmap.c:1.35
--- src/sys/uvm/pmap/pmap.c:1.34	Fri May 12 05:45:58 2017
+++ src/sys/uvm/pmap/pmap.c	Sat Jun 24 07:30:17 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.34 2017/05/12 05:45:58 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.35 2017/06/24 07:30:17 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.34 2017/05/12 05:45:58 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.35 2017/06/24 07:30:17 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -773,7 +773,7 @@ pmap_page_remove(struct vm_page *pg)
 
 		pmap_md_tlb_miss_lock_enter();
 		const pt_entry_t npte = pte_nv_entry(is_kernel_pmap_p);
-		*ptep = npte;
+		pte_set(ptep, npte);
 		/*
 		 * Flush the TLB for the given address.
 		 */
@@ -902,7 +902,7 @@ pmap_pte_remove(pmap_t pmap, vaddr_t sva
 			pmap_remove_pv(pmap, sva, pg, pte_modified_p(pte));
 		}
 		pmap_md_tlb_miss_lock_enter();
-		*ptep = npte;
+		pte_set(ptep, npte);
 		/*
 		 * Flush the TLB for the given address.
 		 */
@@ -1054,7 +1054,7 @@ pmap_pte_protect(pmap_t pmap, vaddr_t sv
 		pte = pte_prot_downgrade(pte, prot);
 		if (*ptep != pte) {
 			pmap_md_tlb_miss_lock_enter();
-			*ptep = pte;
+			pte_set(ptep, pte);
 			/*
 			 * Update the TLB if needed.
 			 */
@@ -1137,7 +1137,7 @@ pmap_page_cache(struct vm_page *pg, bool
 		if (pte_valid_p(pte)) {
 			pte = pte_cached_change(pte, cached);
 			pmap_md_tlb_miss_lock_enter();
-			*ptep = pte;
+			pte_set(ptep, pte);
 			pmap_tlb_update_addr(pmap, va, pte, PMAP_TLB_NEED_IPI);
 			pmap_md_tlb_miss_lock_exit();
 		}
@@ -1271,7 +1271,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 	KASSERT(pte_valid_p(npte));
 
 	pmap_md_tlb_miss_lock_enter();
-	*ptep = npte;
+	pte_set(ptep, npte);
 	pmap_tlb_update_addr(pmap, va, npte, update_flags);
 	pmap_md_tlb_miss_lock_exit();
 	kpreempt_enable();
@@ -1357,7 +1357,7 @@ pmap_kenter_pa(vaddr_t va, paddr_t pa, v
 	 * don't.  Instead let the next reference to the page do it.
 	 */
 	pmap_md_tlb_miss_lock_enter();
-	*ptep = npte;
+	pte_set(ptep, npte);
 	pmap_tlb_update_addr(pmap_kernel(), va, npte, 0);
 	pmap_md_tlb_miss_lock_exit();
 	kpreempt_enable();
@@ -1407,7 +1407,7 @@ pmap_pte_kremove(pmap_t pmap, vaddr_t sv
 #endif
 
 		pmap_md_tlb_miss_lock_enter();
-		*ptep = new_pte;
+		pte_set(ptep, new_pte);
 		pmap_tlb_invalidate_addr(pmap, sva);
 		pmap_md_tlb_miss_lock_exit();
 	}
@@ -1500,7 +1500,7 @@ pmap_unwire(pmap_t pmap, vaddr_t va)
 
 	if (pte_wired_p(pte)) {
 		pmap_md_tlb_miss_lock_enter();
-		*ptep = pte_unwire_entry(pte);
+		pte_set(ptep, pte_unwire_entry(pte));
 		pmap_md_tlb_miss_lock_exit();
 		pmap->pm_stats.wired_count--;
 	}
@@ -1667,7 +1667,7 @@ pmap_clear_modify(struct vm_page *pg)
 		KASSERT(pte_valid_p(pte));
 		const uintptr_t gen = VM_PAGEMD_PVLIST_UNLOCK(mdpg);
 		pmap_md_tlb_miss_lock_enter();
-		*ptep = pte;
+		pte_set(ptep, pte);
 		pmap_tlb_invalidate_addr(pmap, va);
 		pmap_md_tlb_miss_lock_exit();
 		pmap_update(pmap);



CVS commit: src/sys/uvm/pmap

2017-06-23 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Jun 24 05:49:50 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.h

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/uvm/pmap/pmap.h

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.h
diff -u src/sys/uvm/pmap/pmap.h:1.8 src/sys/uvm/pmap/pmap.h:1.9
--- src/sys/uvm/pmap/pmap.h:1.8	Sat Jun 24 05:31:03 2017
+++ src/sys/uvm/pmap/pmap.h	Sat Jun 24 05:49:50 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.8 2017/06/24 05:31:03 skrll Exp $	*/
+/*	$NetBSD: pmap.h,v 1.9 2017/06/24 05:49:50 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -154,7 +154,7 @@ struct pmap_limits {
 
 /*
  * Initialize the kernel pmap.
- */  
+ */
 #ifdef MULTIPROCESSOR
 #define PMAP_SIZE	offsetof(struct pmap, pm_pai[PMAP_TLB_MAX])
 #else   



CVS commit: src/sys/uvm/pmap

2017-06-23 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Jun 24 05:39:53 UTC 2017

Modified Files:
src/sys/uvm/pmap: vmpagemd.h

Log Message:
Use __BIT(0) for PV_KENTER.  NFC.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/uvm/pmap/vmpagemd.h

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/vmpagemd.h
diff -u src/sys/uvm/pmap/vmpagemd.h:1.6 src/sys/uvm/pmap/vmpagemd.h:1.7
--- src/sys/uvm/pmap/vmpagemd.h:1.6	Sat Jun 24 05:34:37 2017
+++ src/sys/uvm/pmap/vmpagemd.h	Sat Jun 24 05:39:53 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vmpagemd.h,v 1.6 2017/06/24 05:34:37 skrll Exp $	*/
+/*	$NetBSD: vmpagemd.h,v 1.7 2017/06/24 05:39:53 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@ typedef struct pv_entry {
 	struct pv_entry *pv_next;
 	struct pmap *pv_pmap;
 	vaddr_t pv_va;
-#define	PV_KENTER		0x0001
+#define	PV_KENTER		__BIT(0)
 } *pv_entry_t;
 
 #ifndef _MODULE



CVS commit: src/sys/uvm/pmap

2017-06-23 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Jun 24 05:34:37 UTC 2017

Modified Files:
src/sys/uvm/pmap: vmpagemd.h

Log Message:
Whitespace - comment alignment.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/uvm/pmap/vmpagemd.h

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/vmpagemd.h
diff -u src/sys/uvm/pmap/vmpagemd.h:1.5 src/sys/uvm/pmap/vmpagemd.h:1.6
--- src/sys/uvm/pmap/vmpagemd.h:1.5	Sat Jun 24 05:31:03 2017
+++ src/sys/uvm/pmap/vmpagemd.h	Sat Jun 24 05:34:37 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vmpagemd.h,v 1.5 2017/06/24 05:31:03 skrll Exp $	*/
+/*	$NetBSD: vmpagemd.h,v 1.6 2017/06/24 05:34:37 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -86,9 +86,9 @@ typedef struct pv_entry {
 
 struct vm_page_md {
 	volatile unsigned long mdpg_attrs;	/* page attributes */
-	struct pv_entry mdpg_first;	/* pv_entry first */
+	struct pv_entry mdpg_first;		/* pv_entry first */
 #if defined(MULTIPROCESSOR) || defined(MODULAR) || defined(_MODULE)
-	kmutex_t *mdpg_lock;		/* pv list lock */
+	kmutex_t *mdpg_lock;			/* pv list lock */
 #endif
 };
 



CVS commit: src/sys/uvm/pmap

2017-06-23 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Jun 24 05:31:03 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.h pmap_pvt.h pmap_tlb.h tlb.h vmpagemd.h

Log Message:
Multiple inclusion protection define consistency


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/uvm/pmap/pmap.h
cvs rdiff -u -r1.1 -r1.2 src/sys/uvm/pmap/pmap_pvt.h
cvs rdiff -u -r1.10 -r1.11 src/sys/uvm/pmap/pmap_tlb.h
cvs rdiff -u -r1.3 -r1.4 src/sys/uvm/pmap/tlb.h
cvs rdiff -u -r1.4 -r1.5 src/sys/uvm/pmap/vmpagemd.h

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.h
diff -u src/sys/uvm/pmap/pmap.h:1.7 src/sys/uvm/pmap/pmap.h:1.8
--- src/sys/uvm/pmap/pmap.h:1.7	Mon Jul 11 16:06:09 2016
+++ src/sys/uvm/pmap/pmap.h	Sat Jun 24 05:31:03 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.7 2016/07/11 16:06:09 matt Exp $	*/
+/*	$NetBSD: pmap.h,v 1.8 2017/06/24 05:31:03 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -71,8 +71,8 @@
  *	@(#)pmap.h	8.1 (Berkeley) 6/10/93
  */
 
-#ifndef	_COMMON_PMAP_H_
-#define	_COMMON_PMAP_H_
+#ifndef	_UVM_PMAP_PMAP_H_
+#define	_UVM_PMAP_PMAP_H_
 
 #include 
 #ifdef UVMHIST
@@ -218,4 +218,4 @@ struct evcnt pmap_evcnt_##name = \
 EVCNT_ATTACH_STATIC(pmap_evcnt_##name)
 
 #endif	/* _KERNEL */
-#endif	/* _COMMON_PMAP_H_ */
+#endif	/* _UVM_PMAP_PMAP_H_ */

Index: src/sys/uvm/pmap/pmap_pvt.h
diff -u src/sys/uvm/pmap/pmap_pvt.h:1.1 src/sys/uvm/pmap/pmap_pvt.h:1.2
--- src/sys/uvm/pmap/pmap_pvt.h:1.1	Wed Nov 11 08:20:22 2015
+++ src/sys/uvm/pmap/pmap_pvt.h	Sat Jun 24 05:31:03 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_pvt.h,v 1.1 2015/11/11 08:20:22 skrll Exp $	*/
+/*	$NetBSD: pmap_pvt.h,v 1.2 2017/06/24 05:31:03 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,8 +30,8 @@
  */
 
 
-#ifndef _COMMON_PMAP_PV_H_
-#define _COMMON_PMAP_PV_H_
+#ifndef	_UVM_PMAP_PMAP_PVT_H_
+#define	_UVM_PMAP_PMAP_PVT_H_
 
 #include 
 
@@ -44,4 +44,4 @@ void pmap_pv_untrack(paddr_t, psize_t);
 
 struct pmap_page *pmap_pv_tracked(paddr_t);
 
-#endif  /* _COMMON_PMAP_PV_H_ */
+#endif	/* _UVM_PMAP_PMAP_PVT_H_ */

Index: src/sys/uvm/pmap/pmap_tlb.h
diff -u src/sys/uvm/pmap/pmap_tlb.h:1.10 src/sys/uvm/pmap/pmap_tlb.h:1.11
--- src/sys/uvm/pmap/pmap_tlb.h:1.10	Fri May 26 06:41:42 2017
+++ src/sys/uvm/pmap/pmap_tlb.h	Sat Jun 24 05:31:03 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.h,v 1.10 2017/05/26 06:41:42 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.h,v 1.11 2017/06/24 05:31:03 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -71,8 +71,8 @@
  *	@(#)pmap.h	8.1 (Berkeley) 6/10/93
  */
 
-#ifndef	_COMMON_PMAP_TLB_H_
-#define	_COMMON_PMAP_TLB_H_
+#ifndef	_UVM_PMAP_PMAP_TLB_H_
+#define	_UVM_PMAP_PMAP_TLB_H_
 
 #include 
 #include 
@@ -179,4 +179,4 @@ void	pmap_tlb_check(pmap_t, bool (*)(voi
 void	pmap_tlb_asid_check(void);
 
 #endif	/* _KERNEL */
-#endif	/* _COMMON_PMAP_TLB_H_ */
+#endif	/* _UVM_PMAP_PMAP_TLB_H_ */

Index: src/sys/uvm/pmap/tlb.h
diff -u src/sys/uvm/pmap/tlb.h:1.3 src/sys/uvm/pmap/tlb.h:1.4
--- src/sys/uvm/pmap/tlb.h:1.3	Mon Jul 11 16:06:09 2016
+++ src/sys/uvm/pmap/tlb.h	Sat Jun 24 05:31:03 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: tlb.h,v 1.3 2016/07/11 16:06:09 matt Exp $	*/
+/*	$NetBSD: tlb.h,v 1.4 2017/06/24 05:31:03 skrll Exp $	*/
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -27,8 +27,8 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  */
-#ifndef _UVM_PMAP_PMAP_TLB_TLB_H_
-#define	_UVM_PMAP_PMAP_TLB_TLB_H_
+#ifndef	_UVM_PMAP_TLB_H_
+#define	_UVM_PMAP_TLB_H_
 
 #if defined(_KERNEL) || defined(_KMEMUSER)
 
@@ -69,4 +69,4 @@ void	tlb_dump(void (*)(const char *, ...
 
 #endif /* _KERNEL || _KMEMUSER */
 
-#endif /* !_UVM_PMAP_PMAP_TLB_TLB_H_ */
+#endif /* _UVM_PMAP_TLB_H_ */

Index: src/sys/uvm/pmap/vmpagemd.h
diff -u src/sys/uvm/pmap/vmpagemd.h:1.4 src/sys/uvm/pmap/vmpagemd.h:1.5
--- src/sys/uvm/pmap/vmpagemd.h:1.4	Wed Jun  7 07:06:26 2017
+++ src/sys/uvm/pmap/vmpagemd.h	Sat Jun 24 05:31:03 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vmpagemd.h,v 1.4 2017/06/07 07:06:26 skrll Exp $	*/
+/*	$NetBSD: vmpagemd.h,v 1.5 2017/06/24 05:31:03 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -35,8 +35,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef _COMMON_PMAP_TLB_VMPAGEMD_H_
-#define _COMMON_PMAP_TLB_VMPAGEMD_H_
+#ifndef _UVM_PMAP_VMPAGEMD_H_
+#define _UVM_PMAP_VMPAGEMD_H_
 
 #ifdef _LOCORE
 #error use assym.h instead
@@ -158,4 +158,4 @@ do {	\
 
 #endif /* _MODULE */
 
-#endif /* __COMMON_PMAP_TLB_VMPAGEMD_H_ */
+#endif /* _UVM_PMAP_VMPAGEMD_H_ */



CVS commit: src/sys/uvm/pmap

2017-06-07 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Jun  7 07:06:26 UTC 2017

Modified Files:
src/sys/uvm/pmap: vmpagemd.h

Log Message:
Use __BIT().  No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/uvm/pmap/vmpagemd.h

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/vmpagemd.h
diff -u src/sys/uvm/pmap/vmpagemd.h:1.3 src/sys/uvm/pmap/vmpagemd.h:1.4
--- src/sys/uvm/pmap/vmpagemd.h:1.3	Mon Jul 11 16:06:09 2016
+++ src/sys/uvm/pmap/vmpagemd.h	Wed Jun  7 07:06:26 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vmpagemd.h,v 1.3 2016/07/11 16:06:09 matt Exp $	*/
+/*	$NetBSD: vmpagemd.h,v 1.4 2017/06/07 07:06:26 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -65,12 +65,12 @@ typedef struct pv_entry {
 
 #ifndef _MODULE
 
-#define	VM_PAGEMD_REFERENCED	0x0001	/* page has been recently referenced */
-#define	VM_PAGEMD_MODIFIED	0x0002	/* page has been modified */
-#define	VM_PAGEMD_POOLPAGE	0x0004	/* page is used as a poolpage */
-#define	VM_PAGEMD_EXECPAGE	0x0008	/* page is exec mapped */
+#define	VM_PAGEMD_REFERENCED	__BIT(0)	/* page has been referenced */
+#define	VM_PAGEMD_MODIFIED	__BIT(1)	/* page has been modified */
+#define	VM_PAGEMD_POOLPAGE	__BIT(2)	/* page is used as a poolpage */
+#define	VM_PAGEMD_EXECPAGE	__BIT(3)	/* page is exec mapped */
 #ifdef PMAP_VIRTUAL_CACHE_ALIASES
-#define	VM_PAGEMD_UNCACHED	0x0010	/* page is mapped uncached */
+#define	VM_PAGEMD_UNCACHED	__BIT(4)	/* page is mapped uncached */
 #endif
 
 #ifdef PMAP_VIRTUAL_CACHE_ALIASES



CVS commit: src/sys/uvm/pmap

2017-05-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri May 26 06:41:42 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap_tlb.h

Log Message:
Whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/uvm/pmap/pmap_tlb.h

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_tlb.h
diff -u src/sys/uvm/pmap/pmap_tlb.h:1.9 src/sys/uvm/pmap/pmap_tlb.h:1.10
--- src/sys/uvm/pmap/pmap_tlb.h:1.9	Mon Jul 11 16:06:09 2016
+++ src/sys/uvm/pmap/pmap_tlb.h	Fri May 26 06:41:42 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.h,v 1.9 2016/07/11 16:06:09 matt Exp $	*/
+/*	$NetBSD: pmap_tlb.h,v 1.10 2017/05/26 06:41:42 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -115,7 +115,7 @@ struct pmap_tlb_info {
 #define	tlbinfo_noasids_p(ti)	((ti)->ti_asids_free == 0)
 	kmutex_t *ti_lock;
 	u_int ti_wired;			/* # of wired TLB entries */
-	tlb_asid_t ti_asid_hint;		/* probable next ASID to use */
+	tlb_asid_t ti_asid_hint;	/* probable next ASID to use */
 	tlb_asid_t ti_asid_max;
 	LIST_HEAD(, pmap_asid_info) ti_pais; /* list of active ASIDs */
 #ifdef MULTIPROCESSOR



CVS commit: src/sys/uvm/pmap

2017-05-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri May 26 06:40:47 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Remove incorrect __diagused


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.20 src/sys/uvm/pmap/pmap_tlb.c:1.21
--- src/sys/uvm/pmap/pmap_tlb.c:1.20	Fri May 26 06:38:56 2017
+++ src/sys/uvm/pmap/pmap_tlb.c	Fri May 26 06:40:47 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.20 2017/05/26 06:38:56 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.21 2017/05/26 06:40:47 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.20 2017/05/26 06:38:56 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.21 2017/05/26 06:40:47 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -826,7 +826,7 @@ pmap_tlb_asid_alloc(struct pmap_tlb_info
 	 * a new one.
 	 */
 	if (__predict_true(TLBINFO_ASID_INUSE_P(ti, ti->ti_asid_hint))) {
-		const size_t nbpw __diagused = 8*sizeof(ti->ti_asid_bitmap[0]);
+		const size_t nbpw = 8 * sizeof(ti->ti_asid_bitmap[0]);
 		size_t i;
 		u_long bits;
 		for (i = 0; (bits = ~ti->ti_asid_bitmap[i]) == 0; i++) {



CVS commit: src/sys/uvm/pmap

2017-05-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri May 26 06:38:56 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Use the define name PMAP_HWPAGEWALKER and not PMAP_TLB_HWPAGEWALKER


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.19 src/sys/uvm/pmap/pmap_tlb.c:1.20
--- src/sys/uvm/pmap/pmap_tlb.c:1.19	Sun Oct  9 14:51:50 2016
+++ src/sys/uvm/pmap/pmap_tlb.c	Fri May 26 06:38:56 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.19 2016/10/09 14:51:50 christos Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.20 2017/05/26 06:38:56 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.19 2016/10/09 14:51:50 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.20 2017/05/26 06:38:56 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -721,7 +721,7 @@ pmap_tlb_shootdown_bystanders(pmap_t pm)
 }
 #endif /* MULTIPROCESSOR && PMAP_TLB_NEED_SHOOTDOWN */
 
-#ifndef PMAP_TLB_HWPAGEWALKER
+#ifndef PMAP_HWPAGEWALKER
 int
 pmap_tlb_update_addr(pmap_t pm, vaddr_t va, pt_entry_t pte, u_int flags)
 {
@@ -762,7 +762,7 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t 
 
 	return rv;
 }
-#endif /* !PMAP_TLB_HWPAGEWALKER */
+#endif /* !PMAP_HWPAGEWALKER */
 
 void
 pmap_tlb_invalidate_addr(pmap_t pm, vaddr_t va)



CVS commit: src/sys/uvm/pmap

2017-05-12 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri May 12 12:18:37 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
KASSERT -> KASSERTMSG


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.5 src/sys/uvm/pmap/pmap_segtab.c:1.6
--- src/sys/uvm/pmap/pmap_segtab.c:1.5	Fri May 12 12:18:07 2017
+++ src/sys/uvm/pmap/pmap_segtab.c	Fri May 12 12:18:37 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.5 2017/05/12 12:18:07 skrll Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.6 2017/05/12 12:18:37 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.5 2017/05/12 12:18:07 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.6 2017/05/12 12:18:37 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -168,7 +168,8 @@ static inline pt_entry_t *
 pmap_segmap(struct pmap *pmap, vaddr_t va)
 {
 	pmap_segtab_t *stp = pmap->pm_segtab;
-	KASSERT(pmap != pmap_kernel() || !pmap_md_direct_mapped_vaddr_p(va));
+	KASSERTMSG(pmap != pmap_kernel() || !pmap_md_direct_mapped_vaddr_p(va),
+	"pmap %p va %#" PRIxVADDR, pmap, va);
 #ifdef _LP64
 	stp = stp->seg_seg[(va >> XSEGSHIFT) & (NSEGPG - 1)];
 	if (stp == NULL)



CVS commit: src/sys/uvm/pmap

2017-05-12 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri May 12 12:18:07 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.4 src/sys/uvm/pmap/pmap_segtab.c:1.5
--- src/sys/uvm/pmap/pmap_segtab.c:1.4	Wed Nov 23 03:30:53 2016
+++ src/sys/uvm/pmap/pmap_segtab.c	Fri May 12 12:18:07 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.4 2016/11/23 03:30:53 mrg Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.5 2017/05/12 12:18:07 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.4 2016/11/23 03:30:53 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.5 2017/05/12 12:18:07 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -256,7 +256,7 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 	}
 
 	if (free_stp) {
-		pmap_check_stp(stp, __func__, 
+		pmap_check_stp(stp, __func__,
 			   vinc == NBSEG ? "release seg" : "release xseg");
 		pmap_segtab_free(stp);
 		*stp_p = NULL;



CVS commit: src/sys/uvm/pmap

2017-05-11 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri May 12 05:45:59 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Sprinkle some KASSERTs


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 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.33 src/sys/uvm/pmap/pmap.c:1.34
--- src/sys/uvm/pmap/pmap.c:1.33	Sun May  7 04:15:50 2017
+++ src/sys/uvm/pmap/pmap.c	Fri May 12 05:45:58 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.33 2017/05/07 04:15:50 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.34 2017/05/12 05:45:58 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.33 2017/05/07 04:15:50 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.34 2017/05/12 05:45:58 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1738,6 +1738,8 @@ pmap_pvlist_check(struct vm_page_md *mdp
 		|| VM_PAGEMD_UNCACHED_P(mdpg), "colors=%#x uncached=%u",
 		colors, VM_PAGEMD_UNCACHED_P(mdpg));
 #endif
+	} else {
+		KASSERT(pv->pv_next == NULL);
 	}
 #endif /* DEBUG */
 }
@@ -2102,6 +2104,7 @@ pmap_pv_page_free(struct pool *pp, void 
 	kpreempt_enable();
 #endif
 	pmap_page_clear_attributes(VM_PAGE_TO_MD(pg), VM_PAGEMD_POOLPAGE);
+	KASSERT(!VM_PAGEMD_EXECPAGE_P(VM_PAGE_TO_MD(pg)));
 	uvm_pagefree(pg);
 }
 
@@ -2139,7 +2142,10 @@ pmap_map_poolpage(paddr_t pa)
 {
 	struct vm_page * const pg = PHYS_TO_VM_PAGE(pa);
 	KASSERT(pg);
+
 	struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
+	KASSERT(!VM_PAGEMD_EXECPAGE_P(mdpg));
+
 	pmap_page_set_attributes(mdpg, VM_PAGEMD_POOLPAGE);
 
 	return pmap_md_map_poolpage(pa, NBPG);
@@ -2153,6 +2159,8 @@ pmap_unmap_poolpage(vaddr_t va)
 
 	struct vm_page * const pg = PHYS_TO_VM_PAGE(pa);
 	KASSERT(pg != NULL);
+	KASSERT(!VM_PAGEMD_EXECPAGE_P(VM_PAGE_TO_MD(pg)));
+
 	pmap_page_clear_attributes(VM_PAGE_TO_MD(pg), VM_PAGEMD_POOLPAGE);
 	pmap_md_unmap_poolpage(va, NBPG);
 



CVS commit: src/sys/uvm/pmap

2017-05-06 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun May  7 04:15:50 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Fix a comment


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 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.32 src/sys/uvm/pmap/pmap.c:1.33
--- src/sys/uvm/pmap/pmap.c:1.32	Fri Apr 28 17:04:33 2017
+++ src/sys/uvm/pmap/pmap.c	Sun May  7 04:15:50 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.32 2017/04/28 17:04:33 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.33 2017/05/07 04:15:50 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.32 2017/04/28 17:04:33 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.33 2017/05/07 04:15:50 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -973,7 +973,8 @@ pmap_page_protect(struct vm_page *pg, vm
 		VM_PAGEMD_PVLIST_READLOCK(mdpg);
 		pmap_pvlist_check(mdpg);
 		/*
-		 * Loop over all current mappings setting/clearing as apropos.
+		 * Loop over all current mappings setting/clearing as
+		 * appropriate.
 		 */
 		if (pv->pv_pmap != NULL) {
 			while (pv != NULL) {



CVS commit: src/sys/uvm/pmap

2017-04-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Apr 28 17:04:33 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Remove unused LNAME macro


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 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.31 src/sys/uvm/pmap/pmap.c:1.32
--- src/sys/uvm/pmap/pmap.c:1.31	Fri Apr 28 10:12:35 2017
+++ src/sys/uvm/pmap/pmap.c	Fri Apr 28 17:04:33 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.31 2017/04/28 10:12:35 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.32 2017/04/28 17:04:33 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.31 2017/04/28 10:12:35 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.32 2017/04/28 17:04:33 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -664,8 +664,6 @@ void
 pmap_activate(struct lwp *l)
 {
 	pmap_t pmap = l->l_proc->p_vmspace->vm_map.pmap;
-#define LNAME(l) \
-	((l)->l_name ? (l)->l_name : (l)->l_proc->p_comm)
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
 	UVMHIST_LOG(pmaphist, "(l=%p pmap=%p)", l, pmap, 0, 0);



CVS commit: src/sys/uvm/pmap

2017-04-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Apr 28 10:12:35 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Fix a UVMHIST_LOG after the "%s" removal


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 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.30 src/sys/uvm/pmap/pmap.c:1.31
--- src/sys/uvm/pmap/pmap.c:1.30	Sat Apr 22 20:20:19 2017
+++ src/sys/uvm/pmap/pmap.c	Fri Apr 28 10:12:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.30 2017/04/22 20:20:19 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.31 2017/04/28 10:12:35 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.30 2017/04/22 20:20:19 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.31 2017/04/28 10:12:35 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1297,7 +1297,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 		} else {
 			UVMHIST_LOG(*histp,
 			"va=%#"PRIxVADDR" pg %p: no syncicache cached %d",
-			va, pg, "no", pte_cached_p(npte));
+			va, pg, pte_cached_p(npte), 0);
 		}
 	} else if (pg != NULL && (prot & VM_PROT_EXECUTE)) {
 		KASSERT(mdpg != NULL);



CVS commit: src/sys/uvm/pmap

2017-04-22 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Apr 22 20:20:19 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Improve a comment


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 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.29 src/sys/uvm/pmap/pmap.c:1.30
--- src/sys/uvm/pmap/pmap.c:1.29	Sat Apr 22 20:19:53 2017
+++ src/sys/uvm/pmap/pmap.c	Sat Apr 22 20:20:19 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.29 2017/04/22 20:19:53 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.30 2017/04/22 20:20:19 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.29 2017/04/22 20:19:53 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.30 2017/04/22 20:20:19 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1732,8 +1732,8 @@ pmap_pvlist_check(struct vm_page_md *mdp
 #endif
 		}
 #ifdef PMAP_VIRTUAL_CACHE_ALIASES
-		// Assert there if there more than 1 color mapped, that they
-		// are uncached.
+		// Assert that if there is more than 1 color mapped, that the
+		// page is uncached.
 		KASSERTMSG(!pmap_md_virtual_cache_aliasing_p()
 		|| colors == 0 || (colors & (colors-1)) == 0
 		|| VM_PAGEMD_UNCACHED_P(mdpg), "colors=%#x uncached=%u",



CVS commit: src/sys/uvm/pmap

2017-04-22 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Apr 22 20:19:53 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 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.28 src/sys/uvm/pmap/pmap.c:1.29
--- src/sys/uvm/pmap/pmap.c:1.28	Thu Mar  2 20:11:19 2017
+++ src/sys/uvm/pmap/pmap.c	Sat Apr 22 20:19:53 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.28 2017/03/02 20:11:19 mrg Exp $	*/
+/*	$NetBSD: pmap.c,v 1.29 2017/04/22 20:19:53 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.28 2017/03/02 20:11:19 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.29 2017/04/22 20:19:53 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -502,7 +502,7 @@ pmap_steal_memory(vsize_t size, vaddr_t 
 
 	if (uvm_physseg_valid_p(maybe_bank)) {
 		const uvm_physseg_t bank = maybe_bank;
-		
+
 		/*
 		 * There are enough pages here; steal them!
 		 */



CVS commit: src/sys/uvm/pmap

2017-03-02 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Thu Mar  2 20:11:19 UTC 2017

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
avoid using %s in UVMHIST.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 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.27 src/sys/uvm/pmap/pmap.c:1.28
--- src/sys/uvm/pmap/pmap.c:1.27	Fri Dec 23 09:16:46 2016
+++ src/sys/uvm/pmap/pmap.c	Thu Mar  2 20:11:19 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.27 2016/12/23 09:16:46 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.28 2017/03/02 20:11:19 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.27 2016/12/23 09:16:46 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.28 2017/03/02 20:11:19 mrg Exp $");
 
 /*
  *	Manages physical address maps.
@@ -668,7 +668,7 @@ pmap_activate(struct lwp *l)
 	((l)->l_name ? (l)->l_name : (l)->l_proc->p_comm)
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(l=%p pmap=%p (%s))", l, pmap, LNAME(l), 0);
+	UVMHIST_LOG(pmaphist, "(l=%p pmap=%p)", l, pmap, 0, 0);
 	PMAP_COUNT(activate);
 
 	kpreempt_disable();
@@ -680,7 +680,8 @@ pmap_activate(struct lwp *l)
 	pmap_md_tlb_miss_lock_exit();
 	kpreempt_enable();
 
-	UVMHIST_LOG(pmaphist, " <-- done (%u:%u)", l->l_proc->p_pid, l->l_lid, 0, 0);
+	UVMHIST_LOG(pmaphist, " <-- done (%u:%u)", l->l_proc->p_pid, l->l_lid,
+		0, 0);
 }
 
 /*
@@ -698,8 +699,9 @@ pmap_page_remove(struct vm_page *pg)
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
 
-	UVMHIST_LOG(pmapexechist, "pg %p (pa %#"PRIxPADDR")%s: %s",
-	pg, VM_PAGE_TO_PHYS(pg), " [page removed]", "execpage cleared");
+	UVMHIST_LOG(pmapexechist, "pg %p (pa %#"PRIxPADDR") [page removed]: "
+  "execpage cleared", pg, VM_PAGE_TO_PHYS(pg),
+  0, 0);
 #ifdef PMAP_VIRTUAL_CACHE_ALIASES
 	pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE|VM_PAGEMD_UNCACHED);
 #else
@@ -811,7 +813,7 @@ pmap_deactivate(struct lwp *l)
 	pmap_t pmap = l->l_proc->p_vmspace->vm_map.pmap;
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(l=%p pmap=%p (%s))", l, pmap, LNAME(l), 0);
+	UVMHIST_LOG(pmaphist, "(l=%p pmap=%p)", l, pmap, 0, 0);
 	PMAP_COUNT(deactivate);
 
 	kpreempt_disable();
@@ -825,7 +827,8 @@ pmap_deactivate(struct lwp *l)
 	pmap_md_tlb_miss_lock_exit();
 	kpreempt_enable();
 
-	UVMHIST_LOG(pmaphist, " <-- done (%u:%u)", l->l_proc->p_pid, l->l_lid, 0, 0);
+	UVMHIST_LOG(pmaphist, " <-- done (%u:%u)", l->l_proc->p_pid, l->l_lid,
+		0, 0);
 }
 
 void
@@ -858,8 +861,8 @@ pmap_update(struct pmap *pmap)
 	pmap_md_tlb_miss_lock_exit();
 	kpreempt_enable();
 
-	UVMHIST_LOG(pmaphist, " <-- done%s",
-	(pmap == pmap_kernel()) ? " (kernel)" : "", 0, 0, 0);
+	UVMHIST_LOG(pmaphist, " <-- done (%c)",
+		(pmap == pmap_kernel() ? 'k' : 'u'), 0, 0, 0);
 }
 
 /*
@@ -877,8 +880,8 @@ pmap_pte_remove(pmap_t pmap, vaddr_t sva
 	const bool is_kernel_pmap_p = (pmap == pmap_kernel());
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pmap=%p %sva=%#"PRIxVADDR"..%#"PRIxVADDR,
-	pmap, (is_kernel_pmap_p ? "(kernel) " : ""), sva, eva);
+	UVMHIST_LOG(pmaphist, "(pmap=%p %cva=%#"PRIxVADDR"..%#"PRIxVADDR,
+	pmap, (is_kernel_pmap_p ? 'k' : 'u'), sva, eva);
 	UVMHIST_LOG(pmaphist, "ptep=%p, flags(npte)=%#"PRIxPTR")",
 	ptep, flags, 0, 0);
 
@@ -1017,8 +1020,8 @@ pmap_pte_protect(pmap_t pmap, vaddr_t sv
 	const vm_prot_t prot = (flags & VM_PROT_ALL);
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pmap=%p %sva=%#"PRIxVADDR"..%#"PRIxVADDR,
-	pmap, (pmap == pmap_kernel() ? "(kernel) " : ""), sva, eva);
+	UVMHIST_LOG(pmaphist, "(pmap=%p %cva=%#"PRIxVADDR"..%#"PRIxVADDR")",
+	pmap, (pmap == pmap_kernel() ? 'k' : 'u'), sva, eva);
 	UVMHIST_LOG(pmaphist, "ptep=%p, flags(npte)=%#"PRIxPTR")",
 	ptep, flags, 0, 0);
 
@@ -1039,9 +1042,9 @@ pmap_pte_protect(pmap_t pmap, vaddr_t sv
 if (VM_PAGEMD_CACHED_P(mdpg)) {
 #endif
 	UVMHIST_LOG(pmapexechist,
-	"pg %p (pa %#"PRIxPADDR"): %s",
-	pg, VM_PAGE_TO_PHYS(pg),
-	"syncicached performed", 0);
+	"pg %p (pa %#"PRIxPADDR"): "
+	"syncicached performed",
+	pg, VM_PAGE_TO_PHYS(pg), 0, 0);
 	pmap_page_syncicache(pg);
 	PMAP_COUNT(exec_synced_protect);
 #ifdef PMAP_VIRTUAL_CACHE_ALIASES
@@ -1108,8 +,8 @@ pmap_page_cache(struct vm_page *pg, bool
 	struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(pg=%p (pa %#"PRIxPADDR") cached=%s)",
-	pg, VM_PAGE_TO_PHYS(pg), cached ? "true" : "false", 0);
+	UVMHIST_LOG(pmaphist, "(pg=%p (pa %#"PRIxPADDR") cached=%d)",
+	pg, VM_PAGE_TO_PHYS(pg), cached, 0);
 
 	

CVS commit: src/sys/uvm/pmap

2016-12-23 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Dec 23 09:16:46 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
PHYSMEM -> PHYSSEG to fix build


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 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.26 src/sys/uvm/pmap/pmap.c:1.27
--- src/sys/uvm/pmap/pmap.c:1.26	Fri Dec 23 07:15:28 2016
+++ src/sys/uvm/pmap/pmap.c	Fri Dec 23 09:16:46 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.26 2016/12/23 07:15:28 cherry Exp $	*/
+/*	$NetBSD: pmap.c,v 1.27 2016/12/23 09:16:46 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.26 2016/12/23 07:15:28 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.27 2016/12/23 09:16:46 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -454,7 +454,7 @@ pmap_steal_memory(vsize_t size, vaddr_t 
 	paddr_t pa;
 	vaddr_t va;
 
-	uvm_physseg_t maybe_bank = UVM_PHYSMEM_TYPE_INVALID;
+	uvm_physseg_t maybe_bank = UVM_PHYSSEG_TYPE_INVALID;
 
 	size = round_page(size);
 	npgs = atop(size);
@@ -468,19 +468,19 @@ pmap_steal_memory(vsize_t size, vaddr_t 
 		if (uvm.page_init_done == true)
 			panic("pmap_steal_memory: called _after_ bootstrap");
 
-		aprint_debug("%s: seg %"PRIxPHYSMEM": %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR"\n",
+		aprint_debug("%s: seg %"PRIxPHYSSEG": %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR"\n",
 		__func__, bank,
 		uvm_physseg_get_avail_start(bank), uvm_physseg_get_start(bank),
 		uvm_physseg_get_avail_end(bank), uvm_physseg_get_end(bank));
 
 		if (uvm_physseg_get_avail_start(bank) != uvm_physseg_get_start(bank)
 		|| uvm_physseg_get_avail_start(bank) >= uvm_physseg_get_avail_end(bank)) {
-			aprint_debug("%s: seg %"PRIxPHYSMEM": bad start\n", __func__, bank);
+			aprint_debug("%s: seg %"PRIxPHYSSEG": bad start\n", __func__, bank);
 			continue;
 		}
 
 		if (uvm_physseg_get_avail_end(bank) - uvm_physseg_get_avail_start(bank) < npgs) {
-			aprint_debug("%s: seg %"PRIxPHYSMEM": too small for %zu pages\n",
+			aprint_debug("%s: seg %"PRIxPHYSSEG": too small for %zu pages\n",
 			__func__, bank, npgs);
 			continue;
 		}
@@ -502,14 +502,14 @@ pmap_steal_memory(vsize_t size, vaddr_t 
 
 	if (uvm_physseg_valid_p(maybe_bank)) {
 		const uvm_physseg_t bank = maybe_bank;
-
+		
 		/*
 		 * There are enough pages here; steal them!
 		 */
 		pa = ptoa(uvm_physseg_get_start(bank));
 		uvm_physseg_unplug(atop(pa), npgs);
 
-		aprint_debug("%s: seg %"PRIxPHYSMEM": %zu pages stolen (%#"PRIxPADDR" left)\n",
+		aprint_debug("%s: seg %"PRIxPHYSSEG": %zu pages stolen (%#"PRIxPADDR" left)\n",
 		__func__, bank, npgs, VM_PHYSMEM_SPACE(bank));
 
 		va = pmap_md_map_poolpage(pa, size);



CVS commit: src/sys/uvm/pmap

2016-11-30 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Thu Dec  1 02:15:08 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
extend the pmap_activate/pmap_deactivate UVMHIST logs to include the
pid, lid, and either l_name or p_comm.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 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.24 src/sys/uvm/pmap/pmap.c:1.25
--- src/sys/uvm/pmap/pmap.c:1.24	Wed Oct  5 20:50:00 2016
+++ src/sys/uvm/pmap/pmap.c	Thu Dec  1 02:15:08 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.24 2016/10/05 20:50:00 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.25 2016/12/01 02:15:08 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.24 2016/10/05 20:50:00 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.25 2016/12/01 02:15:08 mrg Exp $");
 
 /*
  *	Manages physical address maps.
@@ -681,9 +681,11 @@ void
 pmap_activate(struct lwp *l)
 {
 	pmap_t pmap = l->l_proc->p_vmspace->vm_map.pmap;
+#define LNAME(l) \
+	((l)->l_name ? (l)->l_name : (l)->l_proc->p_comm)
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(l=%p (pmap=%p))", l, pmap, 0, 0);
+	UVMHIST_LOG(pmaphist, "(l=%p pmap=%p (%s))", l, pmap, LNAME(l), 0);
 	PMAP_COUNT(activate);
 
 	kpreempt_disable();
@@ -695,7 +697,7 @@ pmap_activate(struct lwp *l)
 	pmap_md_tlb_miss_lock_exit();
 	kpreempt_enable();
 
-	UVMHIST_LOG(pmaphist, " <-- done", 0, 0, 0, 0);
+	UVMHIST_LOG(pmaphist, " <-- done (%u:%u)", l->l_proc->p_pid, l->l_lid, 0, 0);
 }
 
 /*
@@ -826,7 +828,7 @@ pmap_deactivate(struct lwp *l)
 	pmap_t pmap = l->l_proc->p_vmspace->vm_map.pmap;
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
-	UVMHIST_LOG(pmaphist, "(l=%p (pmap=%p))", l, pmap, 0, 0);
+	UVMHIST_LOG(pmaphist, "(l=%p pmap=%p (%s))", l, pmap, LNAME(l), 0);
 	PMAP_COUNT(deactivate);
 
 	kpreempt_disable();
@@ -840,7 +842,7 @@ pmap_deactivate(struct lwp *l)
 	pmap_md_tlb_miss_lock_exit();
 	kpreempt_enable();
 
-	UVMHIST_LOG(pmaphist, " <-- done", 0, 0, 0, 0);
+	UVMHIST_LOG(pmaphist, " <-- done (%u:%u)", l->l_proc->p_pid, l->l_lid, 0, 0);
 }
 
 void



CVS commit: src/sys/uvm/pmap

2016-11-22 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Wed Nov 23 03:30:53 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap_segtab.c

Log Message:
fix the start index generation in pmap_segtab_release() to
ensure it fits in the actual array.  fixes N64 binaries from
triggering later panic.  move the panic check itself into a
common function that is called from a couple of new places too.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/uvm/pmap/pmap_segtab.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_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.3 src/sys/uvm/pmap/pmap_segtab.c:1.4
--- src/sys/uvm/pmap/pmap_segtab.c:1.3	Mon Jul 11 16:06:09 2016
+++ src/sys/uvm/pmap/pmap_segtab.c	Wed Nov 23 03:30:53 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.3 2016/07/11 16:06:09 matt Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.4 2016/11/23 03:30:53 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.3 2016/07/11 16:06:09 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.4 2016/11/23 03:30:53 mrg Exp $");
 
 /*
  *	Manages physical address maps.
@@ -130,6 +130,24 @@ struct pmap_segtab_info {
 
 kmutex_t pmap_segtab_lock __cacheline_aligned;
 
+static void
+pmap_check_stp(pmap_segtab_t *stp, const char *caller, const char *why)
+{
+#ifdef DEBUG
+	for (size_t i = 0; i < PMAP_SEGTABSIZE; i++) {
+		if (stp->seg_tab[i] != 0) {
+#ifdef DEBUG_NOISY
+			for (size_t j = i; j < PMAP_SEGTABSIZE; j++)
+printf("%s: pm_segtab.seg_tab[%zu] = 0x%p\n",
+   caller, j, stp->seg_tab[j]);
+#endif
+			panic("%s: pm_segtab.seg_tab[%zu] != 0 (0x%p): %s",
+			  caller, i, stp->seg_tab[i], why);
+		}
+	}
+#endif
+}
+
 static inline struct vm_page *
 pmap_pte_pagealloc(void)
 {
@@ -190,7 +208,9 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 {
 	pmap_segtab_t *stp = *stp_p;
 
-	for (size_t i = va / vinc; i < PMAP_SEGTABSIZE; i++, va += vinc) {
+	for (size_t i = (va / vinc) & (PMAP_SEGTABSIZE - 1);
+	 i < PMAP_SEGTABSIZE;
+	 i++, va += vinc) {
 #ifdef _LP64
 		if (vinc > NBSEG) {
 			if (stp->seg_seg[i] != NULL) {
@@ -236,6 +256,8 @@ pmap_segtab_release(pmap_t pmap, pmap_se
 	}
 
 	if (free_stp) {
+		pmap_check_stp(stp, __func__, 
+			   vinc == NBSEG ? "release seg" : "release xseg");
 		pmap_segtab_free(stp);
 		*stp_p = NULL;
 	}
@@ -257,6 +279,7 @@ static pmap_segtab_t *
 pmap_segtab_alloc(void)
 {
 	pmap_segtab_t *stp;
+	bool found_on_freelist = false;
 
  again:
 	mutex_spin_enter(_segtab_lock);
@@ -264,6 +287,7 @@ pmap_segtab_alloc(void)
 		pmap_segtab_info.free_segtab = stp->seg_seg[0];
 		stp->seg_seg[0] = NULL;
 		SEGTAB_ADD(nget, 1);
+		found_on_freelist = true;
 	}
 	mutex_spin_exit(_segtab_lock);
 
@@ -300,12 +324,9 @@ pmap_segtab_alloc(void)
 		}
 	}
 
-#ifdef DEBUG
-	for (size_t i = 0; i < PMAP_SEGTABSIZE; i++) {
-		if (stp->seg_tab[i] != 0)
-			panic("%s: pm_segtab.seg_tab[%zu] != 0", __func__, i);
-	}
-#endif
+	pmap_check_stp(stp, __func__,
+		   found_on_freelist ? "from free list" : "allocated");
+
 	return stp;
 }
 
@@ -420,6 +441,7 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va
 #ifdef MULTIPROCESSOR
 			pmap_segtab_t *ostp = atomic_cas_ptr(stp_p, NULL, nstp);
 			if (__predict_false(ostp != NULL)) {
+pmap_check_stp(nstp, __func__, "reserve");
 pmap_segtab_free(nstp);
 nstp = ostp;
 			}



CVS commit: src/sys/uvm/pmap

2016-10-09 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Oct  9 14:51:50 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
PR/51540: Henning Petersen: replace , with ;


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.18 src/sys/uvm/pmap/pmap_tlb.c:1.19
--- src/sys/uvm/pmap/pmap_tlb.c:1.18	Sat Jul 23 16:06:25 2016
+++ src/sys/uvm/pmap/pmap_tlb.c	Sun Oct  9 10:51:50 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.18 2016/07/23 20:06:25 matt Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.19 2016/10/09 14:51:50 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.18 2016/07/23 20:06:25 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.19 2016/10/09 14:51:50 christos Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -338,7 +338,7 @@ pmap_tlb_info_init(struct pmap_tlb_info 
 		ti->ti_asid_hint = KERNEL_PID + 1;
 		ti->ti_asid_max = pmap_tlbs[0]->ti_asid_max;
 		ti->ti_asids_free = ti->ti_asid_max - KERNEL_PID;
-		ti->ti_tlbinvop = TLBINV_NOBODY,
+		ti->ti_tlbinvop = TLBINV_NOBODY;
 		ti->ti_victim = NULL;
 		kcpuset_create(>ti_kcpuset, true);
 		ti->ti_index = pmap_ntlbs++;



CVS commit: src/sys/uvm/pmap

2016-10-05 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Oct  5 20:50:00 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Move some code before pmap_enter_pv in pmap_enter so that when we are
re-mapping a VA to a new PA the old mapping is removed first.  This means
the cache alias code need to do less work and works better with the last
va tracking.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 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.23 src/sys/uvm/pmap/pmap.c:1.24
--- src/sys/uvm/pmap/pmap.c:1.23	Fri Sep 30 12:10:40 2016
+++ src/sys/uvm/pmap/pmap.c	Wed Oct  5 20:50:00 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.23 2016/09/30 12:10:40 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.24 2016/10/05 20:50:00 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.23 2016/09/30 12:10:40 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.24 2016/10/05 20:50:00 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1254,6 +1254,25 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 		return ENOMEM;
 	}
 	const pt_entry_t opte = *ptep;
+	const bool resident = pte_valid_p(opte);
+	bool remap = false;
+	if (resident) {
+		if (pte_to_paddr(opte) != pa) {
+			KASSERT(!is_kernel_pmap_p);
+			const pt_entry_t rpte = pte_nv_entry(false);
+
+			pmap_addr_range_check(pmap, va, va + NBPG, __func__);
+			pmap_pte_process(pmap, va, va + NBPG, pmap_pte_remove,
+			rpte);
+			PMAP_COUNT(user_mappings_changed);
+			remap = true;
+		}
+		update_flags |= PMAP_TLB_NEED_IPI;
+	}
+
+	if (!resident || remap) {
+		pmap->pm_stats.resident_count++;
+	}
 
 	/* Done after case that may sleep/return. */
 	if (pg)
@@ -1273,20 +1292,6 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 	pte_value(npte), pa, 0, 0);
 
 	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;
-	}
-
-	if (!resident || remap) {
-		pmap->pm_stats.resident_count++;
-	}
 
 	pmap_md_tlb_miss_lock_enter();
 	*ptep = npte;



CVS commit: src/sys/uvm/pmap

2016-09-30 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Sep 30 12:10:41 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Increment resident_count if we're remapping onto new PA as
pmap_remove -> pmap_pte_remote will decrement it


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 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.22 src/sys/uvm/pmap/pmap.c:1.23
--- src/sys/uvm/pmap/pmap.c:1.22	Fri Sep 16 17:27:09 2016
+++ src/sys/uvm/pmap/pmap.c	Fri Sep 30 12:10:40 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.22 2016/09/16 17:27:09 matt Exp $	*/
+/*	$NetBSD: pmap.c,v 1.23 2016/09/30 12:10:40 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.22 2016/09/16 17:27:09 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.23 2016/09/30 12:10:40 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1272,16 +1272,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++;
 	}
 



CVS commit: src/sys/uvm/pmap

2016-09-16 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Sep 16 17:27:10 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
When removing a page, make sure to clear its execness regardless of whether
the page is clean or dirty.  This fixes the problem of execpages leaking
into the freepage lists.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 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.21 src/sys/uvm/pmap/pmap.c:1.22
--- src/sys/uvm/pmap/pmap.c:1.21	Sat Aug 20 20:09:47 2016
+++ src/sys/uvm/pmap/pmap.c	Fri Sep 16 17:27:09 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.21 2016/08/20 20:09:47 mrg Exp $	*/
+/*	$NetBSD: pmap.c,v 1.22 2016/09/16 17:27:09 matt Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.21 2016/08/20 20:09:47 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.22 2016/09/16 17:27:09 matt Exp $");
 
 /*
  *	Manages physical address maps.
@@ -713,6 +713,15 @@ pmap_page_remove(struct vm_page *pg)
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
 
+	UVMHIST_LOG(pmapexechist, "pg %p (pa %#"PRIxPADDR")%s: %s",
+	pg, VM_PAGE_TO_PHYS(pg), " [page removed]", "execpage cleared");
+#ifdef PMAP_VIRTUAL_CACHE_ALIASES
+	pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE|VM_PAGEMD_UNCACHED);
+#else
+	pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE);
+#endif
+	PMAP_COUNT(exec_uncached_remove);
+
 	pv_entry_t pv = >mdpg_first;
 	if (pv->pv_pmap == NULL) {
 		VM_PAGEMD_PVLIST_UNLOCK(mdpg);
@@ -800,9 +809,6 @@ pmap_page_remove(struct vm_page *pg)
 		}
 	}
 
-#ifdef PMAP_VIRTUAL_CACHE_ALIASES
-	pmap_page_clear_attributes(mdpg, VM_PAGEMD_UNCACHED);
-#endif
 	pmap_pvlist_check(mdpg);
 	VM_PAGEMD_PVLIST_UNLOCK(mdpg);
 	kpreempt_enable();



CVS commit: src/sys/uvm/pmap

2016-08-20 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Sat Aug 20 20:09:47 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
put a variable under the #ifdef it's only used in.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 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.20 src/sys/uvm/pmap/pmap.c:1.21
--- src/sys/uvm/pmap/pmap.c:1.20	Thu Aug 18 21:42:27 2016
+++ src/sys/uvm/pmap/pmap.c	Sat Aug 20 20:09:47 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.20 2016/08/18 21:42:27 matt Exp $	*/
+/*	$NetBSD: pmap.c,v 1.21 2016/08/20 20:09:47 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.20 2016/08/18 21:42:27 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.21 2016/08/20 20:09:47 mrg Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1411,8 +1411,8 @@ pmap_pte_kremove(pmap_t pmap, vaddr_t sv
 			continue;
 
 		PMAP_COUNT(kremove_pages);
-		struct vm_page * const pg = PHYS_TO_VM_PAGE(pte_to_paddr(pte));
 #ifdef PMAP_VIRTUAL_CACHE_ALIASES
+		struct vm_page * const pg = PHYS_TO_VM_PAGE(pte_to_paddr(pte));
 		if (pg != NULL && pmap_md_virtual_cache_aliasing_p()) {
 			pmap_remove_pv(pmap, sva, pg, !pte_readonly_p(pte));
 		}



CVS commit: src/sys/uvm/pmap

2016-08-18 Thread Matt Thomas
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 
 
-__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, , 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;



CVS commit: src/sys/uvm/pmap

2016-08-05 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Fri Aug  5 20:54:28 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Only include `static inline pmap_asid_check()` if it might be used.

Should fix HEAD-llvm evbppc autobuild.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 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.18 src/sys/uvm/pmap/pmap.c:1.19
--- src/sys/uvm/pmap/pmap.c:1.18	Thu Jul 14 05:00:51 2016
+++ src/sys/uvm/pmap/pmap.c	Fri Aug  5 20:54:28 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.18 2016/07/14 05:00:51 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.19 2016/08/05 20:54:28 jakllsch Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.18 2016/07/14 05:00:51 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.19 2016/08/05 20:54:28 jakllsch Exp $");
 
 /*
  *	Manages physical address maps.
@@ -276,10 +276,10 @@ kmutex_t pmap_pvlist_mutex	__cacheline_a
  * Debug functions.
  */
 
+#ifdef DEBUG
 static inline void
 pmap_asid_check(pmap_t pm, const char *func)
 {
-#ifdef DEBUG
 	if (!PMAP_IS_ACTIVE(pm))
 		return;
 
@@ -288,8 +288,8 @@ pmap_asid_check(pmap_t pm, const char *f
 	if (asid != pai->pai_asid)
 		panic("%s: inconsistency for active TLB update: %u <-> %u",
 		func, asid, pai->pai_asid);
-#endif
 }
+#endif
 
 static void
 pmap_addr_range_check(pmap_t pmap, vaddr_t sva, vaddr_t eva, const char *func)



CVS commit: src/sys/uvm/pmap

2016-07-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Jul 23 20:06:25 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Lock the tlbinfo if it wasn't when doing a pmap_tlb_pai_check


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.17 src/sys/uvm/pmap/pmap_tlb.c:1.18
--- src/sys/uvm/pmap/pmap_tlb.c:1.17	Thu Jul 14 15:50:31 2016
+++ src/sys/uvm/pmap/pmap_tlb.c	Sat Jul 23 20:06:25 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.17 2016/07/14 15:50:31 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.18 2016/07/23 20:06:25 matt Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.17 2016/07/14 15:50:31 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.18 2016/07/23 20:06:25 matt Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -204,10 +204,12 @@ pmap_tlb_intersecting_onproc_p(pmap_t pm
 #endif
 
 static void
-pmap_tlb_pai_check(struct pmap_tlb_info *ti)
+pmap_tlb_pai_check(struct pmap_tlb_info *ti, bool locked_p)
 {
 #ifdef DIAGNOSTIC
 	struct pmap_asid_info *pai;
+	if (!locked_p)
+		TLBINFO_LOCK(ti);
 	LIST_FOREACH(pai, >ti_pais, pai_link) {
 		KASSERT(pai != NULL);
 		KASSERT(PAI_PMAP(pai, ti) != pmap_kernel());
@@ -220,6 +222,8 @@ pmap_tlb_pai_check(struct pmap_tlb_info 
 		KASSERT(pmap_tlb_intersecting_active_p(PAI_PMAP(pai, ti), ti));
 #endif
 	}
+	if (!locked_p)
+		TLBINFO_UNLOCK(ti);
 #endif
 }
 
@@ -412,7 +416,7 @@ pmap_tlb_asid_reinitialize(struct pmap_t
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(maphist);
 	UVMHIST_LOG(maphist, "(ti=%p, op=%u)", ti, op, 0, 0);
 
-	pmap_tlb_pai_check(ti);
+	pmap_tlb_pai_check(ti, true);
 
 	ti->ti_evcnt_asid_reinits.ev_count++;
 
@@ -907,7 +911,7 @@ pmap_tlb_asid_acquire(pmap_t pm, struct 
 	TLBINFO_LOCK(ti);
 	KASSERT(pai->pai_asid <= KERNEL_PID || pai->pai_link.le_prev != NULL);
 	KASSERT(pai->pai_asid > KERNEL_PID || pai->pai_link.le_prev == NULL);
-	pmap_tlb_pai_check(ti);
+	pmap_tlb_pai_check(ti, true);
 	if (__predict_false(!PMAP_PAI_ASIDVALID_P(pai, ti))) {
 		/*
 		 * If we've run out ASIDs, reinitialize the ASID space.
@@ -925,7 +929,7 @@ pmap_tlb_asid_acquire(pmap_t pm, struct 
 		pmap_tlb_asid_alloc(ti, pm, pai);
 		UVMHIST_LOG(maphist, "allocated asid %#x", pai->pai_asid, 0, 0, 0);
 	}
-	pmap_tlb_pai_check(ti);
+	pmap_tlb_pai_check(ti, true);
 #if defined(MULTIPROCESSOR)
 	KASSERT(kcpuset_isset(pm->pm_active, cpu_index(ci)));
 #endif
@@ -981,7 +985,7 @@ pmap_tlb_asid_deactivate(pmap_t pm)
 	curcpu()->ci_pmap_asid_cur = KERNEL_PID;
 	UVMHIST_LOG(maphist, " <-- done (pm=%p)", pm, 0, 0, 0);
 	tlb_set_asid(KERNEL_PID);
-	pmap_tlb_pai_check(cpu_tlb_info(curcpu()));
+	pmap_tlb_pai_check(cpu_tlb_info(curcpu()), false);
 #if defined(DEBUG)
 	pmap_tlb_asid_check();
 #endif



CVS commit: src/sys/uvm/pmap

2016-07-14 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jul 14 15:50:31 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Use KERNEL_PID instead of 0


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.16 src/sys/uvm/pmap/pmap_tlb.c:1.17
--- src/sys/uvm/pmap/pmap_tlb.c:1.16	Thu Jul 14 15:49:43 2016
+++ src/sys/uvm/pmap/pmap_tlb.c	Thu Jul 14 15:50:31 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.16 2016/07/14 15:49:43 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.17 2016/07/14 15:50:31 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.16 2016/07/14 15:49:43 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.17 2016/07/14 15:50:31 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -978,7 +978,7 @@ pmap_tlb_asid_deactivate(pmap_t pm)
 		kcpuset_atomic_clear(pm->pm_onproc, cpu_index(ci));
 	}
 #endif
-	curcpu()->ci_pmap_asid_cur = 0;
+	curcpu()->ci_pmap_asid_cur = KERNEL_PID;
 	UVMHIST_LOG(maphist, " <-- done (pm=%p)", pm, 0, 0, 0);
 	tlb_set_asid(KERNEL_PID);
 	pmap_tlb_pai_check(cpu_tlb_info(curcpu()));



CVS commit: src/sys/uvm/pmap

2016-07-14 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jul 14 15:49:43 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Fix some comments.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.15 src/sys/uvm/pmap/pmap_tlb.c:1.16
--- src/sys/uvm/pmap/pmap_tlb.c:1.15	Thu Jul 14 04:51:47 2016
+++ src/sys/uvm/pmap/pmap_tlb.c	Thu Jul 14 15:49:43 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.15 2016/07/14 04:51:47 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.16 2016/07/14 15:49:43 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.15 2016/07/14 04:51:47 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.16 2016/07/14 15:49:43 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -628,7 +628,7 @@ bool
 pmap_tlb_shootdown_bystanders(pmap_t pm)
 {
 	/*
-	 * We don't need to deal our own TLB.
+	 * We don't need to deal with our own TLB.
 	 */
 
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(maphist);
@@ -1030,7 +1030,7 @@ pmap_tlb_asid_release_all(struct pmap *p
 #endif
 #else
 	/*
-	 * Handle the case of an UP kernel which only has, at most, one ASID.
+	 * Handle the case of an UP kernel which only has, at most, one TLB.
 	 * If the pmap has an ASID allocated, free it.
 	 */
 	struct pmap_tlb_info * const ti = _tlb0_info;



CVS commit: src/sys/uvm/pmap

2016-07-13 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jul 14 04:51:47 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c pmap_tlb.c

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.14 -r1.15 src/sys/uvm/pmap/pmap_tlb.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.16 src/sys/uvm/pmap/pmap.c:1.17
--- src/sys/uvm/pmap/pmap.c:1.16	Mon Jul 11 19:16:03 2016
+++ src/sys/uvm/pmap/pmap.c	Thu Jul 14 04:51:47 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.16 2016/07/11 19:16:03 maya Exp $	*/
+/*	$NetBSD: pmap.c,v 1.17 2016/07/14 04:51:47 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.16 2016/07/11 19:16:03 maya Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.17 2016/07/14 04:51:47 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -491,7 +491,7 @@ pmap_steal_memory(vsize_t size, vaddr_t 
 		 * amount of space left.
 		 */
 #define VM_PHYSMEM_SPACE(s)	((s)->avail_end - (s)->avail_start)
-		if (maybe_seg == NULL 
+		if (maybe_seg == NULL
 		|| VM_PHYSMEM_SPACE(seg) < VM_PHYSMEM_SPACE(maybe_seg)) {
 			maybe_seg = seg;
 			maybe_bank = bank;

Index: src/sys/uvm/pmap/pmap_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.14 src/sys/uvm/pmap/pmap_tlb.c:1.15
--- src/sys/uvm/pmap/pmap_tlb.c:1.14	Tue Jul 12 15:30:46 2016
+++ src/sys/uvm/pmap/pmap_tlb.c	Thu Jul 14 04:51:47 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.14 2016/07/12 15:30:46 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.15 2016/07/14 04:51:47 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.14 2016/07/12 15:30:46 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.15 2016/07/14 04:51:47 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -775,7 +775,7 @@ pmap_tlb_invalidate_addr(pmap_t pm, vadd
 	TLBINFO_LOCK(ti);
 	if (pm == pmap_kernel() || PMAP_PAI_ASIDVALID_P(pai, ti)) {
 		pmap_tlb_asid_check();
-		UVMHIST_LOG(maphist, " invalidating %#"PRIxVADDR" asid %#x", 
+		UVMHIST_LOG(maphist, " invalidating %#"PRIxVADDR" asid %#x",
 		va, pai->pai_asid, 0, 0);
 		tlb_invalidate_addr(va, pai->pai_asid);
 		pmap_tlb_asid_check();



CVS commit: src/sys/uvm/pmap

2016-07-12 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Jul 12 15:30:46 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Fix typo for build check


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.13 src/sys/uvm/pmap/pmap_tlb.c:1.14
--- src/sys/uvm/pmap/pmap_tlb.c:1.13	Mon Jul 11 16:06:09 2016
+++ src/sys/uvm/pmap/pmap_tlb.c	Tue Jul 12 15:30:46 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.13 2016/07/11 16:06:09 matt Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.14 2016/07/12 15:30:46 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.13 2016/07/11 16:06:09 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.14 2016/07/12 15:30:46 skrll Exp $");
 
 /*
  * Manages address spaces in a TLB.
@@ -521,7 +521,7 @@ pmap_tlb_asid_reinitialize(struct pmap_t
 }
 
 #if defined(MULTIPROCESSOR) && defined(PMAP_TLB_NEED_SHOOTDOWN)
-#if PMAP_MAX_TLB == 1
+#if PMAP_TLB_MAX == 1
 #error shootdown not required for single TLB systems
 #endif
 void



CVS commit: src/sys/uvm/pmap

2016-07-11 Thread Maya Rashish
Module Name:src
Committed By:   maya
Date:   Mon Jul 11 19:16:03 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Fix build by removing accidential duplicate line.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 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.15 src/sys/uvm/pmap/pmap.c:1.16
--- src/sys/uvm/pmap/pmap.c:1.15	Mon Jul 11 16:06:09 2016
+++ src/sys/uvm/pmap/pmap.c	Mon Jul 11 19:16:03 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.15 2016/07/11 16:06:09 matt Exp $	*/
+/*	$NetBSD: pmap.c,v 1.16 2016/07/11 19:16:03 maya Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.15 2016/07/11 16:06:09 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.16 2016/07/11 19:16:03 maya Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1187,7 +1187,6 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 	 "(RX)\0 " \
 	 "(WX)\0 " \
 	 "(RWX)\0"[UVM_PROTECTION(prot)*6]
- 	UVMHIST_LOG(*histp, "(pmap=%p, va=%#"PRIxVADDR", pa=%#"PRIxPADDR,
 	UVMHIST_LOG(*histp, "(pmap=%p, va=%#"PRIxVADDR", pa=%#"PRIxPADDR,
 	pmap, va, pa, 0);
 	UVMHIST_LOG(*histp, "prot=%#x%s flags=%#x%s)",



CVS commit: src/sys/uvm/pmap

2016-07-11 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jul 11 16:06:09 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap.c pmap.h pmap_segtab.c pmap_synci.c pmap_tlb.c
pmap_tlb.h tlb.h vmpagemd.h
Added Files:
src/sys/uvm/pmap: pmap_synci.h

Log Message:
Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.6 -r1.7 src/sys/uvm/pmap/pmap.h
cvs rdiff -u -r1.2 -r1.3 src/sys/uvm/pmap/pmap_segtab.c \
src/sys/uvm/pmap/pmap_synci.c src/sys/uvm/pmap/tlb.h \
src/sys/uvm/pmap/vmpagemd.h
cvs rdiff -u -r0 -r1.1 src/sys/uvm/pmap/pmap_synci.h
cvs rdiff -u -r1.12 -r1.13 src/sys/uvm/pmap/pmap_tlb.c
cvs rdiff -u -r1.8 -r1.9 src/sys/uvm/pmap/pmap_tlb.h

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.14 src/sys/uvm/pmap/pmap.c:1.15
--- src/sys/uvm/pmap/pmap.c:1.14	Thu Jul  7 06:55:44 2016
+++ src/sys/uvm/pmap/pmap.c	Mon Jul 11 16:06:09 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.14 2016/07/07 06:55:44 msaitoh Exp $	*/
+/*	$NetBSD: pmap.c,v 1.15 2016/07/11 16:06:09 matt Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.14 2016/07/07 06:55:44 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.15 2016/07/11 16:06:09 matt Exp $");
 
 /*
  *	Manages physical address maps.
@@ -102,22 +102,22 @@ __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.1
 #define __PMAP_PRIVATE
 
 #include 
-#include 
-#include 
+#include 
 #include 
+#include 
+#include 
 #include 
 #include 
 #include 
 #include 
-#include 	/* XXX: for sock_loan_thresh */
 
 #include 
 
-#define	PMAP_COUNT(name)	(pmap_evcnt_##name.ev_count++ + 0)
-#define PMAP_COUNTER(name, desc) \
-static struct evcnt pmap_evcnt_##name = \
-	EVCNT_INITIALIZER(EVCNT_TYPE_MISC, NULL, "pmap", desc); \
-EVCNT_ATTACH_STATIC(pmap_evcnt_##name)
+#if defined(MULTIPROCESSOR) && defined(PMAP_VIRTUAL_CACHE_ALIASES) \
+&& !defined(PMAP_NO_PV_UNCACHED)
+#error PMAP_VIRTUAL_CACHE_ALIASES with MULTIPROCESSOR requires \
+ PMAP_NO_PV_UNCACHED to be defined
+#endif
 
 PMAP_COUNTER(remove_kernel_calls, "remove kernel calls");
 PMAP_COUNTER(remove_kernel_pages, "kernel pages unmapped");
@@ -132,8 +132,6 @@ PMAP_COUNTER(prefer_requests, "prefer re
 PMAP_COUNTER(prefer_adjustments, "prefer adjustments");
 
 PMAP_COUNTER(idlezeroed_pages, "pages idle zeroed");
-PMAP_COUNTER(zeroed_pages, "pages zeroed");
-PMAP_COUNTER(copied_pages, "pages copied");
 
 PMAP_COUNTER(kenter_pa, "kernel fast mapped pages");
 PMAP_COUNTER(kenter_pa_bad, "kernel fast mapped pages (bad color)");
@@ -190,20 +188,22 @@ PMAP_COUNTER(page_protect, "page_protect
 #define PMAP_ASID_RESERVED 0
 CTASSERT(PMAP_ASID_RESERVED == 0);
 
-/*
- * Initialize the kernel pmap.
- */
-#ifdef MULTIPROCESSOR
-#define	PMAP_SIZE	offsetof(struct pmap, pm_pai[PMAP_TLB_MAX])
-#else
-#define	PMAP_SIZE	sizeof(struct pmap)
-kmutex_t pmap_pvlist_mutex __aligned(COHERENCY_UNIT);
+#ifndef PMAP_SEGTAB_ALIGN
+#define PMAP_SEGTAB_ALIGN	/* nothing */
+#endif
+#ifdef _LP64
+pmap_segtab_t	pmap_kstart_segtab PMAP_SEGTAB_ALIGN; /* first mid-level segtab for kernel */
+#endif
+pmap_segtab_t	pmap_kern_segtab PMAP_SEGTAB_ALIGN = { /* top level segtab for kernel */
+#ifdef _LP64
+	.seg_seg[(VM_MIN_KERNEL_ADDRESS & XSEGOFSET) >> SEGSHIFT] = _kstart_segtab,
 #endif
+};
 
 struct pmap_kernel kernel_pmap_store = {
 	.kernel_pmap = {
 		.pm_count = 1,
-		.pm_segtab = PMAP_INVALID_SEGTAB_ADDRESS,
+		.pm_segtab = _kern_segtab,
 		.pm_minaddr = VM_MIN_KERNEL_ADDRESS,
 		.pm_maxaddr = VM_MAX_KERNEL_ADDRESS,
 	},
@@ -211,7 +211,7 @@ struct pmap_kernel kernel_pmap_store = {
 
 struct pmap * const kernel_pmap_ptr = _pmap_store.kernel_pmap;
 
-struct pmap_limits pmap_limits = {
+struct pmap_limits pmap_limits = {	/* VA and PA limits */
 	.virtual_start = VM_MIN_KERNEL_ADDRESS,
 };
 
@@ -231,23 +231,24 @@ struct pool pmap_pv_pool;
 #ifndef PMAP_PV_LOWAT
 #define	PMAP_PV_LOWAT	16
 #endif
-int		pmap_pv_lowat = PMAP_PV_LOWAT;
+int	pmap_pv_lowat = PMAP_PV_LOWAT;
 
-bool		pmap_initialized = false;
+bool	pmap_initialized = false;
 #define	PMAP_PAGE_COLOROK_P(a, b) \
 		int)(a) ^ (int)(b)) & pmap_page_colormask) == 0)
-u_int		pmap_page_colormask;
+u_int	pmap_page_colormask;
 
-#define PAGE_IS_MANAGED(pa)	\
-	(pmap_initialized == true && vm_physseg_find(atop(pa), NULL) != -1)
+#define PAGE_IS_MANAGED(pa)	(pmap_initialized && uvm_pageismanaged(pa))
 
 #define PMAP_IS_ACTIVE(pm)		\
 	((pm) == pmap_kernel() || 	\
 	 (pm) == curlwp->l_proc->p_vmspace->vm_map.pmap)
 
 /* Forward function declarations */
+void pmap_page_remove(struct vm_page *);
+static void pmap_pvlist_check(struct vm_page_md *);
 void pmap_remove_pv(pmap_t, vaddr_t, struct vm_page *, bool);
-void 

CVS commit: src/sys/uvm/pmap

2016-02-07 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Sun Feb  7 18:41:25 UTC 2016

Modified Files:
src/sys/uvm/pmap: pmap_pvt.c

Log Message:
Use IPL_NONE for pserialized lock.  Assert sleepable.  (OOPS.)


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/uvm/pmap/pmap_pvt.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_pvt.c
diff -u src/sys/uvm/pmap/pmap_pvt.c:1.2 src/sys/uvm/pmap/pmap_pvt.c:1.3
--- src/sys/uvm/pmap/pmap_pvt.c:1.2	Wed Nov 11 08:22:36 2015
+++ src/sys/uvm/pmap/pmap_pvt.c	Sun Feb  7 18:41:25 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_pvt.c,v 1.2 2015/11/11 08:22:36 skrll Exp $	*/
+/*	$NetBSD: pmap_pvt.c,v 1.3 2016/02/07 18:41:25 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__RCSID("$NetBSD: pmap_pvt.c,v 1.2 2015/11/11 08:22:36 skrll Exp $");
+__RCSID("$NetBSD: pmap_pvt.c,v 1.3 2016/02/07 18:41:25 riastradh Exp $");
 
 #include 
 #include 
@@ -66,7 +66,7 @@ void
 pmap_pv_init(void)
 {
 
-	mutex_init(_unmanaged.lock, MUTEX_DEFAULT, IPL_VM);
+	mutex_init(_unmanaged.lock, MUTEX_DEFAULT, IPL_NONE);
 	pv_unmanaged.psz = pserialize_create();
 	pv_unmanaged.list = NULL;
 }
@@ -80,6 +80,9 @@ pmap_pv_track(paddr_t start, psize_t siz
 	KASSERT(start == trunc_page(start));
 	KASSERT(size == trunc_page(size));
 
+	/* We may sleep for allocation.  */
+	ASSERT_SLEEPABLE();
+
 	npages = size >> PAGE_SHIFT;
 	pvt = kmem_zalloc(offsetof(struct pv_track, pvt_pages[npages]),
 	KM_SLEEP);
@@ -102,6 +105,9 @@ pmap_pv_untrack(paddr_t start, psize_t s
 	KASSERT(start == trunc_page(start));
 	KASSERT(size == trunc_page(size));
 
+	/* We may sleep for pserialize_perform.  */
+	ASSERT_SLEEPABLE();
+
 	mutex_enter(_unmanaged.lock);
 	for (pvtp = _unmanaged.list;
 	 (pvt = *pvtp) != NULL;



CVS commit: src/sys/uvm/pmap

2015-11-11 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Nov 11 08:22:36 UTC 2015

Modified Files:
src/sys/uvm/pmap: pmap_pvt.c

Log Message:
Remove #if 0 / #endif includes


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/uvm/pmap/pmap_pvt.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_pvt.c
diff -u src/sys/uvm/pmap/pmap_pvt.c:1.1 src/sys/uvm/pmap/pmap_pvt.c:1.2
--- src/sys/uvm/pmap/pmap_pvt.c:1.1	Wed Nov 11 08:20:22 2015
+++ src/sys/uvm/pmap/pmap_pvt.c	Wed Nov 11 08:22:36 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_pvt.c,v 1.1 2015/11/11 08:20:22 skrll Exp $	*/
+/*	$NetBSD: pmap_pvt.c,v 1.2 2015/11/11 08:22:36 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,13 +30,7 @@
  */
 
 #include 
-__RCSID("$NetBSD: pmap_pvt.c,v 1.1 2015/11/11 08:20:22 skrll Exp $");
-
-#if 0
-#include 
-#include 
-#include 
-#endif
+__RCSID("$NetBSD: pmap_pvt.c,v 1.2 2015/11/11 08:22:36 skrll Exp $");
 
 #include 
 #include 



CVS commit: src/sys/uvm/pmap

2015-11-04 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Thu Nov  5 00:12:28 UTC 2015

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Remove unnecessary #include for sys/shm.h - there's nothing here that needs
anything from there.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 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.12 src/sys/uvm/pmap/pmap.c:1.13
--- src/sys/uvm/pmap/pmap.c:1.12	Thu Jun 11 05:27:07 2015
+++ src/sys/uvm/pmap/pmap.c	Thu Nov  5 00:12:28 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.12 2015/06/11 05:27:07 matt Exp $	*/
+/*	$NetBSD: pmap.c,v 1.13 2015/11/05 00:12:28 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.12 2015/06/11 05:27:07 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.13 2015/11/05 00:12:28 pgoyette Exp $");
 
 /*
  *	Manages physical address maps.
@@ -109,9 +109,6 @@ __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.1
 #include 
 #include 
 #include 
-#ifdef SYSVSHM
-#include 
-#endif
 #include 	/* XXX: for sock_loan_thresh */
 
 #include 



CVS commit: src/sys/uvm/pmap

2015-06-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Jun 11 05:27:07 UTC 2015

Modified Files:
src/sys/uvm/pmap: pmap.c pmap.h

Log Message:
Add virtual_start to pmap_limits.  This allows MD to steal address space
before pmap_bootstrap.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.4 -r1.5 src/sys/uvm/pmap/pmap.h

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.11 src/sys/uvm/pmap/pmap.c:1.12
--- src/sys/uvm/pmap/pmap.c:1.11	Tue Feb  3 10:25:53 2015
+++ src/sys/uvm/pmap/pmap.c	Thu Jun 11 05:27:07 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.11 2015/02/03 10:25:53 nonaka Exp $	*/
+/*	$NetBSD: pmap.c,v 1.12 2015/06/11 05:27:07 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.11 2015/02/03 10:25:53 nonaka Exp $);
+__KERNEL_RCSID(0, $NetBSD: pmap.c,v 1.12 2015/06/11 05:27:07 matt Exp $);
 
 /*
  *	Manages physical address maps.
@@ -214,7 +214,9 @@ struct pmap_kernel kernel_pmap_store = {
 
 struct pmap * const kernel_pmap_ptr = kernel_pmap_store.kernel_pmap;
 
-struct pmap_limits pmap_limits;
+struct pmap_limits pmap_limits = {
+	.virtual_start = VM_MIN_KERNEL_ADDRESS,
+};
 
 #ifdef UVMHIST
 static struct kern_history_ent pmapexechistbuf[1];
@@ -351,8 +353,8 @@ void
 pmap_virtual_space(vaddr_t *vstartp, vaddr_t *vendp)
 {
 
-	*vstartp = VM_MIN_KERNEL_ADDRESS;
-	*vendp = VM_MAX_KERNEL_ADDRESS;
+	*vstartp = pmap_limits.virtual_start;
+	*vendp = pmap_limits.virtual_end;
 }
 
 vaddr_t

Index: src/sys/uvm/pmap/pmap.h
diff -u src/sys/uvm/pmap/pmap.h:1.4 src/sys/uvm/pmap/pmap.h:1.5
--- src/sys/uvm/pmap/pmap.h:1.4	Tue Mar 18 18:20:44 2014
+++ src/sys/uvm/pmap/pmap.h	Thu Jun 11 05:27:07 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.4 2014/03/18 18:20:44 riastradh Exp $	*/
+/*	$NetBSD: pmap.h,v 1.5 2015/06/11 05:27:07 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -148,6 +148,7 @@ struct pmap_kernel {
 struct pmap_limits {
 	paddr_t avail_start;
 	paddr_t avail_end;
+	vaddr_t virtual_start;
 	vaddr_t virtual_end;
 };
 



CVS commit: src/sys/uvm/pmap

2015-06-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Jun 11 05:28:42 UTC 2015

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
Don't call kcpuset_intersecting_p and then kcpuset_ffs_intersecting since
that the last will tell use what we need to know.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.11 src/sys/uvm/pmap/pmap_tlb.c:1.12
--- src/sys/uvm/pmap/pmap_tlb.c:1.11	Sat Apr 18 16:58:31 2015
+++ src/sys/uvm/pmap/pmap_tlb.c	Thu Jun 11 05:28:42 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.11 2015/04/18 16:58:31 joerg Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.12 2015/06/11 05:28:42 matt Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: pmap_tlb.c,v 1.11 2015/04/18 16:58:31 joerg Exp $);
+__KERNEL_RCSID(0, $NetBSD: pmap_tlb.c,v 1.12 2015/06/11 05:28:42 matt Exp $);
 
 /*
  * Manages address spaces in a TLB.
@@ -635,9 +635,10 @@ pmap_tlb_shootdown_bystanders(pmap_t pm)
 		struct pmap_asid_info * const pai = PMAP_PAI(pm, ti);
 		kcpuset_remove(pm_active, ti-ti_kcpuset);
 		TLBINFO_LOCK(ti);
-		if (pmap_tlb_intersecting_onproc_p(pm, ti)) {
-			cpuid_t j = kcpuset_ffs_intersecting(pm-pm_onproc,
-			ti-ti_kcpuset);
+		cpuid_t j = kcpuset_ffs_intersecting(pm-pm_onproc,
+		ti-ti_kcpuset);
+		// post decrement since ffs returns bit + 1 or 0 if no bit
+		if (j--  0) {
 			if (kernel_p) {
 ti-ti_tlbinvop =
 TLBINV_KERNEL_MAP(ti-ti_tlbinvop);



CVS commit: src/sys/uvm/pmap

2015-04-18 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sat Apr 18 16:58:31 UTC 2015

Modified Files:
src/sys/uvm/pmap: pmap_tlb.c

Log Message:
pmap_tlb_intersecting_active_p is not used in some combinations of
platform options as seen by recent ARM changes.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/uvm/pmap/pmap_tlb.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_tlb.c
diff -u src/sys/uvm/pmap/pmap_tlb.c:1.10 src/sys/uvm/pmap/pmap_tlb.c:1.11
--- src/sys/uvm/pmap/pmap_tlb.c:1.10	Wed Oct 29 10:53:41 2014
+++ src/sys/uvm/pmap/pmap_tlb.c	Sat Apr 18 16:58:31 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.c,v 1.10 2014/10/29 10:53:41 skrll Exp $	*/
+/*	$NetBSD: pmap_tlb.c,v 1.11 2015/04/18 16:58:31 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: pmap_tlb.c,v 1.10 2014/10/29 10:53:41 skrll Exp $);
+__KERNEL_RCSID(0, $NetBSD: pmap_tlb.c,v 1.11 2015/04/18 16:58:31 joerg Exp $);
 
 /*
  * Manages address spaces in a TLB.
@@ -196,7 +196,7 @@ pmap_pai_check(struct pmap_tlb_info *ti)
 }
 
 #ifdef MULTIPROCESSOR
-static inline bool
+__unused static inline bool
 pmap_tlb_intersecting_active_p(pmap_t pm, struct pmap_tlb_info *ti)
 {
 #if PMAP_TLB_MAX == 1



CVS commit: src/sys/uvm/pmap

2015-04-02 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Apr  2 06:17:52 UTC 2015

Modified Files:
src/sys/uvm/pmap: pmap_tlb.h

Log Message:
include sys/evcnt.h


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/uvm/pmap/pmap_tlb.h

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_tlb.h
diff -u src/sys/uvm/pmap/pmap_tlb.h:1.7 src/sys/uvm/pmap/pmap_tlb.h:1.8
--- src/sys/uvm/pmap/pmap_tlb.h:1.7	Mon Jan  5 05:35:18 2015
+++ src/sys/uvm/pmap/pmap_tlb.h	Thu Apr  2 06:17:52 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.h,v 1.7 2015/01/05 05:35:18 nonaka Exp $	*/
+/*	$NetBSD: pmap_tlb.h,v 1.8 2015/04/02 06:17:52 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -74,6 +74,7 @@
 #ifndef	_COMMON_PMAP_TLB_H_
 #define	_COMMON_PMAP_TLB_H_
 
+#include sys/evcnt.h
 #include sys/kcpuset.h
 
 #if !defined(PMAP_TLB_MAX)



CVS commit: src/sys/uvm/pmap

2015-02-03 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Tue Feb  3 10:25:53 UTC 2015

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Disable pmap_md_tlb_check_entry, when MP.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 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.10 src/sys/uvm/pmap/pmap.c:1.11
--- src/sys/uvm/pmap/pmap.c:1.10	Mon Jan 26 04:47:53 2015
+++ src/sys/uvm/pmap/pmap.c	Tue Feb  3 10:25:53 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.10 2015/01/26 04:47:53 nonaka Exp $	*/
+/*	$NetBSD: pmap.c,v 1.11 2015/02/03 10:25:53 nonaka 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.10 2015/01/26 04:47:53 nonaka Exp $);
+__KERNEL_RCSID(0, $NetBSD: pmap.c,v 1.11 2015/02/03 10:25:53 nonaka Exp $);
 
 /*
  *	Manages physical address maps.
@@ -641,7 +641,7 @@ pmap_update(struct pmap *pmap)
 		PMAP_COUNT(shootdown_ipis);
 #endif
 	pmap_md_tlb_miss_lock_enter();
-#ifdef DEBUG
+#if defined(DEBUG)  !defined(MULTIPROCESSOR)
 	pmap_tlb_check(pmap, pmap_md_tlb_check_entry);
 #endif /* DEBUG */
 



CVS commit: src/sys/uvm/pmap

2015-01-04 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Mon Jan  5 05:35:19 UTC 2015

Modified Files:
src/sys/uvm/pmap: pmap.c pmap_tlb.h

Log Message:
Use PMAP_TLB_MAX instead of MAXCPUS.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.6 -r1.7 src/sys/uvm/pmap/pmap_tlb.h

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.8 src/sys/uvm/pmap/pmap.c:1.9
--- src/sys/uvm/pmap/pmap.c:1.8	Thu Dec 25 08:11:09 2014
+++ src/sys/uvm/pmap/pmap.c	Mon Jan  5 05:35:18 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.8 2014/12/25 08:11:09 nonaka Exp $	*/
+/*	$NetBSD: pmap.c,v 1.9 2015/01/05 05:35:18 nonaka 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.8 2014/12/25 08:11:09 nonaka Exp $);
+__KERNEL_RCSID(0, $NetBSD: pmap.c,v 1.9 2015/01/05 05:35:18 nonaka Exp $);
 
 /*
  *	Manages physical address maps.
@@ -197,7 +197,7 @@ CTASSERT(PMAP_ASID_RESERVED == 0);
  * Initialize the kernel pmap.
  */
 #ifdef MULTIPROCESSOR
-#define	PMAP_SIZE	offsetof(struct pmap, pm_pai[MAXCPUS])
+#define	PMAP_SIZE	offsetof(struct pmap, pm_pai[PMAP_TLB_MAX])
 #else
 #define	PMAP_SIZE	sizeof(struct pmap)
 kmutex_t pmap_pvlist_mutex __aligned(COHERENCY_UNIT);

Index: src/sys/uvm/pmap/pmap_tlb.h
diff -u src/sys/uvm/pmap/pmap_tlb.h:1.6 src/sys/uvm/pmap/pmap_tlb.h:1.7
--- src/sys/uvm/pmap/pmap_tlb.h:1.6	Thu Apr  3 14:46:25 2014
+++ src/sys/uvm/pmap/pmap_tlb.h	Mon Jan  5 05:35:18 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_tlb.h,v 1.6 2014/04/03 14:46:25 matt Exp $	*/
+/*	$NetBSD: pmap_tlb.h,v 1.7 2015/01/05 05:35:18 nonaka Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -144,7 +144,7 @@ struct pmap_tlb_info {
 #ifdef	_KERNEL
 extern struct pmap_tlb_info pmap_tlb0_info;
 #ifdef MULTIPROCESSOR
-extern struct pmap_tlb_info *pmap_tlbs[MAXCPUS];
+extern struct pmap_tlb_info *pmap_tlbs[PMAP_TLB_MAX];
 extern u_int pmap_ntlbs;
 #endif
 



CVS commit: src/sys/uvm/pmap

2014-12-25 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Thu Dec 25 08:11:09 UTC 2014

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
fix build failure when UVMHIST is defined.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 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.7 src/sys/uvm/pmap/pmap.c:1.8
--- src/sys/uvm/pmap/pmap.c:1.7	Wed Dec 24 04:03:02 2014
+++ src/sys/uvm/pmap/pmap.c	Thu Dec 25 08:11:09 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.7 2014/12/24 04:03:02 nonaka Exp $	*/
+/*	$NetBSD: pmap.c,v 1.8 2014/12/25 08:11:09 nonaka 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.7 2014/12/24 04:03:02 nonaka Exp $);
+__KERNEL_RCSID(0, $NetBSD: pmap.c,v 1.8 2014/12/25 08:11:09 nonaka Exp $);
 
 /*
  *	Manages physical address maps.
@@ -219,6 +219,8 @@ struct pmap_limits pmap_limits;
 #ifdef UVMHIST
 static struct kern_history_ent pmapexechistbuf[1];
 static struct kern_history_ent pmaphistbuf[1];
+UVMHIST_DEFINE(pmapexechist);
+UVMHIST_DEFINE(pmaphist);
 #endif
 
 /*



CVS commit: src/sys/uvm/pmap

2014-12-23 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Wed Dec 24 04:03:02 UTC 2014

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
fix compile failure.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 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.6 src/sys/uvm/pmap/pmap.c:1.7
--- src/sys/uvm/pmap/pmap.c:1.6	Mon Dec 22 11:11:34 2014
+++ src/sys/uvm/pmap/pmap.c	Wed Dec 24 04:03:02 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.6 2014/12/22 11:11:34 nonaka Exp $	*/
+/*	$NetBSD: pmap.c,v 1.7 2014/12/24 04:03:02 nonaka 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.6 2014/12/22 11:11:34 nonaka Exp $);
+__KERNEL_RCSID(0, $NetBSD: pmap.c,v 1.7 2014/12/24 04:03:02 nonaka Exp $);
 
 /*
  *	Manages physical address maps.
@@ -543,8 +543,8 @@ pmap_destroy(pmap_t pmap)
 	pmap_segtab_destroy(pmap, NULL, 0);
 
 #ifdef MULTIPROCESSOR
-	kcpuset_destroy(pmap-pm_active);
-	kcpuset_destroy(pmap-pm_onproc);
+	kcpuset_destroy(pmap-pm_active);
+	kcpuset_destroy(pmap-pm_onproc);
 #endif
 
 	pool_put(pmap_pmap_pool, pmap);



CVS commit: src/sys/uvm/pmap

2014-12-22 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Mon Dec 22 11:11:34 UTC 2014

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
pmap-pm_active and pmap-pm_onproc must be destroyed.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 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.5 src/sys/uvm/pmap/pmap.c:1.6
--- src/sys/uvm/pmap/pmap.c:1.5	Fri Dec 19 04:25:52 2014
+++ src/sys/uvm/pmap/pmap.c	Mon Dec 22 11:11:34 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.5 2014/12/19 04:25:52 nonaka Exp $	*/
+/*	$NetBSD: pmap.c,v 1.6 2014/12/22 11:11:34 nonaka 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.5 2014/12/19 04:25:52 nonaka Exp $);
+__KERNEL_RCSID(0, $NetBSD: pmap.c,v 1.6 2014/12/22 11:11:34 nonaka Exp $);
 
 /*
  *	Manages physical address maps.
@@ -542,6 +542,11 @@ pmap_destroy(pmap_t pmap)
 	pmap_tlb_asid_release_all(pmap);
 	pmap_segtab_destroy(pmap, NULL, 0);
 
+#ifdef MULTIPROCESSOR
+	kcpuset_destroy(pmap-pm_active);
+	kcpuset_destroy(pmap-pm_onproc);
+#endif
+
 	pool_put(pmap_pmap_pool, pmap);
 	kpreempt_enable();
 



CVS commit: src/sys/uvm/pmap

2014-12-18 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Fri Dec 19 04:25:52 UTC 2014

Modified Files:
src/sys/uvm/pmap: pmap.c

Log Message:
Initialize pmap-pm_active and pmap-pm_onproc.
Avoid panic: kernel diagnostic assertion !pmap_tlb_intersecting_onproc_p(pm, 
ti) failed: file /usr/src/sys/uvm/pmap/pmap_tlb.c, line 762.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 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.4 src/sys/uvm/pmap/pmap.c:1.5
--- src/sys/uvm/pmap/pmap.c:1.4	Tue Feb 25 15:20:29 2014
+++ src/sys/uvm/pmap/pmap.c	Fri Dec 19 04:25:52 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.4 2014/02/25 15:20:29 martin Exp $	*/
+/*	$NetBSD: pmap.c,v 1.5 2014/12/19 04:25:52 nonaka 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.4 2014/02/25 15:20:29 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: pmap.c,v 1.5 2014/12/19 04:25:52 nonaka Exp $);
 
 /*
  *	Manages physical address maps.
@@ -511,6 +511,11 @@ pmap_create(void)
 
 	pmap_segtab_init(pmap);
 
+#ifdef MULTIPROCESSOR
+	kcpuset_create(pmap-pm_active, true);
+	kcpuset_create(pmap-pm_onproc, true);
+#endif
+
 	UVMHIST_LOG(pmaphist, - pmap %p, pmap,0,0,0);
 	return pmap;
 }



  1   2   >