From: Keith Busch <kbusch@xxxxxxxxxx> Previous version: https://lore.kernel.org/linux-nvme/20250729143442.2586575-1-kbusch@xxxxxxxx/ Changes since v3: - Fixed special vec handling - Fixed address check for dma_mapping_error - Fixed nvme leaks on dma iteration errror - Added an nvme prep patch to reduce code duplication when unmaping sgl's - On the last patch, I retained the previous MPTR setup for when a single integrity segment exists for non-user requests. A code comment in the data path claims that is more efficient than the DMA iterator. Keith Busch (8): blk-mq-dma: introduce blk_map_iter blk-mq-dma: provide the bio_vec list being iterated blk-mq-dma: require unmap caller provide p2p map type blk-mq: remove REQ_P2PDMA flag blk-mq-dma: move common dma start code to a helper blk-mq-dma: add support for mapping integrity metadata nvme-pci: create common sgl unmapping helper nvme-pci: convert metadata mapping to dma iter block/bio.c | 2 +- block/blk-mq-dma.c | 237 ++++++++++++++++++++-------------- drivers/nvme/host/pci.c | 190 +++++++++++++++------------ include/linux/blk-integrity.h | 17 +++ include/linux/blk-mq-dma.h | 16 ++- include/linux/blk_types.h | 1 - 6 files changed, 279 insertions(+), 184 deletions(-) -- 2.47.3