summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/alpha/alpha/busdma_machdep.c34
-rw-r--r--sys/alpha/include/bus.h6
-rw-r--r--sys/amd64/amd64/busdma_machdep.c35
-rw-r--r--sys/amd64/include/bus_dma.h6
-rw-r--r--sys/i386/i386/busdma_machdep.c35
-rw-r--r--sys/i386/include/bus_dma.h6
-rw-r--r--sys/sparc64/include/bus.h30
-rw-r--r--sys/sparc64/include/iommuvar.h4
-rw-r--r--sys/sparc64/pci/psycho.c27
-rw-r--r--sys/sparc64/sbus/sbus.c25
-rw-r--r--sys/sparc64/sparc64/iommu.c31
-rw-r--r--sys/sys/bus_dma.h6
12 files changed, 32 insertions, 213 deletions
diff --git a/sys/alpha/alpha/busdma_machdep.c b/sys/alpha/alpha/busdma_machdep.c
index 90a9389..57c0dd8 100644
--- a/sys/alpha/alpha/busdma_machdep.c
+++ b/sys/alpha/alpha/busdma_machdep.c
@@ -350,18 +350,14 @@ bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
* A dmamap to for use with dmamap_load is also allocated.
*/
int
-bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp, bus_size_t size)
+bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
+ bus_dmamap_t *mapp)
{
-
- if (size > dmat->maxsize)
- return (ENOMEM);
-
/* If we succeed, no mapping/bouncing will be required */
*mapp = &nobounce_dmamap;
- if ((size <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem)) {
- *vaddr = malloc(size, M_DEVBUF,
+ if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem)) {
+ *vaddr = malloc(dmat->maxsize, M_DEVBUF,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK);
} else {
/*
@@ -370,7 +366,7 @@ bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
* multi-seg allocations yet though.
*/
mtx_lock(&Giant);
- *vaddr = contigmalloc(size, M_DEVBUF,
+ *vaddr = contigmalloc(dmat->maxsize, M_DEVBUF,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK,
0ul, dmat->lowaddr, dmat->alignment? dmat->alignment : 1ul,
dmat->boundary);
@@ -381,20 +377,12 @@ bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
return (0);
}
-int
-bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp)
-{
- return (bus_dmamem_alloc_size(dmat, vaddr, flags, mapp, dmat->maxsize));
-}
-
/*
* Free a piece of memory and it's allociated dmamap, that was allocated
* via bus_dmamem_alloc.
*/
void
-bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
- bus_size_t size)
+bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
{
/*
* dmamem does not need to be bounced, so the map should be
@@ -402,21 +390,15 @@ bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
*/
if (map != &nobounce_dmamap)
panic("bus_dmamem_free: Invalid map freed\n");
- if ((size <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem))
+ if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem))
free(vaddr, M_DEVBUF);
else {
mtx_lock(&Giant);
- contigfree(vaddr, size, M_DEVBUF);
+ contigfree(vaddr, dmat->maxsize, M_DEVBUF);
mtx_unlock(&Giant);
}
}
-void
-bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
-{
- bus_dmamem_free_size(dmat, vaddr, map, dmat->maxsize);
-}
-
#define BUS_DMAMAP_NSEGS ((64 * 1024 / PAGE_SIZE) + 1)
/*
diff --git a/sys/alpha/include/bus.h b/sys/alpha/include/bus.h
index 859adc2..852648d 100644
--- a/sys/alpha/include/bus.h
+++ b/sys/alpha/include/bus.h
@@ -567,9 +567,6 @@ int bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map);
* bus device space based on the constraints lited in the dma tag.
* A dmamap to for use with dmamap_load is also allocated.
*/
-int bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp, bus_size_t size);
-
int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
bus_dmamap_t *mapp);
@@ -577,9 +574,6 @@ int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
* Free a piece of memory and it's allociated dmamap, that was allocated
* via bus_dmamem_alloc.
*/
-void bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
- bus_size_t size);
-
void bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map);
/*
diff --git a/sys/amd64/amd64/busdma_machdep.c b/sys/amd64/amd64/busdma_machdep.c
index 5080240..47b8c42 100644
--- a/sys/amd64/amd64/busdma_machdep.c
+++ b/sys/amd64/amd64/busdma_machdep.c
@@ -338,19 +338,15 @@ bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
* A dmamap to for use with dmamap_load is also allocated.
*/
int
-bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp, bus_size_t size)
+bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
+ bus_dmamap_t *mapp)
{
-
- if (size > dmat->maxsize)
- return (ENOMEM);
-
/* If we succeed, no mapping/bouncing will be required */
*mapp = NULL;
- if ((size <= PAGE_SIZE) &&
+ if ((dmat->maxsize <= PAGE_SIZE) &&
dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem)) {
- *vaddr = malloc(size, M_DEVBUF,
+ *vaddr = malloc(dmat->maxsize, M_DEVBUF,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK);
} else {
/*
@@ -359,7 +355,7 @@ bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
* multi-seg allocations yet though.
*/
mtx_lock(&Giant);
- *vaddr = contigmalloc(size, M_DEVBUF,
+ *vaddr = contigmalloc(dmat->maxsize, M_DEVBUF,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK,
0ul, dmat->lowaddr, dmat->alignment? dmat->alignment : 1ul,
dmat->boundary);
@@ -370,20 +366,12 @@ bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
return (0);
}
-int
-bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp)
-{
- return (bus_dmamem_alloc_size(dmat, vaddr, flags, mapp, dmat->maxsize));
-}
-
/*
* Free a piece of memory and it's allociated dmamap, that was allocated
* via bus_dmamem_alloc. Make the same choice for free/contigfree.
*/
void
-bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
- bus_size_t size)
+bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
{
/*
* dmamem does not need to be bounced, so the map should be
@@ -391,21 +379,16 @@ bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
*/
if (map != NULL)
panic("bus_dmamem_free: Invalid map freed\n");
- if ((size <= PAGE_SIZE) && dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))
+ if ((dmat->maxsize <= PAGE_SIZE)
+ && dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))
free(vaddr, M_DEVBUF);
else {
mtx_lock(&Giant);
- contigfree(vaddr, size, M_DEVBUF);
+ contigfree(vaddr, dmat->maxsize, M_DEVBUF);
mtx_unlock(&Giant);
}
}
-void
-bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
-{
- bus_dmamem_free_size(dmat, vaddr, map, dmat->maxsize);
-}
-
/*
* Utility function to load a linear buffer. lastaddrp holds state
* between invocations (for multiple-buffer loads). segp contains
diff --git a/sys/amd64/include/bus_dma.h b/sys/amd64/include/bus_dma.h
index 70e498f..67609d9 100644
--- a/sys/amd64/include/bus_dma.h
+++ b/sys/amd64/include/bus_dma.h
@@ -176,9 +176,6 @@ int bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map);
* bus device space based on the constraints lited in the dma tag.
* A dmamap to for use with dmamap_load is also allocated.
*/
-int bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp, bus_size_t size);
-
int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
bus_dmamap_t *mapp);
@@ -186,9 +183,6 @@ int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
* Free a piece of memory and it's allociated dmamap, that was allocated
* via bus_dmamem_alloc.
*/
-void bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
- bus_size_t size);
-
void bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map);
/*
diff --git a/sys/i386/i386/busdma_machdep.c b/sys/i386/i386/busdma_machdep.c
index 5080240..47b8c42 100644
--- a/sys/i386/i386/busdma_machdep.c
+++ b/sys/i386/i386/busdma_machdep.c
@@ -338,19 +338,15 @@ bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
* A dmamap to for use with dmamap_load is also allocated.
*/
int
-bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp, bus_size_t size)
+bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
+ bus_dmamap_t *mapp)
{
-
- if (size > dmat->maxsize)
- return (ENOMEM);
-
/* If we succeed, no mapping/bouncing will be required */
*mapp = NULL;
- if ((size <= PAGE_SIZE) &&
+ if ((dmat->maxsize <= PAGE_SIZE) &&
dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem)) {
- *vaddr = malloc(size, M_DEVBUF,
+ *vaddr = malloc(dmat->maxsize, M_DEVBUF,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK);
} else {
/*
@@ -359,7 +355,7 @@ bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
* multi-seg allocations yet though.
*/
mtx_lock(&Giant);
- *vaddr = contigmalloc(size, M_DEVBUF,
+ *vaddr = contigmalloc(dmat->maxsize, M_DEVBUF,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK,
0ul, dmat->lowaddr, dmat->alignment? dmat->alignment : 1ul,
dmat->boundary);
@@ -370,20 +366,12 @@ bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
return (0);
}
-int
-bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp)
-{
- return (bus_dmamem_alloc_size(dmat, vaddr, flags, mapp, dmat->maxsize));
-}
-
/*
* Free a piece of memory and it's allociated dmamap, that was allocated
* via bus_dmamem_alloc. Make the same choice for free/contigfree.
*/
void
-bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
- bus_size_t size)
+bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
{
/*
* dmamem does not need to be bounced, so the map should be
@@ -391,21 +379,16 @@ bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
*/
if (map != NULL)
panic("bus_dmamem_free: Invalid map freed\n");
- if ((size <= PAGE_SIZE) && dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))
+ if ((dmat->maxsize <= PAGE_SIZE)
+ && dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))
free(vaddr, M_DEVBUF);
else {
mtx_lock(&Giant);
- contigfree(vaddr, size, M_DEVBUF);
+ contigfree(vaddr, dmat->maxsize, M_DEVBUF);
mtx_unlock(&Giant);
}
}
-void
-bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
-{
- bus_dmamem_free_size(dmat, vaddr, map, dmat->maxsize);
-}
-
/*
* Utility function to load a linear buffer. lastaddrp holds state
* between invocations (for multiple-buffer loads). segp contains
diff --git a/sys/i386/include/bus_dma.h b/sys/i386/include/bus_dma.h
index f9471c0..f706677 100644
--- a/sys/i386/include/bus_dma.h
+++ b/sys/i386/include/bus_dma.h
@@ -176,9 +176,6 @@ int bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map);
* bus device space based on the constraints lited in the dma tag.
* A dmamap to for use with dmamap_load is also allocated.
*/
-int bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp, bus_size_t size);
-
int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
bus_dmamap_t *mapp);
@@ -186,9 +183,6 @@ int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
* Free a piece of memory and it's allociated dmamap, that was allocated
* via bus_dmamem_alloc.
*/
-void bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
- bus_size_t size);
-
void bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map);
/*
diff --git a/sys/sparc64/include/bus.h b/sys/sparc64/include/bus.h
index bc6e518..c69c270 100644
--- a/sys/sparc64/include/bus.h
+++ b/sys/sparc64/include/bus.h
@@ -980,12 +980,8 @@ struct bus_dma_tag {
/*
* DMA memory utility functions.
*/
- int (*dt_dmamem_alloc_size)(bus_dma_tag_t, bus_dma_tag_t, void **,
- int, bus_dmamap_t *, bus_size_t size);
int (*dt_dmamem_alloc)(bus_dma_tag_t, bus_dma_tag_t, void **, int,
bus_dmamap_t *);
- void (*dt_dmamem_free_size)(bus_dma_tag_t, bus_dma_tag_t, void *,
- bus_dmamap_t, bus_size_t size);
void (*dt_dmamem_free)(bus_dma_tag_t, bus_dma_tag_t, void *,
bus_dmamap_t);
};
@@ -1096,19 +1092,6 @@ sparc64_dmamap_sync(bus_dma_tag_t pt, bus_dma_tag_t dt, bus_dmamap_t m, int op)
sparc64_dmamap_sync((t), (t), (m), (op))
static __inline int
-sparc64_dmamem_alloc_size(bus_dma_tag_t pt, bus_dma_tag_t dt, void **v, int f,
- bus_dmamap_t *m, bus_size_t s)
-{
- bus_dma_tag_t lt;
-
- for (lt = pt; lt->dt_dmamem_alloc_size == NULL; lt = lt->dt_parent)
- ;
- return ((*lt->dt_dmamem_alloc_size)(lt, dt, v, f, m, s));
-}
-#define bus_dmamem_alloc_size(t, v, f, m, s) \
- sparc64_dmamem_alloc_size((t), (t), (v), (f), (m), (s))
-
-static __inline int
sparc64_dmamem_alloc(bus_dma_tag_t pt, bus_dma_tag_t dt, void **v, int f,
bus_dmamap_t *m)
{
@@ -1122,19 +1105,6 @@ sparc64_dmamem_alloc(bus_dma_tag_t pt, bus_dma_tag_t dt, void **v, int f,
sparc64_dmamem_alloc((t), (t), (v), (f), (m))
static __inline void
-sparc64_dmamem_free_size(bus_dma_tag_t pt, bus_dma_tag_t dt, void *v,
- bus_dmamap_t m, bus_size_t s)
-{
- bus_dma_tag_t lt;
-
- for (lt = pt; lt->dt_dmamem_free_size == NULL; lt = lt->dt_parent)
- ;
- (*lt->dt_dmamem_free_size)(lt, dt, v, m, s);
-}
-#define bus_dmamem_free_size(t, v, m, s) \
- sparc64_dmamem_free_size((t), (t), (v), (m), (s))
-
-static __inline void
sparc64_dmamem_free(bus_dma_tag_t pt, bus_dma_tag_t dt, void *v,
bus_dmamap_t m)
{
diff --git a/sys/sparc64/include/iommuvar.h b/sys/sparc64/include/iommuvar.h
index 4584001..5337d14 100644
--- a/sys/sparc64/include/iommuvar.h
+++ b/sys/sparc64/include/iommuvar.h
@@ -95,12 +95,8 @@ void iommu_dvmamap_unload(bus_dma_tag_t, bus_dma_tag_t, struct iommu_state *,
bus_dmamap_t);
void iommu_dvmamap_sync(bus_dma_tag_t, bus_dma_tag_t, struct iommu_state *,
bus_dmamap_t, int);
-int iommu_dvmamem_alloc_size(bus_dma_tag_t, bus_dma_tag_t, struct iommu_state *,
- void **, int, bus_dmamap_t *, bus_size_t size);
int iommu_dvmamem_alloc(bus_dma_tag_t, bus_dma_tag_t, struct iommu_state *,
void **, int, bus_dmamap_t *);
-void iommu_dvmamem_free_size(bus_dma_tag_t, bus_dma_tag_t, struct iommu_state *,
- void *, bus_dmamap_t, bus_size_t size);
void iommu_dvmamem_free(bus_dma_tag_t, bus_dma_tag_t, struct iommu_state *,
void *, bus_dmamap_t);
diff --git a/sys/sparc64/pci/psycho.c b/sys/sparc64/pci/psycho.c
index 25234d7..5de26ba 100644
--- a/sys/sparc64/pci/psycho.c
+++ b/sys/sparc64/pci/psycho.c
@@ -112,12 +112,8 @@ static int psycho_dmamap_load_uio(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t,
struct uio *, bus_dmamap_callback2_t *, void *, int);
static void psycho_dmamap_unload(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t);
static void psycho_dmamap_sync(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t, int);
-static int psycho_dmamem_alloc_size(bus_dma_tag_t, bus_dma_tag_t, void **, int,
- bus_dmamap_t *, bus_size_t size);
static int psycho_dmamem_alloc(bus_dma_tag_t, bus_dma_tag_t, void **, int,
bus_dmamap_t *);
-static void psycho_dmamem_free_size(bus_dma_tag_t, bus_dma_tag_t, void *,
- bus_dmamap_t, bus_size_t size);
static void psycho_dmamem_free(bus_dma_tag_t, bus_dma_tag_t, void *,
bus_dmamap_t);
@@ -501,9 +497,7 @@ psycho_attach(device_t dev)
sc->sc_dmat->dt_dmamap_load_uio = psycho_dmamap_load_uio;
sc->sc_dmat->dt_dmamap_unload = psycho_dmamap_unload;
sc->sc_dmat->dt_dmamap_sync = psycho_dmamap_sync;
- sc->sc_dmat->dt_dmamem_alloc_size = psycho_dmamem_alloc_size;
sc->sc_dmat->dt_dmamem_alloc = psycho_dmamem_alloc;
- sc->sc_dmat->dt_dmamem_free_size = psycho_dmamem_free_size;
sc->sc_dmat->dt_dmamem_free = psycho_dmamem_free;
/* XXX: register as root dma tag (kluge). */
sparc64_root_dma_tag = sc->sc_dmat;
@@ -1320,17 +1314,6 @@ psycho_alloc_bus_tag(struct psycho_softc *sc, int type)
* hooks into the iommu dvma calls.
*/
static int
-psycho_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)
-{
- struct psycho_softc *sc;
-
- sc = (struct psycho_softc *)pdmat->dt_cookie;
- return (iommu_dvmamem_alloc_size(pdmat, ddmat, sc->sc_is, vaddr, flags,
- mapp, size));
-}
-
-static int
psycho_dmamem_alloc(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
int flags, bus_dmamap_t *mapp)
{
@@ -1342,16 +1325,6 @@ psycho_dmamem_alloc(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
}
static void
-psycho_dmamem_free_size(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
- bus_dmamap_t map, bus_size_t size)
-{
- struct psycho_softc *sc;
-
- sc = (struct psycho_softc *)pdmat->dt_cookie;
- iommu_dvmamem_free_size(pdmat, ddmat, sc->sc_is, vaddr, map, size);
-}
-
-static void
psycho_dmamem_free(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
bus_dmamap_t map)
{
diff --git a/sys/sparc64/sbus/sbus.c b/sys/sparc64/sbus/sbus.c
index f695d5a..8debb26 100644
--- a/sys/sparc64/sbus/sbus.c
+++ b/sys/sparc64/sbus/sbus.c
@@ -243,12 +243,8 @@ static int sbus_dmamap_load_uio(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t,
struct uio *, bus_dmamap_callback2_t *, void *, int);
static void sbus_dmamap_unload(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t);
static void sbus_dmamap_sync(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t, int);
-static int sbus_dmamem_alloc_size(bus_dma_tag_t, bus_dma_tag_t, void **, int,
- bus_dmamap_t *, bus_size_t size);
static int sbus_dmamem_alloc(bus_dma_tag_t, bus_dma_tag_t, void **, int,
bus_dmamap_t *);
-static void sbus_dmamem_free_size(bus_dma_tag_t, bus_dma_tag_t, void *,
- bus_dmamap_t, bus_size_t);
static void sbus_dmamem_free(bus_dma_tag_t, bus_dma_tag_t, void *,
bus_dmamap_t);
@@ -352,9 +348,7 @@ sbus_probe(device_t dev)
sc->sc_cdmatag->dt_dmamap_load_uio = sbus_dmamap_load_uio;
sc->sc_cdmatag->dt_dmamap_unload = sbus_dmamap_unload;
sc->sc_cdmatag->dt_dmamap_sync = sbus_dmamap_sync;
- sc->sc_cdmatag->dt_dmamem_alloc_size = sbus_dmamem_alloc_size;
sc->sc_cdmatag->dt_dmamem_alloc = sbus_dmamem_alloc;
- sc->sc_cdmatag->dt_dmamem_free_size = sbus_dmamem_free_size;
sc->sc_cdmatag->dt_dmamem_free = sbus_dmamem_free;
/* XXX: register as root dma tag (kluge). */
sparc64_root_dma_tag = sc->sc_cdmatag;
@@ -993,16 +987,6 @@ sbus_dmamap_sync(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, bus_dmamap_t map,
}
static int
-sbus_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)
-{
- struct sbus_softc *sc = (struct sbus_softc *)pdmat->dt_cookie;
-
- return (iommu_dvmamem_alloc_size(pdmat, ddmat, &sc->sc_is, vaddr, flags,
- mapp, size));
-}
-
-static int
sbus_dmamem_alloc(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
int flags, bus_dmamap_t *mapp)
{
@@ -1013,15 +997,6 @@ sbus_dmamem_alloc(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
}
static void
-sbus_dmamem_free_size(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
- bus_dmamap_t map, bus_size_t size)
-{
- struct sbus_softc *sc = (struct sbus_softc *)pdmat->dt_cookie;
-
- iommu_dvmamem_free_size(pdmat, ddmat, &sc->sc_is, vaddr, map, size);
-}
-
-static void
sbus_dmamem_free(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
bus_dmamap_t map)
{
diff --git a/sys/sparc64/sparc64/iommu.c b/sys/sparc64/sparc64/iommu.c
index ccfe1af..c42e25d 100644
--- a/sys/sparc64/sparc64/iommu.c
+++ b/sys/sparc64/sparc64/iommu.c
@@ -668,22 +668,18 @@ iommu_dvma_vallocseg(bus_dma_tag_t dt, struct iommu_state *is, bus_dmamap_t map,
}
int
-iommu_dvmamem_alloc_size(bus_dma_tag_t pt, bus_dma_tag_t dt,
- struct iommu_state *is, void **vaddr, int flags, bus_dmamap_t *mapp,
- bus_size_t size)
+iommu_dvmamem_alloc(bus_dma_tag_t pt, bus_dma_tag_t dt, struct iommu_state *is,
+ void **vaddr, int flags, bus_dmamap_t *mappe)
{
int error;
- if (size > dt->dt_maxsize)
- return (ENOMEM);
-
/*
* XXX: This will break for 32 bit transfers on machines with more than
* 16G (1 << 34 bytes) of memory.
*/
if ((error = sparc64_dmamem_alloc_map(dt, mapp)) != 0)
return (error);
- if ((*vaddr = malloc(size, M_IOMMU,
+ if ((*vaddr = malloc(dt->dt_maxsize, M_IOMMU,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK)) == NULL) {
error = ENOMEM;
sparc64_dmamem_free_map(dt, *mapp);
@@ -694,21 +690,13 @@ iommu_dvmamem_alloc_size(bus_dma_tag_t pt, bus_dma_tag_t dt,
* Try to preallocate DVMA space. If this fails, it is retried at load
* time.
*/
- iommu_dvma_valloc(dt, is, *mapp, IOMMU_SIZE_ROUNDUP(size));
+ iommu_dvma_valloc(dt, is, *mapp, IOMMU_SIZE_ROUNDUP(dt->dt_maxsize));
return (0);
}
-int
-iommu_dvmamem_alloc(bus_dma_tag_t pt, bus_dma_tag_t dt, struct iommu_state *is,
- void **vaddr, int flags, bus_dmamap_t *mapp)
-{
- return (iommu_dvmamem_alloc_size(pt, dt, is, vaddr, flags, mapp,
- dt->dt_maxsize));
-}
-
void
-iommu_dvmamem_free_size(bus_dma_tag_t pt, bus_dma_tag_t dt,
- struct iommu_state *is, void *vaddr, bus_dmamap_t map, bus_size_t size)
+iommu_dvmamem_free(bus_dma_tag_t pt, bus_dma_tag_t dt, struct iommu_state *is,
+ void *vaddr, bus_dmamap_t map)
{
iommu_dvma_vfree(is, map);
@@ -716,13 +704,6 @@ iommu_dvmamem_free_size(bus_dma_tag_t pt, bus_dma_tag_t dt,
free(vaddr, M_IOMMU);
}
-void
-iommu_dvmamem_free(bus_dma_tag_t pt, bus_dma_tag_t dt, struct iommu_state *is,
- void *vaddr, bus_dmamap_t map)
-{
- iommu_dvmamem_free_size(pt, dt, is, vaddr, map, dt->dt_maxsize);
-}
-
int
iommu_dvmamap_create(bus_dma_tag_t pt, bus_dma_tag_t dt, struct iommu_state *is,
int flags, bus_dmamap_t *mapp)
diff --git a/sys/sys/bus_dma.h b/sys/sys/bus_dma.h
index f9471c0..f706677 100644
--- a/sys/sys/bus_dma.h
+++ b/sys/sys/bus_dma.h
@@ -176,9 +176,6 @@ int bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map);
* bus device space based on the constraints lited in the dma tag.
* A dmamap to for use with dmamap_load is also allocated.
*/
-int bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp, bus_size_t size);
-
int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
bus_dmamap_t *mapp);
@@ -186,9 +183,6 @@ int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
* Free a piece of memory and it's allociated dmamap, that was allocated
* via bus_dmamem_alloc.
*/
-void bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
- bus_size_t size);
-
void bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map);
/*
OpenPOWER on IntegriCloud