Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 May 2003 14:35:19 +0200
From:      Dag-Erling Smorgrav <des@ofug.org>
To:        Scott Long <scottl@FreeBSD.org>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/alpha/alpha busdma_machdep.c src/sys/alpha/include bus.h src/sys/amd64/amd64 busdma_machdep.c src/sys/amd64/include bus_dma.h src/sys/i386/i386 busdma_machdep.c src/sys/i386/include bus_dma.h src/sys/sparc64/include bus.h iommuvar.h ...
Message-ID:  <xzpllwt3myg.fsf@flood.ping.uio.no>
In-Reply-To: <xzp7k8d52fj.fsf@flood.ping.uio.no> (Dag-Erling Smorgrav's message of "Mon, 26 May 2003 14:15:44 %2B0200")
References:  <200305260400.h4Q40qxI041677@repoman.freebsd.org> <xzp7k8d52fj.fsf@flood.ping.uio.no>

next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-=

Dag-Erling Smorgrav <des@ofug.org> writes:
> Scott Long <scottl@FreeBSD.org> writes:
> >   Log:
> >   De-orbit bus_dmamem_alloc_size().  It's a hack and was never used anyways.
> >   No need for it to pollute the 5.x API any further.
> Thanks a bunch for breaking sparc64...

You'll need (at least) the attached (untested) patch to fix it.

DES
-- 
Dag-Erling Smorgrav - des@ofug.org


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=sparc64.diff

Index: sparc64/bus_machdep.c
===================================================================
RCS file: /home/ncvs/src/sys/sparc64/sparc64/bus_machdep.c,v
retrieving revision 1.27
diff -u -r1.27 bus_machdep.c
--- sparc64/bus_machdep.c	10 Apr 2003 23:03:33 -0000	1.27
+++ sparc64/bus_machdep.c	26 May 2003 12:31:23 -0000
@@ -170,12 +170,8 @@
     struct uio *, bus_dmamap_callback2_t *, void *, int);
 static void nexus_dmamap_unload(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t);
 static void nexus_dmamap_sync(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t, int);
-static int nexus_dmamem_alloc_size(bus_dma_tag_t, bus_dma_tag_t, void **, int,
-    bus_dmamap_t *, u_long size);
 static int nexus_dmamem_alloc(bus_dma_tag_t, bus_dma_tag_t, void **, int,
     bus_dmamap_t *);
-static void nexus_dmamem_free_size(bus_dma_tag_t, bus_dma_tag_t, void *,
-    bus_dmamap_t, u_long size);
 static void nexus_dmamem_free(bus_dma_tag_t, bus_dma_tag_t, void *,
     bus_dmamap_t);
 
@@ -228,9 +224,7 @@
 	newtag->dt_dmamap_load_uio = NULL;
 	newtag->dt_dmamap_unload = NULL;
 	newtag->dt_dmamap_sync = NULL;
-	newtag->dt_dmamem_alloc_size = NULL;
 	newtag->dt_dmamem_alloc = NULL;
-	newtag->dt_dmamem_free_size = NULL;
 	newtag->dt_dmamem_free = NULL;
 
 	/* Take into account any restrictions imposed by our parent tag */
@@ -610,74 +604,18 @@
 	dmat->dt_map_count--;
 }
 
-/*
- * Common function for DMA-safe memory allocation.  May be called
- * by bus-specific DMA memory allocation functions.
- */
-static int
-nexus_dmamem_alloc_size(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
-    int flags, bus_dmamap_t *mapp, bus_size_t size)
-{
-
-	if (size > ddmat->dt_maxsize)
-		return (ENOMEM);
-
-	if ((size <= PAGE_SIZE)) {
-		*vaddr = malloc(size, M_DEVBUF,
-		    (flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK);
-	} else {
-		/*
-		 * XXX: Use contigmalloc until it is merged into this facility
-		 * and handles multi-seg allocations.  Nobody is doing multi-seg
-		 * allocations yet though.
-		 */
-		mtx_lock(&Giant);
-		*vaddr = contigmalloc(size, M_DEVBUF,
-		    (flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK,
-		    0ul, ddmat->dt_lowaddr,
-		    ddmat->dt_alignment ? ddmat->dt_alignment : 1UL,
-		    ddmat->dt_boundary);
-		mtx_unlock(&Giant);
-	}
-	if (*vaddr == NULL) {
-		free(*mapp, M_DEVBUF);
-		return (ENOMEM);
-	}
-	return (0);
-}
-
 static int
 nexus_dmamem_alloc(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
     int flags, bus_dmamap_t *mapp)
 {
-	return (sparc64_dmamem_alloc_size(pdmat, ddmat, vaddr, flags, mapp,
-		ddmat->dt_maxsize));
-}
-
-/*
- * Common function for freeing DMA-safe memory.  May be called by
- * bus-specific DMA memory free functions.
- */
-static void
-nexus_dmamem_free_size(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
-    bus_dmamap_t map, bus_size_t size)
-{
-
-	sparc64_dmamem_free_map(ddmat, map);
-	if ((size <= PAGE_SIZE))
-		free(vaddr, M_DEVBUF);
-	else {
-		mtx_lock(&Giant);
-		contigfree(vaddr, size, M_DEVBUF);
-		mtx_unlock(&Giant);
-	}
+	return (sparc64_dmamem_alloc_size(pdmat, ddmat, vaddr, flags, mapp));
 }
 
 static void
 nexus_dmamem_free(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
     bus_dmamap_t map)
 {
-	sparc64_dmamem_free_size(pdmat, ddmat, vaddr, map, ddmat->dt_maxsize);
+	sparc64_dmamem_free(pdmat, ddmat, vaddr, map);
 }
 
 struct bus_dma_tag nexus_dmatag = {
@@ -703,9 +641,7 @@
 	nexus_dmamap_unload,
 	nexus_dmamap_sync,
 
-	nexus_dmamem_alloc_size,
 	nexus_dmamem_alloc,
-	nexus_dmamem_free_size,
 	nexus_dmamem_free,
 };
 

--=-=-=--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?xzpllwt3myg.fsf>