Module Name: src Committed By: thorpej Date: Tue Dec 5 14:58:01 UTC 2023
Modified Files: src/sys/dev/pci: btvmei.c btvmeivar.h Log Message: Use vmem(9) rather than extent(9) to manage VME<->PCI address translations. While here, malloc(9) -> kmem(9), and fix a couple of things that the newer compiler gripes about. To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/sys/dev/pci/btvmei.c cvs rdiff -u -r1.5 -r1.6 src/sys/dev/pci/btvmeivar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/btvmei.c diff -u src/sys/dev/pci/btvmei.c:1.35 src/sys/dev/pci/btvmei.c:1.36 --- src/sys/dev/pci/btvmei.c:1.35 Sat Aug 7 16:19:14 2021 +++ src/sys/dev/pci/btvmei.c Tue Dec 5 14:58:01 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: btvmei.c,v 1.35 2021/08/07 16:19:14 thorpej Exp $ */ +/* $NetBSD: btvmei.c,v 1.36 2023/12/05 14:58:01 thorpej Exp $ */ /* * Copyright (c) 1999 @@ -29,17 +29,17 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: btvmei.c,v 1.35 2021/08/07 16:19:14 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: btvmei.c,v 1.36 2023/12/05 14:58:01 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> #include <sys/device.h> #include <sys/proc.h> -#include <sys/malloc.h> +#include <sys/kmem.h> +#include <sys/vmem.h> #include <sys/bus.h> -#include <sys/extent.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> @@ -300,19 +300,38 @@ b3_617_init(struct b3_617_softc *sc) /* * set up scatter page allocation control */ - sc->vmeext = extent_create("pcivme", MR_PCI_VME, - MR_PCI_VME + MR_PCI_VME_SIZE - 1, - sc->vmemap, sizeof(sc->vmemap), - EX_NOCOALESCE); + sc->vme_arena = vmem_create("pcivme", + MR_PCI_VME, /* base */ + MR_PCI_VME_SIZE, /* size */ + 4, /* quantum */ + NULL, /* allocfn */ + NULL, /* releasefn */ + NULL, /* source */ + 0, /* qcache_max */ + VM_SLEEP, + IPL_NONE); #if 0 - sc->pciext = extent_create("vmepci", MR_VME_PCI, - MR_VME_PCI + MR_VME_PCI_SIZE - 1, - sc->pcimap, sizeof(sc->pcimap), - EX_NOCOALESCE); - sc->dmaext = extent_create("dmapci", MR_DMA_PCI, - MR_DMA_PCI + MR_DMA_PCI_SIZE - 1, - sc->dmamap, sizeof(sc->dmamap), - EX_NOCOALESCE); + sc->vme_arena = vmem_create("vmepci", + MR_VME_PCI, /* base */ + MR_VME_PCI_SIZE, /* size */ + 4, /* quantum */ + NULL, /* allocfn */ + NULL, /* releasefn */ + NULL, /* source */ + 0, /* qcache_max */ + VM_SLEEP, + IPL_NONE); + + sc->dma_arena = vmem_create("dmapci", + MR_DMA_PCI, /* base */ + MR_DMA_PCI_SIZE, /* size */ + XXX, /* quantum */ + NULL, /* allocfn */ + NULL, /* releasefn */ + NULL, /* source */ + 0, /* qcache_max */ + VM_SLEEP, + IPL_VM); #endif /* @@ -395,7 +414,8 @@ int b3_617_map_vme(void *vsc, vme_addr_t vmeaddr, vme_size_t len, vme_am_t am, vme_datasize_t datasizes, vme_swap_t swap, bus_space_tag_t *tag, bus_space_handle_t *handle, vme_mapresc_t *resc) { vme_addr_t vmebase, vmeend, va; - unsigned long maplen, first, i; + unsigned long maplen, i; + vmem_addr_t first; u_int32_t mapreg; bus_addr_t pcibase; int res; @@ -408,7 +428,7 @@ b3_617_map_vme(void *vsc, vme_addr_t vme /* bytes in scatter table required */ maplen = ((vmeend - vmebase) / VME_PAGESIZE + 1) * 4; - if (extent_alloc(sc->vmeext, maplen, 4, 0, EX_FAST, &first)) + if (vmem_alloc(sc->vme_arena, maplen, VM_BESTFIT | VM_SLEEP, &first)) return (ENOMEM); /* @@ -438,7 +458,7 @@ b3_617_map_vme(void *vsc, vme_addr_t vme if ((res = bus_space_map(sc->sc_vmet, pcibase, len, 0, handle))) { for (i = first; i < first + maplen; i += 4) write_mapmem(sc, i, MR_RAM_INVALID); - extent_free(sc->vmeext, first, maplen, 0); + vmem_free(sc->vme_arena, first, maplen); return (res); } @@ -447,7 +467,7 @@ b3_617_map_vme(void *vsc, vme_addr_t vme /* * save all data needed for later unmapping */ - r = malloc(sizeof(*r), M_DEVBUF, M_WAITOK); + r = kmem_alloc(sizeof(*r), KM_SLEEP); r->handle = *handle; r->len = len; r->firstpage = first; @@ -468,9 +488,8 @@ b3_617_unmap_vme(void *vsc, vme_mapresc_ for (i = r->firstpage; i < r->firstpage + r->maplen; i += 4) write_mapmem(sc, i, MR_RAM_INVALID); - extent_free(sc->vmeext, r->firstpage, r->maplen, 0); - - free(r, M_DEVBUF); + vmem_free(sc->vme_arena, r->firstpage, r->maplen); + kmem_free(r, sizeof(*r)); } int @@ -500,14 +519,17 @@ b3_617_vme_probe(void *vsc, vme_addr_t a switch (datasize) { case VME_D8: dummy = bus_space_read_1(tag, handle, i); + (void)dummy; i++; break; case VME_D16: dummy = bus_space_read_2(tag, handle, i); + (void)dummy; i += 2; break; case VME_D32: dummy = bus_space_read_4(tag, handle, i); + (void)dummy; i += 4; break; default: @@ -552,7 +574,7 @@ b3_617_establish_vmeint(void *vsc, vme_i long lv; int s; - ih = malloc(sizeof *ih, M_DEVBUF, M_WAITOK); + ih = kmem_alloc(sizeof *ih, KM_SLEEP); lv = (long)handle; /* XXX */ @@ -585,7 +607,7 @@ b3_617_disestablish_vmeint(void *vsc, vo TAILQ_REMOVE(&(sc->intrhdls), ih, ih_next); splx(s); - free(ih, M_DEVBUF); + kmem_free(ih, sizeof(*ih)); } int @@ -637,19 +659,9 @@ b3_617_intr(void *vsc) } int -b3_617_dmamap_create(vsc, len, am, datasize, swap, - nsegs, segsz, bound, - flags, mapp) - void *vsc; - vme_size_t len; - vme_am_t am; - vme_datasize_t datasize; - vme_swap_t swap; - int nsegs; - vme_size_t segsz; - vme_addr_t bound; - int flags; - bus_dmamap_t *mapp; +b3_617_dmamap_create(void *vsc, vme_size_t len, vme_am_t am, + vme_datasize_t datasize, vme_swap_t swap, int nsegs, vme_size_t segsz, + vme_addr_t bound, int flags, bus_dmamap_t *mapp) { return (EINVAL); } @@ -660,17 +672,9 @@ b3_617_dmamap_destroy(void *vsc, bus_dma } int -b3_617_dmamem_alloc(vsc, len, am, datasizes, swap, - segs, nsegs, rsegs, flags) - void *vsc; - vme_size_t len; - vme_am_t am; - vme_datasize_t datasizes; - vme_swap_t swap; - bus_dma_segment_t *segs; - int nsegs; - int *rsegs; - int flags; +b3_617_dmamem_alloc(void *vsc, vme_size_t len, vme_am_t am, + vme_datasize_t datasizes, vme_swap_t swap, bus_dma_segment_t *segs, + int nsegs, int *rsegs, int flags) { return (EINVAL); } Index: src/sys/dev/pci/btvmeivar.h diff -u src/sys/dev/pci/btvmeivar.h:1.5 src/sys/dev/pci/btvmeivar.h:1.6 --- src/sys/dev/pci/btvmeivar.h:1.5 Sat Oct 27 17:18:28 2012 +++ src/sys/dev/pci/btvmeivar.h Tue Dec 5 14:58:01 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: btvmeivar.h,v 1.5 2012/10/27 17:18:28 chs Exp $ */ +/* $NetBSD: btvmeivar.h,v 1.6 2023/12/05 14:58:01 thorpej Exp $ */ /* * Copyright (c) 1999 @@ -26,6 +26,8 @@ * */ +#include <sys/vmem.h> + struct b3_617_vmeintrhand { TAILQ_ENTRY(b3_617_vmeintrhand) ih_next; int (*ih_fun)(void*); @@ -61,11 +63,7 @@ struct b3_617_softc { /* * management of adapter mapping tables */ - /* max fragmentation of scatter tables */ -#define NVMEMAP 20 - - struct extent *vmeext; - char vmemap[EXTENT_FIXED_STORAGE_SIZE(NVMEMAP)]; + vmem_t *vme_arena; }; #define read_csr_byte(sc, reg) \