v6: - Put all common code for pmem drivers in pmem_core per Dan's suggestion. - Added support code to get number of available DMA chans - Fixed up Kconfig so that when pmem is built into the kernel, pmem_dma won't show up. v5: - Added support to report descriptor transfer capability limit from dmaengine. - Fixed up scatterlist support for dma_unmap_data per Dan's comments. - Made the driver a separate pmem blk driver per Christoph's suggestion and also fixed up all the issues pointed out by Christoph. - Added pmem badblock checking/handling per Robert and also made DMA op to be used by all buffer sizes. v4: - Addressed kbuild test bot issues. Passed kbuild test bot, 179 configs. v3: - Added patch to rename DMA_SG to DMA_SG_SG to make it explicit - Added DMA_MEMCPY_SG transaction type to dmaengine - Misc patch to add verification of DMA_MEMSET_SG that was missing - Addressed all nd_pmem driver comments from Ross. v2: - Make dma_prep_memcpy_* into one function per Dan. - Addressed various comments from Ross with code formatting and etc. - Replaced open code with offset_in_page() macro per Johannes. The following series implements a blk-mq pmem driver and also adds infrastructure code to ioatdma and dmaengine in order to support copying to and from scatterlist in order to process block requests provided by blk-mq. The usage of DMA engines available on certain platforms allow us to drastically reduce CPU utilization and at the same time maintain performance that is good enough. Experimentations have been done on DRAM backed pmem block device that showed the utilization of DMA engine is beneficial. By default nd_pmem.ko will be loaded. This can be overridden through module blacklisting in order to load nd_pmem_dma.ko. --- Dave Jiang (8): dmaengine: ioatdma: revert 7618d035 to allow sharing of DMA channels dmaengine: Add DMA_MEMCPY_SG transaction op dmaengine: add verification of DMA_MEMSET_SG in dmaengine dmaengine: ioatdma: dma_prep_memcpy_sg support dmaengine: add function to provide per descriptor xfercap for dma engine dmaengine: add SG support to dmaengine_unmap dmaengine: provide number of available channels libnvdimm: Add blk-mq pmem driver Documentation/dmaengine/provider.txt | 3 drivers/dma/dmaengine.c | 76 ++++ drivers/dma/ioat/dma.h | 4 drivers/dma/ioat/init.c | 6 drivers/dma/ioat/prep.c | 57 +++ drivers/nvdimm/Kconfig | 21 + drivers/nvdimm/Makefile | 6 drivers/nvdimm/pmem.c | 264 --------------- drivers/nvdimm/pmem.h | 48 +++ drivers/nvdimm/pmem_core.c | 298 +++++++++++++++++ drivers/nvdimm/pmem_dma.c | 606 ++++++++++++++++++++++++++++++++++ include/linux/dmaengine.h | 49 +++ 12 files changed, 1170 insertions(+), 268 deletions(-) create mode 100644 drivers/nvdimm/pmem_core.c create mode 100644 drivers/nvdimm/pmem_dma.c -- Signature -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html