Module Name: src Committed By: thorpej Date: Tue Dec 5 15:58:32 UTC 2023
Modified Files: src/sys/dev/pci: btvmeii.c 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.26 -r1.27 src/sys/dev/pci/btvmeii.c 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/btvmeii.c diff -u src/sys/dev/pci/btvmeii.c:1.26 src/sys/dev/pci/btvmeii.c:1.27 --- src/sys/dev/pci/btvmeii.c:1.26 Sat Aug 7 16:19:14 2021 +++ src/sys/dev/pci/btvmeii.c Tue Dec 5 15:58:32 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: btvmeii.c,v 1.26 2021/08/07 16:19:14 thorpej Exp $ */ +/* $NetBSD: btvmeii.c,v 1.27 2023/12/05 15:58:32 thorpej Exp $ */ /* * Copyright (c) 1999 @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: btvmeii.c,v 1.26 2021/08/07 16:19:14 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: btvmeii.c,v 1.27 2023/12/05 15:58:32 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -44,8 +44,8 @@ __KERNEL_RCSID(0, "$NetBSD: btvmeii.c,v #include <dev/pci/pcidevs.h> #include <sys/bus.h> -#include <sys/malloc.h> -#include <sys/extent.h> +#include <sys/kmem.h> +#include <sys/vmem.h> #include <dev/pci/ppbreg.h> @@ -110,8 +110,7 @@ struct b3_2706_softc { int windowused[8]; struct b3_2706_vmemaprescs vmemaprescs[8]; - struct extent *vmeext; - char vmemap[EXTENT_FIXED_STORAGE_SIZE(8)]; + vmem_t *vme_arena; struct vme_chipset_tag sc_vct; @@ -255,10 +254,16 @@ b3_2706_attach(device_t parent, device_t for (i = 0; i < 8; i++) { sc->windowused[i] = 0; } - sc->vmeext = extent_create("pcivme", sc->vmepbase, - sc->vmepbase + 32*1024*1024 - 1, M_DEVBUF, - sc->vmemap, sizeof(sc->vmemap), - EX_NOCOALESCE); + sc->vme_arena = vmem_create("pcivme", + sc->vmepbase, /* base */ + 32*1024*1024, /* size */ + 1, /* quantum */ + NULL, /* allocfn */ + NULL, /* releasefn */ + NULL, /* source */ + 0, /* qcache_max */ + VM_SLEEP, + IPL_NONE); sc->sc_vct.cookie = self; sc->sc_vct.vct_probe = b3_2706_vme_probe; @@ -285,8 +290,9 @@ int b3_2706_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) { int idx, i, wnd, res; - unsigned long boundary, maplen, pcibase; + unsigned long boundary, maplen; vme_addr_t vmebase, vmeend; + vmem_addr_t pcibase; static int windoworder[8] = {1, 2, 3, 5, 6, 7, 0, 4}; /* prefer windows with fine granularity for small mappings */ @@ -315,7 +321,15 @@ b3_2706_map_vme(void *vsc, vme_addr_t vm /* bytes in outgoing window required */ maplen = vmeend - vmebase + boundary; - if (extent_alloc(sc->vmeext, maplen, boundary, 0, EX_FAST, &pcibase)) { + if (vmem_xalloc(sc->vme_arena, + maplen, /* size */ + boundary, /* align */ + 0, /* phase */ + 0, /* boundary */ + VMEM_ADDR_MIN, /* minaddr */ + VMEM_ADDR_MAX, /* maxaddr */ + VM_NOSLEEP, + &pcibase)) { sc->windowused[wnd] = 0; return (ENOMEM); } @@ -323,7 +337,7 @@ b3_2706_map_vme(void *vsc, vme_addr_t vm res = univ_pci_mapvme(&sc->univdata, wnd, vmebase, maplen, am, datasizes, pcibase); if (res) { - extent_free(sc->vmeext, pcibase, maplen, 0); + vmem_xfree(sc->vme_arena, pcibase, maplen); sc->windowused[wnd] = 0; return (res); } @@ -332,7 +346,7 @@ b3_2706_map_vme(void *vsc, vme_addr_t vm 0, handle); if (res) { univ_pci_unmapvme(&sc->univdata, wnd); - extent_free(sc->vmeext, pcibase, maplen, 0); + vmem_xfree(sc->vme_arena, pcibase, maplen); sc->windowused[wnd] = 0; return (res); } @@ -357,7 +371,7 @@ b3_2706_unmap_vme(void *vsc, vme_mapresc struct b3_2706_vmemaprescs *r = resc; bus_space_unmap(sc->vmet, r->handle, r->len); - extent_free(sc->vmeext, r->pcibase, r->maplen, 0); + vmem_xfree(sc->vme_arena, r->pcibase, r->maplen); if (!sc->windowused[r->wnd]) panic("b3_2706_unmap_vme: bad window"); @@ -389,14 +403,17 @@ b3_2706_vme_probe(void *vsc, vme_addr_t 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: @@ -433,7 +450,7 @@ b3_2706_establish_vmeint(void *vsc, vme_ long lv; int s; - ih = malloc(sizeof *ih, M_DEVBUF, M_WAITOK); + ih = kmem_alloc(sizeof *ih, KM_SLEEP); lv = (long)handle; /* XXX */ @@ -466,7 +483,7 @@ b3_2706_disestablish_vmeint(void *vsc, v TAILQ_REMOVE(&(sc->intrhdls), ih, ih_next); splx(s); - free(ih, M_DEVBUF); + kmem_free(ih, sizeof(*ih)); } void @@ -506,19 +523,9 @@ b3_2706_vmeint(void *vsc, int level, int } int -b3_2706_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_2706_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); }