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 <[email protected]>
@@ -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 <[email protected]>
@@ -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;
}
/*