Module Name:    src
Committed By:   ad
Date:           Sat Mar 14 14:05:44 UTC 2020

Modified Files:
        src/share/man/man9: pmap.9
        src/sys/arch/aarch64/aarch64: pmap.c
        src/sys/arch/alpha/include: pmap.h
        src/sys/arch/arm/arm32: pmap.c
        src/sys/arch/arm/include/arm32: pmap.h
        src/sys/arch/hppa/include: pmap.h
        src/sys/arch/ia64/ia64: pmap.c
        src/sys/arch/m68k/include: pmap_motorola.h
        src/sys/arch/powerpc/include/ibm4xx: pmap.h
        src/sys/arch/powerpc/include/oea: pmap.h
        src/sys/arch/sh3/include: pmap.h
        src/sys/arch/sparc/include: pmap.h
        src/sys/arch/sparc/sparc: pmap.c
        src/sys/arch/sparc64/sparc64: pmap.c
        src/sys/arch/sun2/include: pmap.h
        src/sys/arch/sun3/include: pmap3.h pmap3x.h
        src/sys/arch/usermode/usermode: pmap.c
        src/sys/arch/vax/include: pmap.h
        src/sys/arch/x86/include: pmap.h
        src/sys/arch/x86/x86: pmap.c
        src/sys/uvm: uvm_pmap.h
        src/sys/uvm/pmap: pmap.c

Log Message:
pmap_remove_all(): Return a boolean value to indicate the behaviour.  If
true, all mappings have been removed, the pmap is totally cleared out, and
UVM can then avoid doing the work to call pmap_remove() for each map entry.
If false, either nothing has been done, or some helpful arch-specific voodoo
has taken place.


To generate a diff of this commit:
cvs rdiff -u -r1.46 -r1.47 src/share/man/man9/pmap.9
cvs rdiff -u -r1.67 -r1.68 src/sys/arch/aarch64/aarch64/pmap.c
cvs rdiff -u -r1.80 -r1.81 src/sys/arch/alpha/include/pmap.h
cvs rdiff -u -r1.398 -r1.399 src/sys/arch/arm/arm32/pmap.c
cvs rdiff -u -r1.163 -r1.164 src/sys/arch/arm/include/arm32/pmap.h
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/hppa/include/pmap.h
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/ia64/ia64/pmap.c
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/m68k/include/pmap_motorola.h
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/powerpc/include/ibm4xx/pmap.h
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/powerpc/include/oea/pmap.h
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/sh3/include/pmap.h
cvs rdiff -u -r1.92 -r1.93 src/sys/arch/sparc/include/pmap.h
cvs rdiff -u -r1.366 -r1.367 src/sys/arch/sparc/sparc/pmap.c
cvs rdiff -u -r1.311 -r1.312 src/sys/arch/sparc64/sparc64/pmap.c
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/sun2/include/pmap.h
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/sun3/include/pmap3.h
cvs rdiff -u -r1.30 -r1.31 src/sys/arch/sun3/include/pmap3x.h
cvs rdiff -u -r1.114 -r1.115 src/sys/arch/usermode/usermode/pmap.c
cvs rdiff -u -r1.80 -r1.81 src/sys/arch/vax/include/pmap.h
cvs rdiff -u -r1.111 -r1.112 src/sys/arch/x86/include/pmap.h
cvs rdiff -u -r1.364 -r1.365 src/sys/arch/x86/x86/pmap.c
cvs rdiff -u -r1.39 -r1.40 src/sys/uvm/uvm_pmap.h
cvs rdiff -u -r1.47 -r1.48 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/share/man/man9/pmap.9
diff -u src/share/man/man9/pmap.9:1.46 src/share/man/man9/pmap.9:1.47
--- src/share/man/man9/pmap.9:1.46	Mon Jan 14 15:56:06 2019
+++ src/share/man/man9/pmap.9	Sat Mar 14 14:05:42 2020
@@ -1,6 +1,6 @@
-.\"	$NetBSD: pmap.9,v 1.46 2019/01/14 15:56:06 wiz Exp $
+.\"	$NetBSD: pmap.9,v 1.47 2020/03/14 14:05:42 ad Exp $
 .\"
-.\" Copyright (c) 2000, 2001, 2002 The NetBSD Foundation, Inc.
+.\" Copyright (c) 2000, 2001, 2002, 2020 The NetBSD Foundation, Inc.
 .\" All rights reserved.
 .\"
 .\" This code is derived from software contributed to The NetBSD Foundation
@@ -27,7 +27,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd January 13, 2019
+.Dd March 14, 2020
 .Dt PMAP 9
 .Os
 .Sh NAME
@@ -63,7 +63,7 @@
     "u_int flags"
 .Ft void
 .Fn "pmap_remove" "pmap_t pmap" "vaddr_t sva" "vaddr_t eva"
-.Ft void
+.Ft bool
 .Fn "pmap_remove_all" "pmap_t pmap"
 .Ft void
 .Fn "pmap_protect" "pmap_t pmap" "vaddr_t sva" "vaddr_t eva" "vm_prot_t prot"
@@ -549,7 +549,7 @@ Remove mappings from the virtual address
 to
 .Fa eva
 from the specified physical map.
-.It void Fn "pmap_remove_all" "pmap_t pmap"
+.It bool Fn "pmap_remove_all" "pmap_t pmap"
 This function is a hint to the
 .Nm pmap
 implementation that all entries in
@@ -581,6 +581,21 @@ mappings immediately in
 or to use the knowledge of the upcoming
 .Fn pmap_remove
 calls to optimize the removals (or to just ignore this call).
+.Pp
+If  all mappings in the address space have been removed,
+.Fn pmap_remove_all
+should return
+.Dv true
+to indicate that that the pmap is now empty.
+In this case UVM will skip all subsequent calls to
+.Fn pmap_remove
+and
+.Fn pmap_update
+for the pmap, that would otherwise be required to clean it out.
+If any mappings could possibly remain,
+.Fn pmap_remove_all
+must return
+.Dv false .
 .It void Fn "pmap_protect" "pmap_t pmap" "vaddr_t sva" "vaddr_t eva" \
     "vm_prot_t prot"
 Set the protection of the mappings in the virtual address range

Index: src/sys/arch/aarch64/aarch64/pmap.c
diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.67 src/sys/arch/aarch64/aarch64/pmap.c:1.68
--- src/sys/arch/aarch64/aarch64/pmap.c:1.67	Mon Mar  2 08:39:36 2020
+++ src/sys/arch/aarch64/aarch64/pmap.c	Sat Mar 14 14:05:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.67 2020/03/02 08:39:36 ryo Exp $	*/
+/*	$NetBSD: pmap.c,v 1.68 2020/03/14 14:05:42 ad Exp $	*/
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <r...@nerv.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.67 2020/03/02 08:39:36 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.68 2020/03/14 14:05:42 ad Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_ddb.h"
@@ -1947,10 +1947,11 @@ pmap_enter(struct pmap *pm, vaddr_t va, 
 	return _pmap_enter(pm, va, pa, prot, flags, false);
 }
 
-void
+bool
 pmap_remove_all(struct pmap *pm)
 {
 	/* nothing to do */
+	return false;
 }
 
 static void

Index: src/sys/arch/alpha/include/pmap.h
diff -u src/sys/arch/alpha/include/pmap.h:1.80 src/sys/arch/alpha/include/pmap.h:1.81
--- src/sys/arch/alpha/include/pmap.h:1.80	Sat May 19 20:04:41 2018
+++ src/sys/arch/alpha/include/pmap.h	Sat Mar 14 14:05:42 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.80 2018/05/19 20:04:41 thorpej Exp $ */
+/* $NetBSD: pmap.h,v 1.81 2020/03/14 14:05:42 ad Exp $ */
 
 /*-
  * Copyright (c) 1998, 1999, 2000, 2001, 2007 The NetBSD Foundation, Inc.
@@ -214,10 +214,11 @@ void	pmap_do_tlb_shootdown(struct cpu_in
 #define	pmap_copy(dp, sp, da, l, sa)	/* nothing */
 #define	pmap_update(pmap)		/* nothing (yet) */
 
-static __inline void
+static __inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 #define	pmap_is_referenced(pg)						\

Index: src/sys/arch/arm/arm32/pmap.c
diff -u src/sys/arch/arm/arm32/pmap.c:1.398 src/sys/arch/arm/arm32/pmap.c:1.399
--- src/sys/arch/arm/arm32/pmap.c:1.398	Fri Mar 13 16:25:19 2020
+++ src/sys/arch/arm/arm32/pmap.c	Sat Mar 14 14:05:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.398 2020/03/13 16:25:19 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.399 2020/03/14 14:05:42 ad Exp $	*/
 
 /*
  * Copyright 2003 Wasabi Systems, Inc.
@@ -198,7 +198,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.398 2020/03/13 16:25:19 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.399 2020/03/14 14:05:42 ad Exp $");
 
 #include <sys/atomic.h>
 #include <sys/param.h>
@@ -5180,7 +5180,7 @@ pmap_update(pmap_t pm)
 	UVMHIST_LOG(maphist, "  <-- done", 0, 0, 0, 0);
 }
 
-void
+bool
 pmap_remove_all(pmap_t pm)
 {
 
@@ -5208,6 +5208,7 @@ pmap_remove_all(pmap_t pm)
 	pmap_tlb_asid_release_all(pm);
 #endif
 	pm->pm_remove_all = true;
+	return false;
 }
 
 /*

Index: src/sys/arch/arm/include/arm32/pmap.h
diff -u src/sys/arch/arm/include/arm32/pmap.h:1.163 src/sys/arch/arm/include/arm32/pmap.h:1.164
--- src/sys/arch/arm/include/arm32/pmap.h:1.163	Mon Feb 24 20:31:56 2020
+++ src/sys/arch/arm/include/arm32/pmap.h	Sat Mar 14 14:05:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.163 2020/02/24 20:31:56 ad Exp $	*/
+/*	$NetBSD: pmap.h,v 1.164 2020/03/14 14:05:42 ad Exp $	*/
 
 /*
  * Copyright (c) 2002, 2003 Wasabi Systems, Inc.
@@ -374,7 +374,7 @@ u_int arm32_mmap_flags(paddr_t);
  * Functions that we need to export
  */
 void	pmap_procwr(struct proc *, vaddr_t, int);
-void	pmap_remove_all(pmap_t);
+bool	pmap_remove_all(pmap_t);
 bool	pmap_extract(pmap_t, vaddr_t, paddr_t *);
 
 #define	PMAP_NEED_PROCWR

Index: src/sys/arch/hppa/include/pmap.h
diff -u src/sys/arch/hppa/include/pmap.h:1.39 src/sys/arch/hppa/include/pmap.h:1.40
--- src/sys/arch/hppa/include/pmap.h:1.39	Mon Feb 24 20:42:18 2020
+++ src/sys/arch/hppa/include/pmap.h	Sat Mar 14 14:05:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.39 2020/02/24 20:42:18 ad Exp $	*/
+/*	$NetBSD: pmap.h,v 1.40 2020/03/14 14:05:42 ad Exp $	*/
 
 /*	$OpenBSD: pmap.h,v 1.35 2007/12/14 18:32:23 deraadt Exp $	*/
 
@@ -167,10 +167,11 @@ pmap_deactivate(struct lwp *l)
 	/* Nothing. */
 }
 
-static inline void
+static inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 static inline int

Index: src/sys/arch/ia64/ia64/pmap.c
diff -u src/sys/arch/ia64/ia64/pmap.c:1.39 src/sys/arch/ia64/ia64/pmap.c:1.40
--- src/sys/arch/ia64/ia64/pmap.c:1.39	Sat Nov 30 16:23:46 2019
+++ src/sys/arch/ia64/ia64/pmap.c	Sat Mar 14 14:05:42 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.39 2019/11/30 16:23:46 riastradh Exp $ */
+/* $NetBSD: pmap.c,v 1.40 2020/03/14 14:05:42 ad Exp $ */
 
 /*-
  * Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -81,7 +81,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.39 2019/11/30 16:23:46 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.40 2020/03/14 14:05:42 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -1856,10 +1856,11 @@ pmap_remove(pmap_t pmap, vaddr_t sva, va
  *	entries in pmap will be removed before any more entries are
  *	entered.
  */
-void
+bool
 pmap_remove_all(pmap_t pmap)
 {
 	/* XXX do nothing */
+	return false;
 }
 
 /*

Index: src/sys/arch/m68k/include/pmap_motorola.h
diff -u src/sys/arch/m68k/include/pmap_motorola.h:1.35 src/sys/arch/m68k/include/pmap_motorola.h:1.36
--- src/sys/arch/m68k/include/pmap_motorola.h:1.35	Sat Feb  1 06:17:11 2020
+++ src/sys/arch/m68k/include/pmap_motorola.h	Sat Mar 14 14:05:43 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_motorola.h,v 1.35 2020/02/01 06:17:11 tsutsui Exp $	*/
+/*	$NetBSD: pmap_motorola.h,v 1.36 2020/03/14 14:05:43 ad Exp $	*/
 
 /* 
  * Copyright (c) 1991, 1993
@@ -204,10 +204,11 @@ extern struct pv_header	*pv_table;	/* ar
 
 #define	pmap_update(pmap)		__nothing	/* nothing (yet) */
 
-static __inline void
+static __inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 extern paddr_t		Sysseg_pa;

Index: src/sys/arch/powerpc/include/ibm4xx/pmap.h
diff -u src/sys/arch/powerpc/include/ibm4xx/pmap.h:1.20 src/sys/arch/powerpc/include/ibm4xx/pmap.h:1.21
--- src/sys/arch/powerpc/include/ibm4xx/pmap.h:1.20	Thu Mar  5 02:14:53 2020
+++ src/sys/arch/powerpc/include/ibm4xx/pmap.h	Sat Mar 14 14:05:43 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.20 2020/03/05 02:14:53 rin Exp $	*/
+/*	$NetBSD: pmap.h,v 1.21 2020/03/14 14:05:43 ad Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -172,10 +172,11 @@ bool pmap_check_attr(struct vm_page *, u
 void pmap_real_memory(paddr_t *, psize_t *);
 int pmap_tlbmiss(vaddr_t va, int ctx);
 
-static __inline void
+static __inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 int	ctx_alloc(struct pmap *);

Index: src/sys/arch/powerpc/include/oea/pmap.h
diff -u src/sys/arch/powerpc/include/oea/pmap.h:1.29 src/sys/arch/powerpc/include/oea/pmap.h:1.30
--- src/sys/arch/powerpc/include/oea/pmap.h:1.29	Thu Apr 19 21:50:07 2018
+++ src/sys/arch/powerpc/include/oea/pmap.h	Sat Mar 14 14:05:43 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.29 2018/04/19 21:50:07 christos Exp $	*/
+/*	$NetBSD: pmap.h,v 1.30 2020/03/14 14:05:43 ad Exp $	*/
 
 /*-
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -128,10 +128,11 @@ extern int pmap_use_altivec;
 #define	pmap_wired_count(pmap)		((pmap)->pm_stats.wired_count)
 
 /* ARGSUSED */
-static __inline void
+static __inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 #if (defined(PPC_OEA) + defined(PPC_OEA64) + defined(PPC_OEA64_BRIDGE)) != 1

Index: src/sys/arch/sh3/include/pmap.h
diff -u src/sys/arch/sh3/include/pmap.h:1.36 src/sys/arch/sh3/include/pmap.h:1.37
--- src/sys/arch/sh3/include/pmap.h:1.36	Sat Sep  3 09:07:53 2016
+++ src/sys/arch/sh3/include/pmap.h	Sat Mar 14 14:05:43 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.36 2016/09/03 09:07:53 christos Exp $	*/
+/*	$NetBSD: pmap.h,v 1.37 2020/03/14 14:05:43 ad Exp $	*/
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -61,10 +61,11 @@ void pmap_procwr(struct proc *, vaddr_t,
 #define	pmap_resident_count(pmap)	((pmap)->pm_stats.resident_count)
 
 /* ARGSUSED */
-static __inline void
+static __inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 /*

Index: src/sys/arch/sparc/include/pmap.h
diff -u src/sys/arch/sparc/include/pmap.h:1.92 src/sys/arch/sparc/include/pmap.h:1.93
--- src/sys/arch/sparc/include/pmap.h:1.92	Sat Oct 19 19:40:23 2013
+++ src/sys/arch/sparc/include/pmap.h	Sat Mar 14 14:05:43 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.92 2013/10/19 19:40:23 mrg Exp $ */
+/*	$NetBSD: pmap.h,v 1.93 2020/03/14 14:05:43 ad Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -270,7 +270,7 @@ void		kvm_uncache(char *, int);
 int		mmu_pagein(struct pmap *pm, vaddr_t, int);
 void		pmap_writetext(unsigned char *, int);
 void		pmap_globalize_boot_cpuinfo(struct cpu_info *);
-void		pmap_remove_all(struct pmap *pm);
+bool		pmap_remove_all(struct pmap *pm);
 #define 	pmap_mmap_flags(x)	0	/* dummy so far */
 
 /* SUN4/SUN4C SPECIFIC DECLARATIONS */

Index: src/sys/arch/sparc/sparc/pmap.c
diff -u src/sys/arch/sparc/sparc/pmap.c:1.366 src/sys/arch/sparc/sparc/pmap.c:1.367
--- src/sys/arch/sparc/sparc/pmap.c:1.366	Sun Jan 13 22:11:11 2019
+++ src/sys/arch/sparc/sparc/pmap.c	Sat Mar 14 14:05:43 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.366 2019/01/13 22:11:11 mrg Exp $ */
+/*	$NetBSD: pmap.c,v 1.367 2020/03/14 14:05:43 ad Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -56,7 +56,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.366 2019/01/13 22:11:11 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.367 2020/03/14 14:05:43 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -4606,11 +4606,11 @@ pgt_lvl23_remove4m(struct pmap *pm, stru
 }
 #endif /* SUN4M || SUN4D */
 
-void
+bool
 pmap_remove_all(struct pmap *pm)
 {
 	if (pm->pm_ctx == NULL)
-		return;
+		return false;
 
 #if defined(SUN4) || defined(SUN4C)
 	if (CPU_HAS_SUNMMU) {
@@ -4628,6 +4628,7 @@ pmap_remove_all(struct pmap *pm)
 #endif
 
 	pm->pm_flags |= PMAP_USERCACHECLEAN;
+	return false;
 }
 
 /*

Index: src/sys/arch/sparc64/sparc64/pmap.c
diff -u src/sys/arch/sparc64/sparc64/pmap.c:1.311 src/sys/arch/sparc64/sparc64/pmap.c:1.312
--- src/sys/arch/sparc64/sparc64/pmap.c:1.311	Sun Dec 15 21:11:34 2019
+++ src/sys/arch/sparc64/sparc64/pmap.c	Sat Mar 14 14:05:43 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.311 2019/12/15 21:11:34 ad Exp $	*/
+/*	$NetBSD: pmap.c,v 1.312 2020/03/14 14:05:43 ad Exp $	*/
 /*
  *
  * Copyright (C) 1996-1999 Eduardo Horvath.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.311 2019/12/15 21:11:34 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.312 2020/03/14 14:05:43 ad Exp $");
 
 #undef	NO_VCACHE /* Don't forget the locked TLB in dostart */
 #define	HWREF
@@ -2018,7 +2018,7 @@ pmap_enter(struct pmap *pm, vaddr_t va, 
 	return error;
 }
 
-void
+bool
 pmap_remove_all(struct pmap *pm)
 {
 #ifdef MULTIPROCESSOR
@@ -2027,7 +2027,7 @@ pmap_remove_all(struct pmap *pm)
 #endif
 
 	if (pm == pmap_kernel()) {
-		return;
+		return false;
 	}
 	write_user_windows();
 	pm->pm_refs = 0;
@@ -2063,6 +2063,7 @@ pmap_remove_all(struct pmap *pm)
 	 * only flush the right context on each CPU?
 	 */
 	blast_dcache();
+	return false;
 }
 
 /*

Index: src/sys/arch/sun2/include/pmap.h
diff -u src/sys/arch/sun2/include/pmap.h:1.27 src/sys/arch/sun2/include/pmap.h:1.28
--- src/sys/arch/sun2/include/pmap.h:1.27	Sat Feb  1 06:17:11 2020
+++ src/sys/arch/sun2/include/pmap.h	Sat Mar 14 14:05:43 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.27 2020/02/01 06:17:11 tsutsui Exp $	*/
+/*	$NetBSD: pmap.h,v 1.28 2020/03/14 14:05:43 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -72,10 +72,11 @@ extern vaddr_t pmap_map(vaddr_t, paddr_t
 /* Extract the PMEG for a given physical address. */
 extern int _pmap_extract_pmeg(pmap_t, vaddr_t);
 
-static __inline void
+static __inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 /*

Index: src/sys/arch/sun3/include/pmap3.h
diff -u src/sys/arch/sun3/include/pmap3.h:1.50 src/sys/arch/sun3/include/pmap3.h:1.51
--- src/sys/arch/sun3/include/pmap3.h:1.50	Sat Jan 18 20:47:15 2020
+++ src/sys/arch/sun3/include/pmap3.h	Sat Mar 14 14:05:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap3.h,v 1.50 2020/01/18 20:47:15 tsutsui Exp $	*/
+/*	$NetBSD: pmap3.h,v 1.51 2020/03/14 14:05:44 ad Exp $	*/
 
 /*-
  * Copyright (c) 1996 The NetBSD Foundation, Inc.
@@ -67,10 +67,11 @@ extern segsz_t pmap_wired_pages(pmap_t);
 /* Map a given physical region to a virtual region */
 extern vaddr_t pmap_map(vaddr_t, paddr_t, paddr_t, int);
 
-static __inline void
+static __inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 /*

Index: src/sys/arch/sun3/include/pmap3x.h
diff -u src/sys/arch/sun3/include/pmap3x.h:1.30 src/sys/arch/sun3/include/pmap3x.h:1.31
--- src/sys/arch/sun3/include/pmap3x.h:1.30	Sat Jan 18 20:47:15 2020
+++ src/sys/arch/sun3/include/pmap3x.h	Sat Mar 14 14:05:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap3x.h,v 1.30 2020/01/18 20:47:15 tsutsui Exp $	*/
+/*	$NetBSD: pmap3x.h,v 1.31 2020/03/14 14:05:44 ad Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -56,10 +56,11 @@ segsz_t pmap_count(pmap_t, int);
 /* Map a given physical region to a virtual region */
 vaddr_t pmap_map(vaddr_t, paddr_t, paddr_t, int);
 
-static __inline void
+static __inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 /*

Index: src/sys/arch/usermode/usermode/pmap.c
diff -u src/sys/arch/usermode/usermode/pmap.c:1.114 src/sys/arch/usermode/usermode/pmap.c:1.115
--- src/sys/arch/usermode/usermode/pmap.c:1.114	Sun Sep 16 09:25:47 2018
+++ src/sys/arch/usermode/usermode/pmap.c	Sat Mar 14 14:05:44 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.114 2018/09/16 09:25:47 skrll Exp $ */
+/* $NetBSD: pmap.c,v 1.115 2020/03/14 14:05:44 ad Exp $ */
 
 /*-
  * Copyright (c) 2011 Reinoud Zandijk <rein...@netbsd.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.114 2018/09/16 09:25:47 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.115 2020/03/14 14:05:44 ad Exp $");
 
 #include "opt_memsize.h"
 #include "opt_kmempages.h"
@@ -1030,7 +1030,7 @@ pmap_remove(pmap_t pmap, vaddr_t sva, va
 	splx(s);
 }
 
-void
+bool
 pmap_remove_all(pmap_t pmap)
 {
 	/* just a hint that all the entries are to be removed */
@@ -1038,7 +1038,7 @@ pmap_remove_all(pmap_t pmap)
 
 	/* we dont do anything with the kernel pmap */
 	if (pmap == pmap_kernel())
-		return;
+		return false;
 
 #if 0
 	/* remove all mappings in one-go; not needed */
@@ -1050,6 +1050,7 @@ pmap_remove_all(pmap_t pmap)
 	thunk_msync(VM_MIN_ADDRESS, VM_MAXUSER_ADDRESS - VM_MIN_ADDRESS,
 		THUNK_MS_SYNC | THUNK_MS_INVALIDATE);
 #endif
+	return false;
 }
 
 void

Index: src/sys/arch/vax/include/pmap.h
diff -u src/sys/arch/vax/include/pmap.h:1.80 src/sys/arch/vax/include/pmap.h:1.81
--- src/sys/arch/vax/include/pmap.h:1.80	Tue May 24 23:30:30 2011
+++ src/sys/arch/vax/include/pmap.h	Sat Mar 14 14:05:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.80 2011/05/24 23:30:30 matt Exp $	   */
+/*	$NetBSD: pmap.h,v 1.81 2020/03/14 14:05:44 ad Exp $	   */
 
 /* 
  * Copyright (c) 1991 Regents of the University of California.
@@ -258,10 +258,11 @@ pmap_protect(pmap_t pmap, vaddr_t start,
 		pmap_protect_long(pmap, start, end, prot);
 }
 
-static __inline void
+static __inline bool
 pmap_remove_all(struct pmap *pmap)
 {
 	/* Nothing. */
+	return false;
 }
 
 /* Routines that are best to define as macros */

Index: src/sys/arch/x86/include/pmap.h
diff -u src/sys/arch/x86/include/pmap.h:1.111 src/sys/arch/x86/include/pmap.h:1.112
--- src/sys/arch/x86/include/pmap.h:1.111	Tue Mar 10 22:38:41 2020
+++ src/sys/arch/x86/include/pmap.h	Sat Mar 14 14:05:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.111 2020/03/10 22:38:41 ad Exp $	*/
+/*	$NetBSD: pmap.h,v 1.112 2020/03/14 14:05:44 ad Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -366,7 +366,7 @@ bool		pmap_test_attrs(struct vm_page *, 
 void		pmap_write_protect(struct pmap *, vaddr_t, vaddr_t, vm_prot_t);
 void		pmap_load(void);
 paddr_t		pmap_init_tmp_pgtbl(paddr_t);
-void		pmap_remove_all(struct pmap *);
+bool		pmap_remove_all(struct pmap *);
 void		pmap_ldt_cleanup(struct lwp *);
 void		pmap_ldt_sync(struct pmap *);
 void		pmap_kremove_local(vaddr_t, vsize_t);

Index: src/sys/arch/x86/x86/pmap.c
diff -u src/sys/arch/x86/x86/pmap.c:1.364 src/sys/arch/x86/x86/pmap.c:1.365
--- src/sys/arch/x86/x86/pmap.c:1.364	Sat Mar 14 05:19:50 2020
+++ src/sys/arch/x86/x86/pmap.c	Sat Mar 14 14:05:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.364 2020/03/14 05:19:50 maxv Exp $	*/
+/*	$NetBSD: pmap.c,v 1.365 2020/03/14 14:05:44 ad Exp $	*/
 
 /*
  * Copyright (c) 2008, 2010, 2016, 2017, 2019, 2020 The NetBSD Foundation, Inc.
@@ -130,7 +130,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.364 2020/03/14 05:19:50 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.365 2020/03/14 14:05:44 ad Exp $");
 
 #include "opt_user_ldt.h"
 #include "opt_lockdebug.h"
@@ -2700,7 +2700,7 @@ pmap_destroy(struct pmap *pmap)
  * pmap_remove_all: pmap is being torn down by the current thread.
  * avoid unnecessary invalidations.
  */
-void
+bool
 pmap_remove_all(struct pmap *pmap)
 {
 
@@ -2710,6 +2710,7 @@ pmap_remove_all(struct pmap *pmap)
 	 */
 	KASSERT(pmap->pm_remove_all == NULL);
 	pmap->pm_remove_all = curlwp;
+	return false;
 }
 
 #if defined(PMAP_FORK)

Index: src/sys/uvm/uvm_pmap.h
diff -u src/sys/uvm/uvm_pmap.h:1.39 src/sys/uvm/uvm_pmap.h:1.40
--- src/sys/uvm/uvm_pmap.h:1.39	Sat May 19 15:03:26 2018
+++ src/sys/uvm/uvm_pmap.h	Sat Mar 14 14:05:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_pmap.h,v 1.39 2018/05/19 15:03:26 jdolecek Exp $	*/
+/*	$NetBSD: uvm_pmap.h,v 1.40 2020/03/14 14:05:44 ad Exp $	*/
 
 /*
  * Copyright (c) 1991, 1993
@@ -190,7 +190,7 @@ void		pmap_reference(pmap_t);
 #if !defined(pmap_remove)
 void		pmap_remove(pmap_t, vaddr_t, vaddr_t);
 #endif
-void		pmap_remove_all(struct pmap *);
+bool		pmap_remove_all(struct pmap *);
 #if !defined(pmap_update)
 void		pmap_update(pmap_t);
 #endif

Index: src/sys/uvm/pmap/pmap.c
diff -u src/sys/uvm/pmap/pmap.c:1.47 src/sys/uvm/pmap/pmap.c:1.48
--- src/sys/uvm/pmap/pmap.c:1.47	Thu Mar 12 23:10:27 2020
+++ src/sys/uvm/pmap/pmap.c	Sat Mar 14 14:05:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.47 2020/03/12 23:10:27 thorpej Exp $	*/
+/*	$NetBSD: pmap.c,v 1.48 2020/03/14 14:05:44 ad 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.47 2020/03/12 23:10:27 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.48 2020/03/14 14:05:44 ad Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1489,7 +1489,7 @@ pmap_kremove(vaddr_t va, vsize_t len)
 	UVMHIST_LOG(pmaphist, " <-- done", 0, 0, 0, 0);
 }
 
-void
+bool
 pmap_remove_all(struct pmap *pmap)
 {
 	UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist);
@@ -1524,6 +1524,7 @@ pmap_remove_all(struct pmap *pmap)
 	kpreempt_enable();
 
 	UVMHIST_LOG(pmaphist, " <-- done", 0, 0, 0, 0);
+	return false;
 }
 
 /*

Reply via email to