Index | Thread | Search

From:
Martin Pieuchot <mpi@openbsd.org>
Subject:
Kill uvm_km_alloc(9) & co
To:
tech@openbsd.org
Date:
Fri, 23 Aug 2024 17:11:54 +0200

Download raw body.

Thread
Remove definitions for uvm_km_alloc(9) and uvm_km_alloc1(9).  Leave
uvm_km_zalloc(9) around for now.  It is only used by i386's pmap.

Remove documentation for no longer existing or mostly unused allocators.

ok?

Index: sys/uvm/uvm_extern.h
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_extern.h,v
diff -u -p -r1.175 uvm_extern.h
--- sys/uvm/uvm_extern.h	24 Jul 2024 12:17:31 -0000	1.175
+++ sys/uvm/uvm_extern.h	21 Aug 2024 09:46:19 -0000
@@ -256,10 +256,6 @@ extern struct vm_map *phys_map;
 /* base of kernel virtual memory */
 extern vaddr_t vm_min_kernel_address;
 
-/* zalloc zeros memory, alloc does not */
-#define uvm_km_zalloc(MAP,SIZE) uvm_km_alloc1(MAP,SIZE,0,TRUE)
-#define uvm_km_alloc(MAP,SIZE)  uvm_km_alloc1(MAP,SIZE,0,FALSE)
-
 #define vm_resident_count(vm) (pmap_resident_count((vm)->vm_map.pmap))
 
 struct plimit;
@@ -291,7 +287,7 @@ int			uvm_io(vm_map_t, struct uio *, int
 
 #define	UVM_IO_FIXPROT	0x01
 
-vaddr_t			uvm_km_alloc1(vm_map_t, vsize_t, vsize_t, boolean_t);
+vaddr_t			uvm_km_zalloc(vm_map_t, vsize_t, vsize_t);
 void			uvm_km_free(vm_map_t, vaddr_t, vsize_t);
 vaddr_t			uvm_km_kmemalloc_pla(struct vm_map *,
 			    struct uvm_object *, vsize_t, vsize_t, int,
Index: sys/uvm/uvm_km.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_km.c,v
diff -u -p -r1.152 uvm_km.c
--- sys/uvm/uvm_km.c	27 Mar 2024 15:41:40 -0000	1.152
+++ sys/uvm/uvm_km.c	21 Aug 2024 09:53:48 -0000
@@ -117,10 +117,10 @@
  * address minus the vm_map_min(kernel_map).
  * example:
  *   suppose kernel_map starts at 0xf8000000 and the kernel does a
- *   uvm_km_alloc(kernel_map, PAGE_SIZE) [allocate 1 wired down page in the
- *   kernel map].    if uvm_km_alloc returns virtual address 0xf8235000,
- *   then that means that the page at offset 0x235000 in kernel_object is
- *   mapped at 0xf8235000.   
+ *   km_alloc(PAGE_SIZE, &kv_any, &kp_none, &kd_waitok)) [allocate 1 wired
+ *   down page in the kernel map].    if km_alloc() returns virtual address
+ *   0xf8235000, then that means that the page at offset 0x235000 in
+ *   kernel_object is mapped at 0xf8235000.
  *
  * kernel objects have one other special property: when the kernel virtual
  * memory mapping them is unmapped, the backing memory in the object is
@@ -434,12 +434,12 @@ uvm_km_free(struct vm_map *map, vaddr_t 
 }
 
 /*
- * uvm_km_alloc1: allocate wired down memory in the kernel map.
+ * uvm_km_zalloc: allocate wired down memory in the kernel map.
  *
  * => we can sleep if needed
  */
 vaddr_t
-uvm_km_alloc1(struct vm_map *map, vsize_t size, vsize_t align, boolean_t zeroit)
+uvm_km_zalloc(struct vm_map *map, vsize_t size, vsize_t align)
 {
 	vaddr_t kva, loopva;
 	voff_t offset;
@@ -483,7 +483,7 @@ uvm_km_alloc1(struct vm_map *map, vsize_
 				uvm_unmap(map, kva, loopva - kva);
 				return (0);
 			} else {
-				uvm_wait("km_alloc1w");	/* wait for memory */
+				uvm_wait("km_zallocw");	/* wait for memory */
 				continue;
 			}
 		}
@@ -501,13 +501,12 @@ uvm_km_alloc1(struct vm_map *map, vsize_
 		size -= PAGE_SIZE;
 	}
 	pmap_update(map->pmap);
-	
+
 	/*
 	 * zero on request (note that "size" is now zero due to the above loop
 	 * so we need to subtract kva from loopva to reconstruct the size).
 	 */
-	if (zeroit)
-		memset((caddr_t)kva, 0, loopva - kva);
+	memset((caddr_t)kva, 0, loopva - kva);
 
 	return kva;
 }
Index: share/man/man9/uvm_km_alloc.9
===================================================================
RCS file: /cvs/src/share/man/man9/uvm_km_alloc.9,v
diff -u -p -r1.2 uvm_km_alloc.9
--- share/man/man9/uvm_km_alloc.9	5 Dec 2019 15:58:27 -0000	1.2
+++ share/man/man9/uvm_km_alloc.9	23 Aug 2024 15:05:51 -0000
@@ -26,103 +26,20 @@
 .\" SUCH DAMAGE.
 .\"
 .Dd $Mdocdate: December 5 2019 $
-.Dt UVM_KM_ALLOC 9
+.Dt UVM_KM_SUBALLOC 9
 .Os
 .Sh NAME
-.Nm uvm_km_alloc ,
-.Nm uvm_km_zalloc ,
-.Nm uvm_km_alloc1 ,
-.Nm uvm_km_kmemalloc ,
-.Nm uvm_km_valloc ,
-.Nm uvm_km_valloc_wait ,
 .Nm uvm_km_suballoc ,
-.Nm uvm_km_free ,
-.Nm uvm_km_free_wakeup
+.Nm uvm_km_free
 .Nd raw kernel memory or address space allocator
 .Sh SYNOPSIS
 .In sys/param.h
 .In uvm/uvm.h
-.Ft vaddr_t
-.Fn uvm_km_alloc "vm_map_t map" "vsize_t size"
-.Ft vaddr_t
-.Fn uvm_km_zalloc "vm_map_t map" "vsize_t size"
-.Ft vaddr_t
-.Fn uvm_km_alloc1 "vm_map_t map" "vsize_t size" "vsize_t align" "boolean_t zeroit"
-.Ft vaddr_t
-.Fn uvm_km_kmemalloc "vm_map_t map" "struct uvm_object *obj" "vsize_t size" "int flags"
-.Ft vaddr_t
-.Fn uvm_km_valloc "vm_map_t map" "vsize_t size"
-.Ft vaddr_t
-.Fn uvm_km_valloc_wait "vm_map_t map" "vsize_t size"
-.Ft struct vm_map *
 .Fn uvm_km_suballoc "vm_map_t map" "vaddr_t *min" "vaddr_t *max " "vsize_t size" "int flags" "boolean_t fixed" "vm_map_t submap"
 .Ft void
 .Fn uvm_km_free "vm_map_t map" "vaddr_t addr" "vsize_t size"
-.Ft void
-.Fn uvm_km_free_wakeup "vm_map_t map" "vaddr_t addr" "vsize_t size"
 .Sh DESCRIPTION
 The
-.Fn uvm_km_alloc
-and
-.Fn uvm_km_zalloc
-functions allocate
-.Fa size
-bytes of wired kernel memory in map
-.Fa map .
-In addition to allocation,
-.Fn uvm_km_zalloc
-zeros the memory.
-Both of these functions are defined as macros in terms of
-.Fn uvm_km_alloc1 ,
-and should almost always be used in preference to
-.Fn uvm_km_alloc1 .
-.Pp
-The
-.Fn uvm_km_alloc1
-function allocates and returns
-.Fa size
-bytes of wired memory in the kernel map aligned to the
-.Fa align
-boundary, zeroing the memory if the
-.Fa zeroit
-argument is non-zero.
-.Pp
-The
-.Fn uvm_km_kmemalloc
-function allocates and returns
-.Fa size
-bytes of wired kernel memory into
-.Fa obj .
-The flags can be any of:
-.Bd -literal
-#define UVM_KMF_NOWAIT  0x1                     /* matches M_NOWAIT */
-#define UVM_KMF_VALLOC  0x2                     /* allocate VA only */
-#define UVM_KMF_TRYLOCK UVM_FLAG_TRYLOCK        /* try locking only */
-.Ed
-.Pp
-The
-.Dv UVM_KMF_NOWAIT
-flag causes
-.Fn uvm_km_kmemalloc
-to return immediately if no memory is available.
-.Dv UVM_KMF_VALLOC
-causes no pages to be allocated, only a virtual address.
-.Dv UVM_KMF_TRYLOCK
-causes
-.Fn uvm_km_kmemalloc
-to only try and not sleep when locking maps.
-.Pp
-The
-.Fn uvm_km_valloc
-and
-.Fn uvm_km_valloc_wait
-functions return a newly allocated zero-filled address in the kernel map of size
-.Fa size .
-.Fn uvm_km_valloc_wait
-will also wait for kernel memory to become available, if there is a
-memory shortage.
-.Pp
-The
 .Fn uvm_km_suballoc
 function allocates submap (with the specified
 .Fa flags ,
@@ -150,15 +67,9 @@ and
 .Pp
 The
 .Fn uvm_km_free
-and
-.Fn uvm_km_free_wakeup
-functions free
+function free
 .Fa size
 bytes of memory in the kernel map, starting at address
 .Fa addr .
-.Fn uvm_km_free_wakeup
-calls
-.Fn wakeup
-on the map before unlocking the map.
 .Sh SEE ALSO
 .Xr km_alloc 9
Index: share/man/man9/uvm_pagealloc.9
===================================================================
RCS file: /cvs/src/share/man/man9/uvm_pagealloc.9,v
diff -u -p -r1.2 uvm_pagealloc.9
--- share/man/man9/uvm_pagealloc.9	5 Dec 2019 15:58:27 -0000	1.2
+++ share/man/man9/uvm_pagealloc.9	21 Aug 2024 09:47:43 -0000
@@ -164,6 +164,3 @@ and
 .Fa end
 of the physical addresses of the segment, and the available start and end
 addresses of pages not already in use.
-.\" XXX expand on "system boot time"!
-.Sh SEE ALSO
-.Xr uvm_km_alloc 9