Download raw body.
Kill uvm_km_alloc(9) & co
Can we slap an #ifdef __i386 around the uvm_km_zalloc() declaration
and definition, so they don't come back elsewhere?
ok guenther@ regardless
On Fri, Aug 23, 2024 at 8:13 AM Martin Pieuchot <mpi@openbsd.org> wrote:
>
> 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