Module Name:    src
Committed By:   skrll
Date:           Fri Aug  7 07:19:45 UTC 2020

Modified Files:
        src/sys/arch/m68k/include: pmap_coldfire.h
        src/sys/arch/mips/include: pmap.h
        src/sys/arch/powerpc/include/booke: pmap.h
        src/sys/arch/riscv/include: pmap.h
        src/sys/uvm/pmap: pmap.c pmap.h pmap_segtab.c

Log Message:
Provide a pmap_segtab_deactivate for symmetry with pmap_segtab_activate
and use it in pmap_deactivate

Call pmap_md_xtab_{,de}activate from pmap_segtab_{,de}activate to be used
for PMAP_HWPAGEWALKER and any caches ops that might be required.

Provide empty (for now) pmap_md_xtab_{,de}activate functions on the
platforms that use sys/uvm/pmap


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/m68k/include/pmap_coldfire.h
cvs rdiff -u -r1.72 -r1.73 src/sys/arch/mips/include/pmap.h
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/powerpc/include/booke/pmap.h
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/riscv/include/pmap.h
cvs rdiff -u -r1.50 -r1.51 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.15 -r1.16 src/sys/uvm/pmap/pmap.h
cvs rdiff -u -r1.14 -r1.15 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/arch/m68k/include/pmap_coldfire.h
diff -u src/sys/arch/m68k/include/pmap_coldfire.h:1.2 src/sys/arch/m68k/include/pmap_coldfire.h:1.3
--- src/sys/arch/m68k/include/pmap_coldfire.h:1.2	Tue Mar 18 18:20:41 2014
+++ src/sys/arch/m68k/include/pmap_coldfire.h	Fri Aug  7 07:19:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_coldfire.h,v 1.2 2014/03/18 18:20:41 riastradh Exp $	*/
+/*	$NetBSD: pmap_coldfire.h,v 1.3 2020/08/07 07:19:45 skrll Exp $	*/
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -135,6 +135,20 @@ pmap_md_tlb_asid_max(void)
 {
 	return PMAP_TLB_NUM_PIDS - 1;
 }
+
+static inline void
+pmap_md_xtab_activate(struct pmap *pm, struct lwp *l)
+{
+
+	/* nothing */
+}
+
+static inline void
+pmap_md_xtab_deactivate(struct pmap *pm)
+{
+
+	/* nothing */
+}
 #endif
 
 #define	POOL_VTOPHYS(va)	((paddr_t)(vaddr_t)(va))

Index: src/sys/arch/mips/include/pmap.h
diff -u src/sys/arch/mips/include/pmap.h:1.72 src/sys/arch/mips/include/pmap.h:1.73
--- src/sys/arch/mips/include/pmap.h:1.72	Sun Jul 26 08:08:41 2020
+++ src/sys/arch/mips/include/pmap.h	Fri Aug  7 07:19:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.72 2020/07/26 08:08:41 simonb Exp $	*/
+/*	$NetBSD: pmap.h,v 1.73 2020/08/07 07:19:45 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -140,6 +140,21 @@ pmap_md_cache_prefer_mask(void)
 {
 	return MIPS_HAS_R4K_MMU ? mips_cache_info.mci_cache_prefer_mask : 0;
 }
+
+static inline void
+pmap_md_xtab_activate(struct pmap *pm, struct lwp *l)
+{
+
+	/* nothing */
+}
+
+static inline void
+pmap_md_xtab_deactivate(struct pmap *pm)
+{
+
+	/* nothing */
+}
+
 #endif /* __PMAP_PRIVATE */
 
 struct tlbmask {

Index: src/sys/arch/powerpc/include/booke/pmap.h
diff -u src/sys/arch/powerpc/include/booke/pmap.h:1.22 src/sys/arch/powerpc/include/booke/pmap.h:1.23
--- src/sys/arch/powerpc/include/booke/pmap.h:1.22	Mon Jul  6 09:34:17 2020
+++ src/sys/arch/powerpc/include/booke/pmap.h	Fri Aug  7 07:19:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.22 2020/07/06 09:34:17 rin Exp $	*/
+/*	$NetBSD: pmap.h,v 1.23 2020/08/07 07:19:45 skrll Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -154,6 +154,21 @@ pmap_md_ok_to_steal_p(const uvm_physseg_
 {
 	return true;
 }
+
+static __inline void
+pmap_md_xtab_activate(struct pmap *pm, struct lwp *l)
+{
+
+	/* nothing */
+}
+
+static __inline void
+pmap_md_xtab_deactivate(struct pmap *pm)
+{
+
+	/* nothing */
+}
+
 #endif
 
 #define	POOL_VTOPHYS(va)	((paddr_t)(vaddr_t)(va))

Index: src/sys/arch/riscv/include/pmap.h
diff -u src/sys/arch/riscv/include/pmap.h:1.4 src/sys/arch/riscv/include/pmap.h:1.5
--- src/sys/arch/riscv/include/pmap.h:1.4	Wed Mar 11 13:30:31 2020
+++ src/sys/arch/riscv/include/pmap.h	Fri Aug  7 07:19:45 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.4 2020/03/11 13:30:31 thorpej Exp $ */
+/* $NetBSD: pmap.h,v 1.5 2020/08/07 07:19:45 skrll Exp $ */
 
 /*
  * Copyright (c) 2014, 2019 The NetBSD Foundation, Inc.
@@ -163,6 +163,21 @@ pmap_md_tlb_asid_max(void)
 {
 	return PMAP_TLB_NUM_PIDS - 1;
 }
+
+static inline void
+pmap_md_xtab_activate(struct pmap *pm, struct lwp *l)
+{
+
+	/* nothing */
+}
+
+static inline void
+pmap_md_xtab_deactivate(struct pmap *pm)
+{
+
+	/* nothing */
+}
+
 #endif /* __PMAP_PRIVATE */
 #endif /* _KERNEL */
 

Index: src/sys/uvm/pmap/pmap.c
diff -u src/sys/uvm/pmap/pmap.c:1.50 src/sys/uvm/pmap/pmap.c:1.51
--- src/sys/uvm/pmap/pmap.c:1.50	Sat Jul 18 16:12:09 2020
+++ src/sys/uvm/pmap/pmap.c	Fri Aug  7 07:19:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.50 2020/07/18 16:12:09 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.51 2020/08/07 07:19:45 skrll 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.50 2020/07/18 16:12:09 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.51 2020/08/07 07:19:45 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -869,11 +869,8 @@ pmap_deactivate(struct lwp *l)
 	kpreempt_disable();
 	KASSERT(l == curlwp || l->l_cpu == curlwp->l_cpu);
 	pmap_tlb_miss_lock_enter();
-	curcpu()->ci_pmap_user_segtab = PMAP_INVALID_SEGTAB_ADDRESS;
-#ifdef _LP64
-	curcpu()->ci_pmap_user_seg0tab = NULL;
-#endif
 	pmap_tlb_asid_deactivate(pmap);
+	pmap_segtab_deactivate(pmap);
 	pmap_tlb_miss_lock_exit();
 	kpreempt_enable();
 

Index: src/sys/uvm/pmap/pmap.h
diff -u src/sys/uvm/pmap/pmap.h:1.15 src/sys/uvm/pmap/pmap.h:1.16
--- src/sys/uvm/pmap/pmap.h:1.15	Wed Jul  8 12:12:16 2020
+++ src/sys/uvm/pmap/pmap.h	Fri Aug  7 07:19:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.15 2020/07/08 12:12:16 skrll Exp $	*/
+/*	$NetBSD: pmap.h,v 1.16 2020/08/07 07:19:45 skrll Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -114,6 +114,7 @@ pt_entry_t *pmap_pte_reserve(struct pmap
 void pmap_pte_process(struct pmap *, vaddr_t, vaddr_t, pte_callback_t,
 	uintptr_t);
 void pmap_segtab_activate(struct pmap *, struct lwp *);
+void pmap_segtab_deactivate(struct pmap *);
 void pmap_segtab_init(struct pmap *);
 void pmap_segtab_destroy(struct pmap *, pte_callback_t, uintptr_t);
 extern kmutex_t pmap_segtab_lock;

Index: src/sys/uvm/pmap/pmap_segtab.c
diff -u src/sys/uvm/pmap/pmap_segtab.c:1.14 src/sys/uvm/pmap/pmap_segtab.c:1.15
--- src/sys/uvm/pmap/pmap_segtab.c:1.14	Mon Feb 24 12:20:30 2020
+++ src/sys/uvm/pmap/pmap_segtab.c	Fri Aug  7 07:19:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_segtab.c,v 1.14 2020/02/24 12:20:30 rin Exp $	*/
+/*	$NetBSD: pmap_segtab.c,v 1.15 2020/08/07 07:19:45 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.14 2020/02/24 12:20:30 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.15 2020/08/07 07:19:45 skrll Exp $");
 
 /*
  *	Manages physical address maps.
@@ -370,6 +370,7 @@ pmap_segtab_activate(struct pmap *pm, st
 {
 	if (l == curlwp) {
 		struct cpu_info * const ci = l->l_cpu;
+		pmap_md_xtab_activate(pm, l);
 		KASSERT(pm == l->l_proc->p_vmspace->vm_map.pmap);
 		if (pm == pmap_kernel()) {
 			ci->ci_pmap_user_segtab = PMAP_INVALID_SEGTAB_ADDRESS;
@@ -385,6 +386,20 @@ pmap_segtab_activate(struct pmap *pm, st
 	}
 }
 
+
+void
+pmap_segtab_deactivate(pmap_t pm)
+{
+
+	pmap_md_xtab_deactivate(pm);
+
+	curcpu()->ci_pmap_user_segtab = PMAP_INVALID_SEGTAB_ADDRESS;
+#ifdef _LP64
+	curcpu()->ci_pmap_user_seg0tab = NULL;
+#endif
+
+}
+
 /*
  *	Act on the given range of addresses from the specified map.
  *

Reply via email to