[PATCH v2 0/5] PLX Switch DMA Engine Driver

From: Logan Gunthorpe
Date: Mon Dec 09 2019 - 19:25:04 EST


This is v2 of the patchset. The discussion for v1 was mostly resolving
a confusion of how this new driver fixes the problems with unbinds
while in use and how this is not solved by the existing module reference.
The first two patches fix bugs in the core code to support this.

This patchset is based off of v5.5-rc1 and a git branch is available
here:

https://github.com/sbates130272/linux-p2pmem/ plx-dma-v2

Changes for v2:

* Rebased onto v5.5-rc1 (no changes)
* Pushed the plx_dma_isr() routine into the patch that uses it (per
Vinod's feedback)

--

The following patches introduce a driver to use the DMA hardware inside
PLX ExpressLane PEX Switches. The DMA devices appear as one or more
PCI virtual functions per channel and can serve similar use cases as
Intel's IOAT driver.

The first two patches in this series fix some bugs that are required to
support cases where the driver is unbound while the DMA engine is in
use. Without these patches the kernel will panic when that happens.

The final three patches implement the driver itself.

--

Logan Gunthorpe (5):
dmaengine: Store module owner in dma_device struct
dmaengine: Call module_put() after device_free_chan_resources()
dmaengine: plx-dma: Introduce PLX DMA engine PCI driver skeleton
dmaengine: plx-dma: Implement hardware initialization and cleanup
dmaengine: plx-dma: Implement descriptor submission

MAINTAINERS | 5 +
drivers/dma/Kconfig | 9 +
drivers/dma/Makefile | 1 +
drivers/dma/dmaengine.c | 7 +-
drivers/dma/plx_dma.c | 658 ++++++++++++++++++++++++++++++++++++++
include/linux/dmaengine.h | 2 +
6 files changed, 680 insertions(+), 2 deletions(-)
create mode 100644 drivers/dma/plx_dma.c

--
2.20.1