[PATCH 2/2] nvme: blk_rq_dma_map_iter_next is no longer using iova state

Damien Le Moal dlemoal at kernel.org
Mon Jan 12 06:08:38 PST 2026


On 1/12/26 14:57, Nitesh Shetty wrote:
> DMA IOVA state is not used inside blk_rq_dma_map_iter_next
> 
> Signed-off-by: Nitesh Shetty <nj.shetty at samsung.com>
> ---
>  drivers/nvme/host/pci.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
> index 3b528369f5454..065555576d2f9 100644
> --- a/drivers/nvme/host/pci.c
> +++ b/drivers/nvme/host/pci.c
> @@ -823,7 +823,7 @@ static bool nvme_pci_prp_iter_next(struct request *req, struct device *dma_dev,
>  
>  	if (iter->len)
>  		return true;
> -	if (!blk_rq_dma_map_iter_next(req, dma_dev, &iod->dma_state, iter))
> +	if (!blk_rq_dma_map_iter_next(req, dma_dev, iter))

Hu... Why is this not squashed with the previous patch ? If only patch 1 is
applied, this will not compile, right ?

>  		return false;
>  	if (!dma_use_iova(&iod->dma_state) && dma_need_unmap(dma_dev)) {
>  		iod->dma_vecs[iod->nr_dma_vecs].addr = iter->addr;
> @@ -1010,8 +1010,7 @@ static blk_status_t nvme_pci_setup_data_sgl(struct request *req,
>  		}
>  		nvme_pci_sgl_set_data(&sg_list[mapped++], iter);
>  		iod->total_len += iter->len;
> -	} while (blk_rq_dma_map_iter_next(req, nvmeq->dev->dev, &iod->dma_state,
> -				iter));
> +	} while (blk_rq_dma_map_iter_next(req, nvmeq->dev->dev, iter));
>  
>  	nvme_pci_sgl_set_seg(&iod->cmd.common.dptr.sgl, sgl_dma, mapped);
>  	if (unlikely(iter->status))


-- 
Damien Le Moal
Western Digital Research



More information about the Linux-nvme mailing list