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) \

Reply via email to