On 24/04/21(Sat) 12:25, Mark Kettenis wrote:
> > Date: Sat, 24 Apr 2021 12:02:22 +0200
> > From: Martin Pieuchot <[email protected]>
> >
> > Diff below merge the two allocators into one and remove unused
> > alignment/boundary arguments. This is a small cleanup that helps
> > me keep track of the remaining allocators.
> >
> > ok?
>
> Not sure. Is uvm_km_kmemalloc() going to be replaced in the future?
I don't know yet.
> At the very least, you need to adjust the man page.
Sure.
> > Index: arch/arm/arm/pmap7.c
> > ===================================================================
> > RCS file: /cvs/src/sys/arch/arm/arm/pmap7.c,v
> > retrieving revision 1.61
> > diff -u -p -r1.61 pmap7.c
> > --- arch/arm/arm/pmap7.c 25 Mar 2021 04:12:00 -0000 1.61
> > +++ arch/arm/arm/pmap7.c 24 Apr 2021 09:53:11 -0000
> > @@ -2435,8 +2435,9 @@ pmap_bootstrap_pv_page_alloc(struct pool
> > return (rv);
> > }
> >
> > - new_page = uvm_km_kmemalloc(kernel_map, NULL, PAGE_SIZE,
> > - (flags & PR_WAITOK) ? 0 : UVM_KMF_NOWAIT);
> > + new_page = uvm_km_kmemalloc(kernel_map, NULL, PAGE_SIZE, 0,
> > + (flags & PR_WAITOK) ? 0 : UVM_KMF_NOWAIT, no_constraint.ucr_low,
> > + no_constraint.ucr_high, 0);
> >
> > last_bootstrap_page = new_page;
> > return ((void *)new_page);
> > Index: dev/pci/envy.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/pci/envy.c,v
> > retrieving revision 1.81
> > diff -u -p -r1.81 envy.c
> > --- dev/pci/envy.c 5 Jan 2020 01:07:58 -0000 1.81
> > +++ dev/pci/envy.c 24 Apr 2021 09:53:12 -0000
> > @@ -1834,9 +1834,9 @@ envy_allocm(void *self, int dir, size_t
> > #define ENVY_ALIGN 4
> > #define ENVY_MAXADDR ((1 << 28) - 1)
> >
> > - buf->addr = (caddr_t)uvm_km_kmemalloc_pla(kernel_map,
> > + buf->addr = (caddr_t)uvm_km_kmemalloc(kernel_map,
> > uvm.kernel_object, buf->size, 0, UVM_KMF_NOWAIT, 0,
> > - (paddr_t)ENVY_MAXADDR, 0, 0, 1);
> > + (paddr_t)ENVY_MAXADDR, 1);
> > if (buf->addr == NULL) {
> > DPRINTF("%s: unable to alloc dma segment\n", DEVNAME(sc));
> > goto err_ret;
> > Index: dev/pci/if_bce.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/pci/if_bce.c,v
> > retrieving revision 1.53
> > diff -u -p -r1.53 if_bce.c
> > --- dev/pci/if_bce.c 10 Jul 2020 13:22:20 -0000 1.53
> > +++ dev/pci/if_bce.c 24 Apr 2021 09:53:12 -0000
> > @@ -253,9 +253,9 @@ bce_attach(struct device *parent, struct
> > bce_reset(sc);
> >
> > /* Create the data DMA region and maps. */
> > - if ((sc->bce_data = (caddr_t)uvm_km_kmemalloc_pla(kernel_map,
> > + if ((sc->bce_data = (caddr_t)uvm_km_kmemalloc(kernel_map,
> > uvm.kernel_object, (BCE_NTXDESC + BCE_NRXDESC) * MCLBYTES, 0,
> > - UVM_KMF_NOWAIT, 0, (paddr_t)(0x40000000 - 1), 0, 0, 1)) == NULL) {
> > + UVM_KMF_NOWAIT, 0, (paddr_t)(0x40000000 - 1), 1)) == NULL) {
> > printf(": unable to alloc space for ring");
> > return;
> > }
> > Index: kern/kern_malloc.c
> > ===================================================================
> > RCS file: /cvs/src/sys/kern/kern_malloc.c,v
> > retrieving revision 1.145
> > diff -u -p -r1.145 kern_malloc.c
> > --- kern/kern_malloc.c 21 Apr 2021 10:02:05 -0000 1.145
> > +++ kern/kern_malloc.c 24 Apr 2021 09:53:12 -0000
> > @@ -228,12 +228,12 @@ malloc(size_t size, int type, int flags)
> > mtx_leave(&malloc_mtx);
> > npg = atop(round_page(allocsize));
> > s = splvm();
> > - va = (caddr_t)uvm_km_kmemalloc_pla(kmem_map, NULL,
> > + va = (caddr_t)uvm_km_kmemalloc(kmem_map, NULL,
> > (vsize_t)ptoa(npg), 0,
> > ((flags & M_NOWAIT) ? UVM_KMF_NOWAIT : 0) |
> > ((flags & M_CANFAIL) ? UVM_KMF_CANFAIL : 0),
> > no_constraint.ucr_low, no_constraint.ucr_high,
> > - 0, 0, 0);
> > + 0);
> > splx(s);
> > if (va == NULL) {
> > /*
> > Index: uvm/uvm_extern.h
> > ===================================================================
> > RCS file: /cvs/src/sys/uvm/uvm_extern.h,v
> > retrieving revision 1.157
> > diff -u -p -r1.157 uvm_extern.h
> > --- uvm/uvm_extern.h 12 Mar 2021 14:15:49 -0000 1.157
> > +++ uvm/uvm_extern.h 24 Apr 2021 09:53:12 -0000
> > @@ -297,11 +297,9 @@ int uvm_io(vm_map_t, struct uio *,
> > int
> > vaddr_t uvm_km_alloc1(vm_map_t, vsize_t, vsize_t,
> > boolean_t);
> > void uvm_km_free(vm_map_t, vaddr_t, vsize_t);
> > void uvm_km_free_wakeup(vm_map_t, vaddr_t, vsize_t);
> > -vaddr_t uvm_km_kmemalloc_pla(struct vm_map *,
> > +vaddr_t uvm_km_kmemalloc(struct vm_map *,
> > struct uvm_object *, vsize_t, vsize_t, int,
> > - paddr_t, paddr_t, paddr_t, paddr_t, int);
> > -#define uvm_km_kmemalloc(map, obj, sz, flags)
> > \
> > - uvm_km_kmemalloc_pla(map, obj, sz, 0, flags, 0, (paddr_t)-1, 0, 0, 0)
> > + paddr_t, paddr_t, int);
> > vaddr_t uvm_km_valloc(vm_map_t, vsize_t);
> > vaddr_t uvm_km_valloc_try(vm_map_t, vsize_t);
> > vaddr_t uvm_km_valloc_wait(vm_map_t, vsize_t);
> > Index: uvm/uvm_glue.c
> > ===================================================================
> > RCS file: /cvs/src/sys/uvm/uvm_glue.c,v
> > retrieving revision 1.80
> > diff -u -p -r1.80 uvm_glue.c
> > --- uvm/uvm_glue.c 26 Mar 2021 13:40:05 -0000 1.80
> > +++ uvm/uvm_glue.c 24 Apr 2021 09:53:12 -0000
> > @@ -266,10 +266,10 @@ uvm_uarea_alloc(void)
> > {
> > vaddr_t uaddr;
> >
> > - uaddr = uvm_km_kmemalloc_pla(kernel_map, uvm.kernel_object, USPACE,
> > + uaddr = uvm_km_kmemalloc(kernel_map, uvm.kernel_object, USPACE,
> > USPACE_ALIGN, UVM_KMF_ZERO,
> > no_constraint.ucr_low, no_constraint.ucr_high,
> > - 0, 0, USPACE/PAGE_SIZE);
> > + USPACE/PAGE_SIZE);
> >
> > return (uaddr);
> > }
> > Index: uvm/uvm_km.c
> > ===================================================================
> > RCS file: /cvs/src/sys/uvm/uvm_km.c,v
> > retrieving revision 1.143
> > diff -u -p -r1.143 uvm_km.c
> > --- uvm/uvm_km.c 26 Mar 2021 13:40:05 -0000 1.143
> > +++ uvm/uvm_km.c 24 Apr 2021 09:53:12 -0000
> > @@ -313,14 +313,13 @@ uvm_km_pgremove_intrsafe(vaddr_t start,
> > * => we return KVA of memory allocated
> > * => flags: NOWAIT, VALLOC - just allocate VA, TRYLOCK - fail if we can't
> > * lock the map
> > - * => low, high, alignment, boundary, nsegs are the corresponding
> > parameters
> > + * => low, high, nsegs are the corresponding parameters
> > * to uvm_pglistalloc
> > * => flags: ZERO - correspond to uvm_pglistalloc flags
> > */
> > vaddr_t
> > -uvm_km_kmemalloc_pla(struct vm_map *map, struct uvm_object *obj, vsize_t
> > size,
> > - vsize_t valign, int flags, paddr_t low, paddr_t high, paddr_t
> > alignment,
> > - paddr_t boundary, int nsegs)
> > +uvm_km_kmemalloc(struct vm_map *map, struct uvm_object *obj, vsize_t size,
> > + vsize_t valign, int flags, paddr_t low, paddr_t high, int nsegs)
> > {
> > vaddr_t kva, loopva;
> > voff_t offset;
> > @@ -372,8 +371,7 @@ uvm_km_kmemalloc_pla(struct vm_map *map,
> > pla_flags |= UVM_PLA_WAITOK;
> > if (flags & UVM_KMF_ZERO)
> > pla_flags |= UVM_PLA_ZERO;
> > - if (uvm_pglistalloc(size, low, high, alignment, boundary, &pgl, nsegs,
> > - pla_flags) != 0) {
> > + if (uvm_pglistalloc(size, low, high, 0, 0, &pgl, nsegs, pla_flags) !=
> > 0) {
> > /* Failed. */
> > uvm_unmap(map, kva, kva + size);
> > return (0);
> >
> >