Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F110651529
D10729.id29368.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
45 KB
Referenced Files
None
Subscribers
None
D10729.id29368.diff
View Options
Index: sys/amd64/include/bus_dma.h
===================================================================
--- sys/amd64/include/bus_dma.h
+++ sys/amd64/include/bus_dma.h
@@ -29,6 +29,6 @@
#ifndef _AMD64_BUS_DMA_H_
#define _AMD64_BUS_DMA_H_
-#include <sys/bus_dma.h>
+#include <x86/bus_dma.h>
#endif /* _AMD64_BUS_DMA_H_ */
Index: sys/arm/arm/busdma_machdep-v4.c
===================================================================
--- sys/arm/arm/busdma_machdep-v4.c
+++ sys/arm/arm/busdma_machdep-v4.c
@@ -1008,7 +1008,7 @@
* Did we fit?
*/
if (buflen != 0) {
- _bus_dmamap_unload(dmat, map);
+ bus_dmamap_unload(dmat, map);
return (EFBIG); /* XXX better return value here? */
}
return (0);
@@ -1129,14 +1129,14 @@
* Did we fit?
*/
if (buflen != 0) {
- _bus_dmamap_unload(dmat, map);
+ bus_dmamap_unload(dmat, map);
return (EFBIG); /* XXX better return value here? */
}
return (0);
}
void
-__bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map, struct memdesc *mem,
+_bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map, struct memdesc *mem,
bus_dmamap_callback_t *callback, void *callback_arg)
{
@@ -1161,7 +1161,7 @@
* Release the mapping held by map.
*/
void
-_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
+bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
struct bounce_page *bpage;
struct bounce_zone *bz;
@@ -1334,7 +1334,7 @@
}
void
-_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
+bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
{
struct sync_list *sl, *end;
int bufaligned;
Index: sys/arm/arm/busdma_machdep-v6.c
===================================================================
--- sys/arm/arm/busdma_machdep-v6.c
+++ sys/arm/arm/busdma_machdep-v6.c
@@ -1060,7 +1060,7 @@
* Did we fit?
*/
if (buflen != 0) {
- _bus_dmamap_unload(dmat, map);
+ bus_dmamap_unload(dmat, map);
return (EFBIG); /* XXX better return value here? */
}
return (0);
@@ -1185,14 +1185,14 @@
* Did we fit?
*/
if (buflen != 0) {
- _bus_dmamap_unload(dmat, map);
+ bus_dmamap_unload(dmat, map);
return (EFBIG); /* XXX better return value here? */
}
return (0);
}
void
-__bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map, struct memdesc *mem,
+_bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map, struct memdesc *mem,
bus_dmamap_callback_t *callback, void *callback_arg)
{
@@ -1216,7 +1216,7 @@
* Release the mapping held by map.
*/
void
-_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
+bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
struct bounce_page *bpage;
struct bounce_zone *bz;
@@ -1316,7 +1316,7 @@
}
void
-_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
+bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
{
struct bounce_page *bpage;
struct sync_list *sl, *end;
Index: sys/arm/include/bus_dma.h
===================================================================
--- sys/arm/include/bus_dma.h
+++ sys/arm/include/bus_dma.h
@@ -67,6 +67,7 @@
#define _ARM_BUS_DMA_H
#include <sys/bus_dma.h>
+#include <sys/bus_dma_internal.h>
/* Bus Space DMA macros */
Index: sys/arm64/arm64/busdma_machdep.c
===================================================================
--- sys/arm64/arm64/busdma_machdep.c
+++ sys/arm64/arm64/busdma_machdep.c
@@ -223,133 +223,3 @@
return (tc->impl->tag_destroy(dmat));
}
-/*
- * Allocate a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int
-bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->map_create(dmat, flags, mapp));
-}
-
-/*
- * Destroy a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int
-bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->map_destroy(dmat, map));
-}
-
-
-/*
- * Allocate a piece of memory that can be efficiently mapped into
- * bus device space based on the constraints listed in the dma tag.
- * A dmamap to for use with dmamap_load is also allocated.
- */
-int
-bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->mem_alloc(dmat, vaddr, flags, mapp));
-}
-
-/*
- * 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(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- tc->impl->mem_free(dmat, vaddr, map);
-}
-
-int
-_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map, vm_paddr_t buf,
- bus_size_t buflen, int flags, bus_dma_segment_t *segs, int *segp)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->load_phys(dmat, map, buf, buflen, flags, segs,
- segp));
-}
-
-int
-_bus_dmamap_load_ma(bus_dma_tag_t dmat, bus_dmamap_t map, struct vm_page **ma,
- bus_size_t tlen, int ma_offs, int flags, bus_dma_segment_t *segs,
- int *segp)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->load_ma(dmat, map, ma, tlen, ma_offs, flags,
- segs, segp));
-}
-
-int
-_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
- bus_size_t buflen, pmap_t pmap, int flags, bus_dma_segment_t *segs,
- int *segp)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->load_buffer(dmat, map, buf, buflen, pmap, flags, segs,
- segp));
-}
-
-void
-__bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct memdesc *mem, bus_dmamap_callback_t *callback, void *callback_arg)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- tc->impl->map_waitok(dmat, map, mem, callback, callback_arg);
-}
-
-bus_dma_segment_t *
-_bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map,
- bus_dma_segment_t *segs, int nsegs, int error)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->map_complete(dmat, map, segs, nsegs, error));
-}
-
-/*
- * Release the mapping held by map.
- */
-void
-_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- tc->impl->map_unload(dmat, map);
-}
-
-void
-_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- tc->impl->map_sync(dmat, map, op);
-}
Index: sys/arm64/include/bus_dma.h
===================================================================
--- sys/arm64/include/bus_dma.h
+++ sys/arm64/include/bus_dma.h
@@ -3,6 +3,139 @@
#ifndef _MACHINE_BUS_DMA_H_
#define _MACHINE_BUS_DMA_H_
+#define WANT_INLINE_DMAMAP
#include <sys/bus_dma.h>
+#include <machine/bus_dma_impl.h>
+
+/*
+ * Allocate a handle for mapping from kva/uva/physical
+ * address space into bus device space.
+ */
+static inline int
+bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->map_create(dmat, flags, mapp));
+}
+
+/*
+ * Destroy a handle for mapping from kva/uva/physical
+ * address space into bus device space.
+ */
+static inline int
+bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->map_destroy(dmat, map));
+}
+
+/*
+ * Allocate a piece of memory that can be efficiently mapped into
+ * bus device space based on the constraints listed in the dma tag.
+ * A dmamap to for use with dmamap_load is also allocated.
+ */
+static inline int
+bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
+ bus_dmamap_t *mapp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->mem_alloc(dmat, vaddr, flags, mapp));
+}
+
+/*
+ * Free a piece of memory and it's allociated dmamap, that was allocated
+ * via bus_dmamem_alloc. Make the same choice for free/contigfree.
+ */
+static inline void
+bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ tc->impl->mem_free(dmat, vaddr, map);
+}
+
+/*
+ * Release the mapping held by map.
+ */
+static inline void
+bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ tc->impl->map_unload(dmat, map);
+}
+
+static inline void
+bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ tc->impl->map_sync(dmat, map, op);
+}
+
+static inline int
+_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map, vm_paddr_t buf,
+ bus_size_t buflen, int flags, bus_dma_segment_t *segs, int *segp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->load_phys(dmat, map, buf, buflen, flags, segs,
+ segp));
+}
+
+static inline int
+_bus_dmamap_load_ma(bus_dma_tag_t dmat, bus_dmamap_t map, struct vm_page **ma,
+ bus_size_t tlen, int ma_offs, int flags, bus_dma_segment_t *segs,
+ int *segp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->load_ma(dmat, map, ma, tlen, ma_offs, flags,
+ segs, segp));
+}
+
+static inline int
+_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
+ bus_size_t buflen, struct pmap *pmap, int flags, bus_dma_segment_t *segs,
+ int *segp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->load_buffer(dmat, map, buf, buflen, pmap, flags, segs,
+ segp));
+}
+
+static inline void
+_bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
+ struct memdesc *mem, bus_dmamap_callback_t *callback, void *callback_arg)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ tc->impl->map_waitok(dmat, map, mem, callback, callback_arg);
+}
+
+static inline bus_dma_segment_t *
+_bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map,
+ bus_dma_segment_t *segs, int nsegs, int error)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->map_complete(dmat, map, segs, nsegs, error));
+}
+
#endif /* !_MACHINE_BUS_DMA_H_ */
Index: sys/arm64/include/bus_dma_impl.h
===================================================================
--- sys/arm64/include/bus_dma_impl.h
+++ sys/arm64/include/bus_dma_impl.h
@@ -70,7 +70,7 @@
vm_paddr_t buf, bus_size_t buflen, int flags,
bus_dma_segment_t *segs, int *segp);
int (*load_buffer)(bus_dma_tag_t dmat, bus_dmamap_t map,
- void *buf, bus_size_t buflen, pmap_t pmap, int flags,
+ void *buf, bus_size_t buflen, struct pmap *pmap, int flags,
bus_dma_segment_t *segs, int *segp);
void (*map_waitok)(bus_dma_tag_t dmat, bus_dmamap_t map,
struct memdesc *mem, bus_dmamap_callback_t *callback,
Index: sys/dev/aac/aac.c
===================================================================
--- sys/dev/aac/aac.c
+++ sys/dev/aac/aac.c
@@ -55,7 +55,6 @@
#include <sys/rman.h>
#include <machine/bus.h>
-#include <sys/bus_dma.h>
#include <machine/resource.h>
#include <dev/pci/pcireg.h>
Index: sys/dev/aacraid/aacraid.c
===================================================================
--- sys/dev/aacraid/aacraid.c
+++ sys/dev/aacraid/aacraid.c
@@ -56,7 +56,6 @@
#include <sys/rman.h>
#include <machine/bus.h>
-#include <sys/bus_dma.h>
#include <machine/resource.h>
#include <dev/pci/pcireg.h>
Index: sys/dev/bnxt/bnxt.h
===================================================================
--- sys/dev/bnxt/bnxt.h
+++ sys/dev/bnxt/bnxt.h
@@ -32,13 +32,13 @@
#ifndef _BNXT_H
#define _BNXT_H
-#include <sys/types.h>
-#include <sys/bus.h>
-#include <sys/bus_dma.h>
+#include <sys/param.h>
#include <sys/socket.h>
#include <sys/sysctl.h>
#include <sys/taskqueue.h>
+#include <machine/bus.h>
+
#include <net/ethernet.h>
#include <net/if.h>
#include <net/if_var.h>
Index: sys/dev/cxgb/cxgb_adapter.h
===================================================================
--- sys/dev/cxgb/cxgb_adapter.h
+++ sys/dev/cxgb/cxgb_adapter.h
@@ -54,7 +54,6 @@
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcivar.h>
Index: sys/dev/cxgb/cxgb_main.c
===================================================================
--- sys/dev/cxgb/cxgb_main.c
+++ sys/dev/cxgb/cxgb_main.c
@@ -41,7 +41,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/ktr.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
Index: sys/dev/cxgb/cxgb_sge.c
===================================================================
--- sys/dev/cxgb/cxgb_sge.c
+++ sys/dev/cxgb/cxgb_sge.c
@@ -41,7 +41,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/queue.h>
#include <sys/sysctl.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c
@@ -39,7 +39,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c
@@ -40,7 +40,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cq.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cq.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cq.c
@@ -41,7 +41,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_dbg.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_dbg.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_dbg.c
@@ -40,7 +40,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_ev.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_ev.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_ev.c
@@ -40,7 +40,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_hal.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_hal.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_hal.c
@@ -40,7 +40,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_mem.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_mem.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_mem.c
@@ -40,7 +40,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
@@ -40,7 +40,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_qp.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_qp.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_qp.c
@@ -40,7 +40,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_resource.c
===================================================================
--- sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_resource.c
+++ sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_resource.c
@@ -40,7 +40,6 @@
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/bus_dma.h>
#include <sys/rman.h>
#include <sys/ioccom.h>
#include <sys/mbuf.h>
Index: sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
===================================================================
--- sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
+++ sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
@@ -62,7 +62,6 @@
#include <sys/sglist.h>
#include <sys/eventhandler.h>
#include <machine/bus.h>
-#include <sys/bus_dma.h>
#include <cam/cam.h>
#include <cam/cam_ccb.h>
Index: sys/dev/mfi/mfi.c
===================================================================
--- sys/dev/mfi/mfi.c
+++ sys/dev/mfi/mfi.c
@@ -67,7 +67,6 @@
#include <sys/conf.h>
#include <sys/eventhandler.h>
#include <sys/rman.h>
-#include <sys/bus_dma.h>
#include <sys/bio.h>
#include <sys/ioccom.h>
#include <sys/uio.h>
Index: sys/dev/mfi/mfi_cam.c
===================================================================
--- sys/dev/mfi/mfi_cam.c
+++ sys/dev/mfi/mfi_cam.c
@@ -39,7 +39,6 @@
#include <sys/conf.h>
#include <sys/eventhandler.h>
#include <sys/rman.h>
-#include <sys/bus_dma.h>
#include <sys/bio.h>
#include <sys/ioccom.h>
#include <sys/uio.h>
Index: sys/dev/tsec/if_tsec.c
===================================================================
--- sys/dev/tsec/if_tsec.c
+++ sys/dev/tsec/if_tsec.c
@@ -37,7 +37,6 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
-#include <sys/bus_dma.h>
#include <sys/endian.h>
#include <sys/mbuf.h>
#include <sys/kernel.h>
Index: sys/dev/xdma/xdma.c
===================================================================
--- sys/dev/xdma/xdma.c
+++ sys/dev/xdma/xdma.c
@@ -45,7 +45,6 @@
#include <sys/sysctl.h>
#include <sys/systm.h>
#include <sys/sx.h>
-#include <sys/bus_dma.h>
#include <machine/bus.h>
Index: sys/dev/xen/blkfront/blkfront.c
===================================================================
--- sys/dev/xen/blkfront/blkfront.c
+++ sys/dev/xen/blkfront/blkfront.c
@@ -49,7 +49,6 @@
#include <machine/resource.h>
#include <machine/intr_machdep.h>
#include <machine/vmparam.h>
-#include <sys/bus_dma.h>
#include <xen/xen-os.h>
#include <xen/hypervisor.h>
Index: sys/i386/include/bus_dma.h
===================================================================
--- sys/i386/include/bus_dma.h
+++ sys/i386/include/bus_dma.h
@@ -29,6 +29,6 @@
#ifndef _I386_BUS_DMA_H_
#define _I386_BUS_DMA_H_
-#include <sys/bus_dma.h>
+#include <x86/bus_dma.h>
#endif /* _I386_BUS_DMA_H_ */
Index: sys/mips/include/bus_dma.h
===================================================================
--- sys/mips/include/bus_dma.h
+++ sys/mips/include/bus_dma.h
@@ -30,5 +30,6 @@
#define _MIPS_BUS_DMA_H_
#include <sys/bus_dma.h>
+#include <sys/bus_dma_internal.h>
#endif /* _MIPS_BUS_DMA_H_ */
Index: sys/mips/mips/busdma_machdep.c
===================================================================
--- sys/mips/mips/busdma_machdep.c
+++ sys/mips/mips/busdma_machdep.c
@@ -930,7 +930,7 @@
* Did we fit?
*/
if (buflen != 0) {
- _bus_dmamap_unload(dmat, map);
+ bus_dmamap_unload(dmat, map);
return (EFBIG); /* XXX better return value here? */
}
return (0);
@@ -1028,14 +1028,14 @@
* Did we fit?
*/
if (buflen != 0) {
- _bus_dmamap_unload(dmat, map);
+ bus_dmamap_unload(dmat, map);
error = EFBIG; /* XXX better return value here? */
}
return (error);
}
void
-__bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
+_bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
struct memdesc *mem, bus_dmamap_callback_t *callback, void *callback_arg)
{
@@ -1060,7 +1060,7 @@
* Release the mapping held by map.
*/
void
-_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
+bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
struct bounce_page *bpage;
@@ -1233,7 +1233,7 @@
}
void
-_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
+bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
{
struct sync_list *sl, *end;
int aligned;
Index: sys/net/iflib.h
===================================================================
--- sys/net/iflib.h
+++ sys/net/iflib.h
@@ -33,7 +33,6 @@
#include <sys/bus.h>
#include <sys/cpuset.h>
#include <machine/bus.h>
-#include <sys/bus_dma.h>
#include <sys/nv.h>
#include <sys/gtaskqueue.h>
Index: sys/powerpc/include/bus_dma.h
===================================================================
--- sys/powerpc/include/bus_dma.h
+++ sys/powerpc/include/bus_dma.h
@@ -29,6 +29,7 @@
#define _POWERPC_BUS_DMA_H_
#include <sys/bus_dma.h>
+#include <sys/bus_dma_internal.h>
struct device;
Index: sys/powerpc/powerpc/busdma_machdep.c
===================================================================
--- sys/powerpc/powerpc/busdma_machdep.c
+++ sys/powerpc/powerpc/busdma_machdep.c
@@ -841,7 +841,7 @@
}
void
-__bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
+_bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
struct memdesc *mem, bus_dmamap_callback_t *callback,
void *callback_arg)
{
@@ -879,7 +879,7 @@
* Release the mapping held by map.
*/
void
-_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
+bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
struct bounce_page *bpage;
@@ -895,7 +895,7 @@
}
void
-_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
+bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
{
struct bounce_page *bpage;
vm_offset_t datavaddr, tempvaddr;
Index: sys/riscv/include/bus_dma.h
===================================================================
--- sys/riscv/include/bus_dma.h
+++ sys/riscv/include/bus_dma.h
@@ -4,5 +4,6 @@
#define _MACHINE_BUS_DMA_H_
#include <sys/bus_dma.h>
+#include <sys/bus_dma_internal.h>
#endif /* !_MACHINE_BUS_DMA_H_ */
Index: sys/riscv/riscv/busdma_machdep.c
===================================================================
--- sys/riscv/riscv/busdma_machdep.c
+++ sys/riscv/riscv/busdma_machdep.c
@@ -69,7 +69,7 @@
}
void
-__bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
+_bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
struct memdesc *mem, bus_dmamap_callback_t *callback, void *callback_arg)
{
@@ -88,14 +88,14 @@
* Release the mapping held by map.
*/
void
-_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
+bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
panic("busdma");
}
void
-_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
+bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
{
panic("busdma");
Index: sys/sparc64/include/bus_dma.h
===================================================================
--- sys/sparc64/include/bus_dma.h
+++ sys/sparc64/include/bus_dma.h
@@ -68,6 +68,7 @@
#ifndef _SPARC64_BUS_DMA_H
#define _SPARC64_BUS_DMA_H
+#define WANT_INLINE_DMAMAP
#include <sys/bus_dma.h>
/* DMA support */
@@ -124,29 +125,84 @@
struct bus_dma_methods *dt_mt;
};
-#define bus_dmamap_create(t, f, p) \
- ((t)->dt_mt->dm_dmamap_create((t), (f), (p)))
-#define bus_dmamap_destroy(t, p) \
- ((t)->dt_mt->dm_dmamap_destroy((t), (p)))
-#define _bus_dmamap_load_phys(t, m, b, l, f, s, sp) \
- ((t)->dt_mt->dm_dmamap_load_phys((t), (m), (b), (l), \
- (f), (s), (sp)))
-#define _bus_dmamap_load_buffer(t, m, b, l, p, f, s, sp) \
- ((t)->dt_mt->dm_dmamap_load_buffer((t), (m), (b), (l), (p), \
- (f), (s), (sp)))
-#define _bus_dmamap_waitok(t, m, mem, c, ca) \
- ((t)->dt_mt->dm_dmamap_waitok((t), (m), (mem), (c), (ca)))
-#define _bus_dmamap_complete(t, m, s, n, e) \
- ((t)->dt_mt->dm_dmamap_complete((t), (m), (s), (n), (e)))
-#define bus_dmamap_unload(t, p) \
- ((t)->dt_mt->dm_dmamap_unload((t), (p)))
-#define bus_dmamap_sync(t, m, op) \
- ((t)->dt_mt->dm_dmamap_sync((t), (m), (op)))
-#define bus_dmamem_alloc(t, v, f, m) \
- ((t)->dt_mt->dm_dmamem_alloc((t), (v), (f), (m)))
-#define bus_dmamem_free(t, v, m) \
- ((t)->dt_mt->dm_dmamem_free((t), (v), (m)))
-#define _bus_dmamap_load_ma(t, m, a, tt, o, f, s, p) \
- bus_dmamap_load_ma_triv((t), (m), (a), (tt), (o), (f), (s), (p))
+static inline int
+bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
+{
+ return (dmat->dt_mt->dm_dmamap_create(dmat, flags, mapp));
+}
+
+static inline int
+bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
+{
+ return (dmat->dt_mt->dm_dmamap_destroy(dmat, map));
+}
+
+static inline void
+bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
+{
+ dmat->dt_mt->dm_dmamap_sync(dmat, map, op);
+}
+
+static inline void
+bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
+{
+ dmat->dt_mt->dm_dmamap_unload(dmat, map);
+}
+
+static inline int
+bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, bus_dmamap_t *mapp)
+{
+ return (dmat->dt_mt->dm_dmamem_alloc(dmat, vaddr, flags, mapp));
+}
+
+static inline void
+bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
+{
+ dmat->dt_mt->dm_dmamem_free(dmat, vaddr, map);
+}
+
+static inline bus_dma_segment_t*
+_bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map,
+ bus_dma_segment_t *segs, int nsegs, int error)
+{
+ return (dmat->dt_mt->dm_dmamap_complete(dmat, map, segs,
+ nsegs, error));
+}
+
+static inline int
+_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map,
+ void *buf, bus_size_t buflen, struct pmap *pmap,
+ int flags, bus_dma_segment_t *segs, int *segp)
+{
+ return (dmat->dt_mt->dm_dmamap_load_buffer(dmat, map, buf, buflen,
+ pmap, flags, segs, segp));
+}
+
+static inline int
+_bus_dmamap_load_ma(bus_dma_tag_t dmat, bus_dmamap_t map,
+ struct vm_page **ma, bus_size_t tlen, int ma_offs,
+ int flags, bus_dma_segment_t *segs, int *segp)
+{
+ return (bus_dmamap_load_ma_triv(dmat, map, ma, tlen, ma_offs, flags,
+ segs, segp));
+}
+
+static inline int
+_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map,
+ vm_paddr_t paddr, bus_size_t buflen,
+ int flags, bus_dma_segment_t *segs, int *segp)
+{
+ return (dmat->dt_mt->dm_dmamap_load_phys(dmat, map, paddr, buflen,
+ flags, segs, segp));
+}
+
+static inline void
+_bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
+ struct memdesc *mem, bus_dmamap_callback_t *callback,
+ void *callback_arg)
+{
+ return (dmat->dt_mt->dm_dmamap_waitok(dmat, map, mem, callback,
+ callback_arg));
+}
#endif /* !_SPARC64_BUS_DMA_H_ */
Index: sys/sys/bus_dma.h
===================================================================
--- sys/sys/bus_dma.h
+++ sys/sys/bus_dma.h
@@ -248,105 +248,49 @@
struct vm_page **ma, bus_size_t tlen, int ma_offs, int flags,
bus_dma_segment_t *segs, int *segp);
-/*
- * XXX sparc64 uses the same interface, but a much different implementation.
- * <machine/bus_dma.h> for the sparc64 arch contains the equivalent
- * declarations.
- */
-#if !defined(__sparc64__)
+#ifdef WANT_INLINE_DMAMAP
+#define BUS_DMAMAP_OP static inline
+#else
+#define BUS_DMAMAP_OP
+#endif
/*
* Allocate a handle for mapping from kva/uva/physical
* address space into bus device space.
*/
-int bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp);
+BUS_DMAMAP_OP int bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp);
/*
* Destroy a handle for mapping from kva/uva/physical
* address space into bus device space.
*/
-int bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map);
+BUS_DMAMAP_OP int bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map);
/*
* Allocate a piece of memory that can be efficiently mapped into
* bus device space based on the constraints listed in the dma tag.
* A dmamap to for use with dmamap_load is also allocated.
*/
-int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
+BUS_DMAMAP_OP int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
bus_dmamap_t *mapp);
/*
* Free a piece of memory and its allocated dmamap, that was allocated
* via bus_dmamem_alloc.
*/
-void bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map);
+BUS_DMAMAP_OP void bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map);
/*
* Perform a synchronization operation on the given map. If the map
- * is NULL we have a fully IO-coherent system. On every ARM architecture
- * there must be a memory barrier placed to ensure that all data
- * accesses are visible before going any further.
- */
-void _bus_dmamap_sync(bus_dma_tag_t, bus_dmamap_t, bus_dmasync_op_t);
-#if defined(__arm__)
- #define __BUS_DMAMAP_SYNC_DEFAULT mb()
-#elif defined(__aarch64__)
- #define __BUS_DMAMAP_SYNC_DEFAULT dmb(sy)
-#else
- #define __BUS_DMAMAP_SYNC_DEFAULT do {} while (0)
-#endif
-#define bus_dmamap_sync(dmat, dmamap, op) \
- do { \
- if ((dmamap) != NULL) \
- _bus_dmamap_sync(dmat, dmamap, op); \
- else \
- __BUS_DMAMAP_SYNC_DEFAULT; \
- } while (0)
+ * is NULL we have a fully IO-coherent system.
+ */
+BUS_DMAMAP_OP void bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t dmamap, bus_dmasync_op_t op);
/*
* Release the mapping held by map.
*/
-void _bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map);
-#define bus_dmamap_unload(dmat, dmamap) \
- do { \
- if ((dmamap) != NULL) \
- _bus_dmamap_unload(dmat, dmamap); \
- } while (0)
-
-/*
- * The following functions define the interface between the MD and MI
- * busdma layers. These are not intended for consumption by driver
- * software.
- */
-void __bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct memdesc *mem,
- bus_dmamap_callback_t *callback,
- void *callback_arg);
-
-#define _bus_dmamap_waitok(dmat, map, mem, callback, callback_arg) \
- do { \
- if ((map) != NULL) \
- __bus_dmamap_waitok(dmat, map, mem, callback, \
- callback_arg); \
- } while (0);
-
-int _bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map,
- void *buf, bus_size_t buflen, struct pmap *pmap,
- int flags, bus_dma_segment_t *segs, int *segp);
-
-int _bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map,
- vm_paddr_t paddr, bus_size_t buflen,
- int flags, bus_dma_segment_t *segs, int *segp);
-
-int _bus_dmamap_load_ma(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct vm_page **ma, bus_size_t tlen, int ma_offs, int flags,
- bus_dma_segment_t *segs, int *segp);
-
-bus_dma_segment_t *_bus_dmamap_complete(bus_dma_tag_t dmat,
- bus_dmamap_t map,
- bus_dma_segment_t *segs,
- int nsegs, int error);
+BUS_DMAMAP_OP void bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t dmamap);
-#endif /* __sparc64__ */
+#undef BUS_DMAMAP_OP
#endif /* _BUS_DMA_H_ */
Index: sys/sys/bus_dma_internal.h
===================================================================
--- /dev/null
+++ sys/sys/bus_dma_internal.h
@@ -0,0 +1,57 @@
+/*-
+ * Copyright (c) 2017 Jason A. Harmening.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _BUS_DMA_INTERNAL_H_
+#define _BUS_DMA_INTERNAL_H_
+
+/*
+ * The following functions define the interface between the MD and MI
+ * busdma layers. These are not intended for consumption by driver
+ * software.
+ */
+
+bus_dma_segment_t *_bus_dmamap_complete(bus_dma_tag_t dmat,
+ bus_dmamap_t map, bus_dma_segment_t *segs,
+ int nsegs, int error);
+
+int _bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map,
+ void *buf, bus_size_t buflen, struct pmap *pmap,
+ int flags, bus_dma_segment_t *segs, int *segp);
+
+int _bus_dmamap_load_ma(bus_dma_tag_t dmat, bus_dmamap_t map,
+ struct vm_page **ma, bus_size_t tlen, int ma_offs,
+ int flags, bus_dma_segment_t *segs, int *segp);
+
+int _bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map,
+ vm_paddr_t paddr, bus_size_t buflen,
+ int flags, bus_dma_segment_t *segs, int *segp);
+
+void _bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
+ struct memdesc *mem, bus_dmamap_callback_t *callback,
+ void *callback_arg);
+
+#endif /* _BUS_DMA_INTERNAL_H_ */
+
Index: sys/x86/include/bus_dma.h
===================================================================
--- /dev/null
+++ sys/x86/include/bus_dma.h
@@ -0,0 +1,181 @@
+/*-
+ * Copyright (c) 2017 Jason A. Harmening.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _X86_BUS_DMA_H_
+#define _X86_BUS_DMA_H_
+
+#define WANT_INLINE_DMAMAP
+#include <sys/bus_dma.h>
+#include <sys/_null.h>
+
+#include <x86/busdma_impl.h>
+
+/*
+ * Allocate a handle for mapping from kva/uva/physical
+ * address space into bus device space.
+ */
+static inline int
+bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->map_create(dmat, flags, mapp));
+}
+
+/*
+ * Destroy a handle for mapping from kva/uva/physical
+ * address space into bus device space.
+ */
+static inline int
+bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->map_destroy(dmat, map));
+}
+
+/*
+ * Allocate a piece of memory that can be efficiently mapped into
+ * bus device space based on the constraints lited in the dma tag.
+ * A dmamap to for use with dmamap_load is also allocated.
+ */
+static inline int
+bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
+ bus_dmamap_t *mapp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->mem_alloc(dmat, vaddr, flags, mapp));
+}
+
+/*
+ * Free a piece of memory and it's allociated dmamap, that was allocated
+ * via bus_dmamem_alloc. Make the same choice for free/contigfree.
+ */
+static inline void
+bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ tc->impl->mem_free(dmat, vaddr, map);
+}
+
+/*
+ * Release the mapping held by map.
+ */
+static inline void
+bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
+{
+ struct bus_dma_tag_common *tc;
+
+ if (map != NULL) {
+ tc = (struct bus_dma_tag_common *)dmat;
+ tc->impl->map_unload(dmat, map);
+ }
+}
+
+static inline void
+bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
+{
+ struct bus_dma_tag_common *tc;
+
+ if (map != NULL) {
+ tc = (struct bus_dma_tag_common *)dmat;
+ tc->impl->map_sync(dmat, map, op);
+ }
+}
+
+/*
+ * Utility function to load a physical buffer. segp contains
+ * the starting segment on entrace, and the ending segment on exit.
+ */
+static inline int
+_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map, vm_paddr_t buf,
+ bus_size_t buflen, int flags, bus_dma_segment_t *segs, int *segp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->load_phys(dmat, map, buf, buflen, flags, segs,
+ segp));
+}
+
+static inline int
+_bus_dmamap_load_ma(bus_dma_tag_t dmat, bus_dmamap_t map, struct vm_page **ma,
+ bus_size_t tlen, int ma_offs, int flags, bus_dma_segment_t *segs,
+ int *segp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->load_ma(dmat, map, ma, tlen, ma_offs, flags,
+ segs, segp));
+}
+
+/*
+ * Utility function to load a linear buffer. segp contains
+ * the starting segment on entrace, and the ending segment on exit.
+ */
+static inline int
+_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
+ bus_size_t buflen, struct pmap *pmap, int flags, bus_dma_segment_t *segs,
+ int *segp)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->load_buffer(dmat, map, buf, buflen, pmap, flags, segs,
+ segp));
+}
+
+static inline void
+_bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
+ struct memdesc *mem, bus_dmamap_callback_t *callback, void *callback_arg)
+{
+ struct bus_dma_tag_common *tc;
+
+ if (map != NULL) {
+ tc = (struct bus_dma_tag_common *)dmat;
+ tc->impl->map_waitok(dmat, map, mem, callback, callback_arg);
+ }
+}
+
+static inline bus_dma_segment_t *
+_bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map,
+ bus_dma_segment_t *segs, int nsegs, int error)
+{
+ struct bus_dma_tag_common *tc;
+
+ tc = (struct bus_dma_tag_common *)dmat;
+ return (tc->impl->map_complete(dmat, map, segs, nsegs, error));
+}
+
+#endif
+
Index: sys/x86/include/busdma_impl.h
===================================================================
--- sys/x86/include/busdma_impl.h
+++ sys/x86/include/busdma_impl.h
@@ -70,7 +70,7 @@
vm_paddr_t buf, bus_size_t buflen, int flags,
bus_dma_segment_t *segs, int *segp);
int (*load_buffer)(bus_dma_tag_t dmat, bus_dmamap_t map,
- void *buf, bus_size_t buflen, pmap_t pmap, int flags,
+ void *buf, bus_size_t buflen, struct pmap *pmap, int flags,
bus_dma_segment_t *segs, int *segp);
void (*map_waitok)(bus_dma_tag_t dmat, bus_dmamap_t map,
struct memdesc *mem, bus_dmamap_callback_t *callback,
Index: sys/x86/iommu/busdma_dmar.c
===================================================================
--- sys/x86/iommu/busdma_dmar.c
+++ sys/x86/iommu/busdma_dmar.c
@@ -361,6 +361,8 @@
struct bus_dma_tag_dmar *tag;
struct bus_dmamap_dmar *map;
+ WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "%s", __func__);
+
tag = (struct bus_dma_tag_dmar *)dmat;
map = malloc(sizeof(*map), M_DMAR_DMAMAP, M_NOWAIT | M_ZERO);
if (map == NULL) {
Index: sys/x86/x86/busdma_bounce.c
===================================================================
--- sys/x86/x86/busdma_bounce.c
+++ sys/x86/x86/busdma_bounce.c
@@ -262,6 +262,8 @@
struct bounce_zone *bz;
int error, maxpages, pages;
+ WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "%s", __func__);
+
error = 0;
if (dmat->segments == NULL) {
@@ -371,6 +373,8 @@
vm_memattr_t attr;
int mflags;
+ WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "%s", __func__);
+
if (flags & BUS_DMA_NOWAIT)
mflags = M_NOWAIT;
else
Index: sys/x86/x86/busdma_machdep.c
===================================================================
--- sys/x86/x86/busdma_machdep.c
+++ sys/x86/x86/busdma_machdep.c
@@ -221,145 +221,3 @@
return (tc->impl->tag_destroy(dmat));
}
-/*
- * Allocate a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int
-bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
-{
- struct bus_dma_tag_common *tc;
-
- WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "%s", __func__);
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->map_create(dmat, flags, mapp));
-}
-
-/*
- * Destroy a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int
-bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->map_destroy(dmat, map));
-}
-
-
-/*
- * Allocate a piece of memory that can be efficiently mapped into
- * 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(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp)
-{
- struct bus_dma_tag_common *tc;
-
- WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "%s", __func__);
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->mem_alloc(dmat, vaddr, flags, mapp));
-}
-
-/*
- * 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(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- tc->impl->mem_free(dmat, vaddr, map);
-}
-
-/*
- * Utility function to load a physical buffer. segp contains
- * the starting segment on entrace, and the ending segment on exit.
- */
-int
-_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map, vm_paddr_t buf,
- bus_size_t buflen, int flags, bus_dma_segment_t *segs, int *segp)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->load_phys(dmat, map, buf, buflen, flags, segs,
- segp));
-}
-
-int
-_bus_dmamap_load_ma(bus_dma_tag_t dmat, bus_dmamap_t map, struct vm_page **ma,
- bus_size_t tlen, int ma_offs, int flags, bus_dma_segment_t *segs,
- int *segp)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->load_ma(dmat, map, ma, tlen, ma_offs, flags,
- segs, segp));
-}
-
-/*
- * Utility function to load a linear buffer. segp contains
- * the starting segment on entrace, and the ending segment on exit.
- */
-int
-_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
- bus_size_t buflen, pmap_t pmap, int flags, bus_dma_segment_t *segs,
- int *segp)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->load_buffer(dmat, map, buf, buflen, pmap, flags, segs,
- segp));
-}
-
-void
-__bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct memdesc *mem, bus_dmamap_callback_t *callback, void *callback_arg)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- tc->impl->map_waitok(dmat, map, mem, callback, callback_arg);
-}
-
-bus_dma_segment_t *
-_bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map,
- bus_dma_segment_t *segs, int nsegs, int error)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- return (tc->impl->map_complete(dmat, map, segs, nsegs, error));
-}
-
-/*
- * Release the mapping held by map.
- */
-void
-_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- tc->impl->map_unload(dmat, map);
-}
-
-void
-_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
-{
- struct bus_dma_tag_common *tc;
-
- tc = (struct bus_dma_tag_common *)dmat;
- tc->impl->map_sync(dmat, map, op);
-}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Feb 22, 11:32 AM (47 m, 40 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16770576
Default Alt Text
D10729.id29368.diff (45 KB)
Attached To
Mode
D10729: Cleanup MD pollution of MI busdma header
Attached
Detach File
Event Timeline
Log In to Comment