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