Remove pmap_collect() when a no-op, define __HAVE_PMAP_COLLECT otherwise.
authormiod <miod@openbsd.org>
Sat, 10 Sep 2022 20:35:28 +0000 (20:35 +0000)
committermiod <miod@openbsd.org>
Sat, 10 Sep 2022 20:35:28 +0000 (20:35 +0000)
Use that define to shunt uvm_swapout_threads(), which is a noop when
pmap_collect() does nothing.

ok mpi@

17 files changed:
sys/arch/alpha/include/pmap.h
sys/arch/amd64/amd64/pmap.c
sys/arch/arm/arm/pmap7.c
sys/arch/arm64/arm64/pmap.c
sys/arch/hppa/hppa/pmap.c
sys/arch/hppa/include/param.h
sys/arch/m88k/include/pmap.h
sys/arch/mips64/include/pmap.h
sys/arch/powerpc/powerpc/pmap.c
sys/arch/powerpc64/powerpc64/pmap.c
sys/arch/riscv64/riscv64/pmap.c
sys/arch/sh/include/pmap.h
sys/arch/sparc64/include/pmap.h
sys/arch/sparc64/sparc64/pmap.c
sys/uvm/uvm_glue.c
sys/uvm/uvm_pdaemon.c
sys/uvm/uvm_pmap.h

index d611156..cfa4cc2 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.40 2016/04/20 05:24:18 landry Exp $ */
+/* $OpenBSD: pmap.h,v 1.41 2022/09/10 20:35:28 miod Exp $ */
 /* $NetBSD: pmap.h,v 1.37 2000/11/19 03:16:35 thorpej Exp $ */
 
 /*-
@@ -197,6 +197,8 @@ extern      pt_entry_t *VPT;                /* Virtual Page Table */
 
 paddr_t vtophys(vaddr_t);
 
+#define        __HAVE_PMAP_COLLECT
+
 /* Machine-specific functions. */
 void   pmap_bootstrap(paddr_t ptaddr, u_int maxasn, u_long ncpuids);
 int    pmap_emulate_reference(struct proc *p, vaddr_t v, int user, int type);
index ad35db3..0078b47 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pmap.c,v 1.153 2022/06/30 13:51:24 mlarkin Exp $      */
+/*     $OpenBSD: pmap.c,v 1.154 2022/09/10 20:35:28 miod Exp $ */
 /*     $NetBSD: pmap.c,v 1.3 2003/05/08 18:13:13 thorpej Exp $ */
 
 /*
@@ -2206,6 +2206,7 @@ pmap_unwire(struct pmap *pmap, vaddr_t va)
 #endif
 }
 
+#if 0
 /*
  * pmap_collect: free resources held by a pmap
  *
@@ -2221,10 +2222,10 @@ pmap_collect(struct pmap *pmap)
         * for its entire address space.
         */
 
-/*     pmap_do_remove(pmap, VM_MIN_ADDRESS, VM_MAX_ADDRESS,
+       pmap_do_remove(pmap, VM_MIN_ADDRESS, VM_MAX_ADDRESS,
            PMAP_REMOVE_SKIPWIRED);
-*/
 }
+#endif
 
 /*
  * pmap_copy: copy mappings from one pmap to another
index c8844b5..d4eb442 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pmap7.c,v 1.63 2022/02/21 19:15:58 kettenis Exp $     */
+/*     $OpenBSD: pmap7.c,v 1.64 2022/09/10 20:35:28 miod Exp $ */
 /*     $NetBSD: pmap.c,v 1.147 2004/01/18 13:03:50 scw Exp $   */
 
 /*
@@ -1742,21 +1742,6 @@ dab_access(trapframe_t *tf, u_int fsr, u_int far, struct proc *p)
        return 0;
 }
 
-/*
- * pmap_collect: free resources held by a pmap
- *
- * => optional function.
- * => called when a process is swapped out to free memory.
- */
-void
-pmap_collect(pmap_t pm)
-{
-       /*
-        * Nothing to do.
-        * We don't even need to free-up the process' L1.
-        */
-}
-
 /*
  * Routine:    pmap_proc_iflush
  *
index 0fe4b83..49a6308 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.c,v 1.84 2022/01/10 09:20:27 kettenis Exp $ */
+/* $OpenBSD: pmap.c,v 1.85 2022/09/10 20:35:28 miod Exp $ */
 /*
  * Copyright (c) 2008-2009,2014-2016 Dale Rahn <drahn@dalerahn.com>
  *
@@ -855,24 +855,6 @@ pmap_fill_pte(pmap_t pm, vaddr_t va, paddr_t pa, struct pte_desc *pted,
        pted->pted_pte |= flags & (PROT_READ|PROT_WRITE|PROT_EXEC);
 }
 
-/*
- * Garbage collects the physical map system for pages which are
- * no longer used. Success need not be guaranteed -- that is, there
- * may well be pages which are not referenced, but others may be collected
- * Called by the pageout daemon when pages are scarce.
- */
-void
-pmap_collect(pmap_t pm)
-{
-       /* This could return unused v->p table layers which
-        * are empty.
-        * could malicious programs allocate memory and eat
-        * these wired pages? These are allocated via pool.
-        * Are there pool functions which could be called
-        * to lower the pool usage here?
-        */
-}
-
 /*
  * Fill the given physical page with zeros.
  */
index b1dbcf4..657dfff 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pmap.c,v 1.177 2021/09/14 16:16:51 kettenis Exp $     */
+/*     $OpenBSD: pmap.c,v 1.178 2022/09/10 20:35:28 miod Exp $ */
 
 /*
  * Copyright (c) 1998-2004 Michael Shalayeff
@@ -734,13 +734,6 @@ pmap_reference(struct pmap *pmap)
        atomic_inc_int(&pmap->pm_obj.uo_refs);
 }
 
-void
-pmap_collect(struct pmap *pmap)
-{
-       DPRINTF(PDB_FOLLOW|PDB_PMAP, ("pmap_collect(%p)\n", pmap));
-       /* nothing yet */
-}
-
 int
 pmap_enter(struct pmap *pmap, vaddr_t va, paddr_t pa, vm_prot_t prot, int flags)
 {
index c53885b..355b349 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: param.h,v 1.47 2018/09/14 13:58:20 claudio Exp $      */
+/*     $OpenBSD: param.h,v 1.48 2022/09/10 20:35:28 miod Exp $ */
 
 /*
  * Copyright (c) 1988-1994, The University of Utah and
@@ -66,6 +66,5 @@
 #endif /* _KERNEL */
 
 #define        MACHINE_STACK_GROWS_UP  1               /* stack grows to higher addresses */
-#define        __SWAP_BROKEN
 
 #endif /* _MACHINE_PARAM_H_ */
index f7b038e..3f35640 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pmap.h,v 1.26 2015/07/25 20:45:05 miod Exp $  */
+/*     $OpenBSD: pmap.h,v 1.27 2022/09/10 20:35:28 miod Exp $  */
 /*
  * Mach Operating System
  * Copyright (c) 1991 Carnegie Mellon University
@@ -80,6 +80,7 @@ int   pmap_translation_info(pmap_t, vaddr_t, paddr_t *, uint32_t *);
 #define        pmap_unmap_direct(va)           PHYS_TO_VM_PAGE((paddr_t)va)
 #define        __HAVE_PMAP_DIRECT
 #define        PMAP_STEAL_MEMORY
+#define        __HAVE_PMAP_COLLECT
 
 #endif /* _KERNEL */
 
index c58fa74..ea6cb72 100644 (file)
@@ -1,4 +1,4 @@
-/*      $OpenBSD: pmap.h,v 1.49 2021/05/01 16:11:11 visa Exp $ */
+/*      $OpenBSD: pmap.h,v 1.50 2022/09/10 20:35:28 miod Exp $ */
 
 /*
  * Copyright (c) 1987 Carnegie-Mellon University
@@ -170,6 +170,8 @@ void        pmap_page_cache(vm_page_t, u_int);
 vaddr_t        pmap_map_direct(vm_page_t);
 vm_page_t pmap_unmap_direct(vaddr_t);
 
+#define        __HAVE_PMAP_COLLECT
+
 /*
  * MD flags to pmap_enter:
  */
index fae4c8c..f27adad 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pmap.c,v 1.176 2022/02/07 23:20:09 gkoehler Exp $ */
+/*     $OpenBSD: pmap.c,v 1.177 2022/09/10 20:35:28 miod Exp $ */
 
 /*
  * Copyright (c) 2015 Martin Pieuchot
@@ -1051,24 +1051,6 @@ pmap_clear_attrs(struct vm_page *pg, u_int flagbit)
        return bits;
 }
 
-/*
- * Garbage collects the physical map system for pages which are 
- * no longer used. Success need not be guaranteed -- that is, there
- * may well be pages which are not referenced, but others may be collected
- * Called by the pageout daemon when pages are scarce.
- */
-void
-pmap_collect(pmap_t pm)
-{
-       /* This could return unused v->p table layers which 
-        * are empty.
-        * could malicious programs allocate memory and eat
-        * these wired pages? These are allocated via pool.
-        * Are there pool functions which could be called
-        * to lower the pool usage here?
-        */
-}
-
 /*
  * Fill the given physical page with zeros.
  */
index 9d19c54..2fc2a10 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pmap.c,v 1.57 2021/10/12 18:06:15 kettenis Exp $ */
+/*     $OpenBSD: pmap.c,v 1.58 2022/09/10 20:35:28 miod Exp $ */
 
 /*
  * Copyright (c) 2015 Martin Pieuchot
@@ -1464,11 +1464,6 @@ pmap_unwire(pmap_t pm, vaddr_t va)
        PMAP_VP_UNLOCK(pm);
 }
 
-void
-pmap_collect(pmap_t pm)
-{
-}
-
 void
 pmap_zero_page(struct vm_page *pg)
 {
index a1dcc20..d0413e0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pmap.c,v 1.22 2022/08/29 02:01:18 jsg Exp $   */
+/*     $OpenBSD: pmap.c,v 1.23 2022/09/10 20:35:29 miod Exp $  */
 
 /*
  * Copyright (c) 2019-2020 Brian Bamsch <bbamsch@google.com>
@@ -760,24 +760,6 @@ pmap_fill_pte(pmap_t pm, vaddr_t va, paddr_t pa, struct pte_desc *pted,
        pted->pted_pte |= flags & (PROT_READ|PROT_WRITE|PROT_EXEC);
 }
 
-/*
- * Garbage collects the physical map system for pages which are
- * no longer used. Success need not be guaranteed -- that is, there
- * may well be pages which are not referenced, but others may be collected
- * Called by the pageout daemon when pages are scarce.
- */
-void
-pmap_collect(pmap_t pm)
-{
-       /* This could return unused v->p table layers which
-        * are empty.
-        * could malicious programs allocate memory and eat
-        * these wired pages? These are allocated via pool.
-        * Are there pool functions which could be called
-        * to lower the pool usage here?
-        */
-}
-
 /*
  * Fill the given physical page with zeros.
  */
index 06b1c48..dff64bc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pmap.h,v 1.14 2015/02/15 21:34:33 miod Exp $  */
+/*     $OpenBSD: pmap.h,v 1.15 2022/09/10 20:35:29 miod Exp $  */
 /*     $NetBSD: pmap.h,v 1.28 2006/04/10 23:12:11 uwe Exp $    */
 
 /*-
@@ -64,7 +64,6 @@ void pmap_bootstrap(void);
 #define        pmap_deactivate(pmap)           do { /* nothing */ } while (0)
 #define        pmap_update(pmap)               do { /* nothing */ } while (0)
 #define        pmap_copy(dp,sp,d,l,s)          do { /* nothing */ } while (0)
-#define        pmap_collect(pmap)              do { /* nothing */ } while (0)
 #define        pmap_wired_count(pmap)          ((pmap)->pm_stats.wired_count)
 #define        pmap_resident_count(pmap)       ((pmap)->pm_stats.resident_count)
 
index c07d8c4..3941383 100644 (file)
@@ -177,6 +177,8 @@ void pmap_bootstrap(u_long, u_long, u_int, u_int);
 
 #define PMAP_GROWKERNEL         /* turn on pmap_growkernel interface */
 
+#define        __HAVE_PMAP_COLLECT
+
 /* SPARC specific? */
 void           pmap_redzone(void);
 int             pmap_dumpsize(void);
index 5e5b80d..3800557 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pmap.c,v 1.105 2022/09/08 17:44:48 miod Exp $ */
+/*     $OpenBSD: pmap.c,v 1.106 2022/09/10 20:35:29 miod Exp $ */
 /*     $NetBSD: pmap.c,v 1.107 2001/08/31 16:47:41 eeh Exp $   */
 /*
  * 
@@ -1546,7 +1546,6 @@ pmap_copy(struct pmap *dst_pmap, struct pmap *src_pmap, vaddr_t dst_addr,
 void
 pmap_collect(struct pmap *pm)
 {
-#if 1
        int i, j, k, n, m, s;
        paddr_t *pdir, *ptbl;
        /* This is a good place to scan the pmaps for page tables with
@@ -1584,7 +1583,6 @@ pmap_collect(struct pmap *pm)
                }
        }
        splx(s);
-#endif
 }
 
 void
index c37b247..9c45bfd 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uvm_glue.c,v 1.83 2022/03/12 08:11:07 mpi Exp $       */
+/*     $OpenBSD: uvm_glue.c,v 1.84 2022/09/10 20:35:29 miod Exp $      */
 /*     $NetBSD: uvm_glue.c,v 1.44 2001/02/06 19:54:44 eeh Exp $        */
 
 /* 
@@ -321,6 +321,8 @@ uvm_init_limits(struct plimit *limit0)
        limit0->pl_rlimit[RLIMIT_RSS].rlim_cur = ptoa(uvmexp.free);
 }
 
+#ifdef __HAVE_PMAP_COLLECT
+
 #ifdef DEBUG
 int    enableswap = 1;
 int    swapdebug = 0;
@@ -414,6 +416,8 @@ next_process:       ;
        }
 }
 
+#endif /* __HAVE_PMAP_COLLECT */
+
 /*
  * uvm_atopg: convert KVAs back to their page structures.
  */
index 350f95e..eeee533 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uvm_pdaemon.c,v 1.104 2022/08/31 09:26:04 mpi Exp $   */
+/*     $OpenBSD: uvm_pdaemon.c,v 1.105 2022/09/10 20:35:29 miod Exp $  */
 /*     $NetBSD: uvm_pdaemon.c,v 1.23 2000/08/20 10:24:14 bjh21 Exp $   */
 
 /*
@@ -890,7 +890,7 @@ uvmpd_scan(struct uvm_pmalloc *pma)
         */
        free = uvmexp.free - BUFPAGES_DEFICIT;
 
-#ifndef __SWAP_BROKEN
+#ifdef __HAVE_PMAP_COLLECT
        /*
         * swap out some processes if we are below our free target.
         * we need to unlock the page queues for this.
index e971573..88bcc0d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uvm_pmap.h,v 1.30 2022/08/07 19:39:25 miod Exp $      */
+/*     $OpenBSD: uvm_pmap.h,v 1.31 2022/09/10 20:35:29 miod Exp $      */
 /*     $NetBSD: uvm_pmap.h,v 1.1 2000/06/27 09:00:14 mrg Exp $ */
 
 /* 
@@ -126,7 +126,7 @@ boolean_t    pmap_clear_modify(struct vm_page *);
 boolean_t       pmap_clear_reference(struct vm_page *);
 #endif
 
-#if !defined(pmap_collect)
+#if !defined(pmap_collect) && defined(__HAVE_PMAP_COLLECT)
 void            pmap_collect(pmap_t);
 #endif
 #if !defined(pmap_copy)