Download raw body.
Kill uvm_km_alloc(9) & co
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
Kill uvm_km_alloc(9) & co