I/OAT DMA support and TCP acceleration
Subsystems (3)
RFC PATCH 1/5 I/OAT DMA support and TCP acceleration
DMA memcpy subsystem
Provides an API for offloading memory copies to DMA devices. Along with client registration and DMA channel allocation, the main APIs are:
dma_async_memcpy_buf_to_buf() dma_async_memcpy_buf_to_pg() dma_async_memcpy_pg_to_pg() dma_async_memcpy_complete()
--- drivers/dma/Kconfig | 34 +++ drivers/dma/Makefile | 3 drivers/dma/dmaengine.c | 391 ++++++++++++++++++++++++++++++++++++++++++++ include/linux/dmaengine.h | 220 ++++++++++++++++++++++++ drivers/Kconfig | 2 drivers/Makefile | 1 6 files changed, 651 insertions(+)
drivers/dma/Kconfig new file +34 -0
@@ -0,0 +1,34 @@ +# +# DMA engine configuration +# + +menu "DMA Engine support" + +config DMA_ENGINE + bool "Support for DMA engines" + ---help--- + DMA engines offload copy operations from the CPU to dedicated + hardware, allowing the copies to happen asynchronously. + +comment "DMA Clients" + +config NET_DMA + bool "Network: TCP receive copy offload" + depends on DMA_ENGINE + default y + ---help--- + This enables the use of DMA engines in the network stack to + offload receive copy-to-user operations, freeing CPU cycles. + Since this is the main user of the DMA engine, it should be enabled; + say Y here. + +comment "DMA Devices" + +config INTEL_IOATDMA + tristate "Intel I/OAT DMA support" + depends on DMA_ENGINE + default m + ---help--- + Enable support for the Intel I/OAT DMA engine. + +endmenu
drivers/dma/Makefile new file +3 -0
@@ -0,0 +1,3 @@ +obj-y += dmaengine.o + +obj-$(CONFIG_INTEL_IOATDMA) += ioatdma.o
drivers/Kconfig +2 -0
@@ -66,4 +66,6 @@ source "drivers/infiniband/Kconfig" source "drivers/sn/Kconfig" +source "drivers/dma/Kconfig" + endmenu
drivers/Makefile +1 -0
@@ -67,3 +67,4 @@ obj-$(CONFIG_INFINIBAND) += infiniband/ obj-$(CONFIG_SGI_IOC4) += sn/ obj-y += firmware/ obj-$(CONFIG_CRYPTO) += crypto/ +obj-$(CONFIG_DMA_ENGINE) += dma/
include/linux/dmaengine.h new file +220 -0
220 lines not on this page · raw message
drivers/dma/dmaengine.c new file +391 -0
391 lines not on this page · raw message
Quoted 7 lines · Chris Leech
DMA memcpy subsystem
Provides an API for offloading memory copies to DMA devices. Along with client registration and DMA channel allocation, the main APIs are:dma_async_memcpy_buf_to_buf() dma_async_memcpy_buf_to_pg() dma_async_memcpy_pg_to_pg() dma_async_memcpy_complete()
Is here at least some locking?
All dma chain/engine list manipulations seem very suspicious.
Signature · 1 line
Evgeniy Polyakov