Re: [PATCH v1 2/2] nvme-pci: Fix iommu map (via swiotlb) failures when PAGE_SIZE=64KB

From: Keith Busch
Date: Tue Feb 13 2024 - 18:31:14 EST


On Tue, Feb 13, 2024 at 01:53:57PM -0800, Nicolin Chen wrote:
> @@ -2967,7 +2967,7 @@ static struct nvme_dev *nvme_pci_alloc_dev(struct pci_dev *pdev,
> dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(48));
> else
> dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
> - dma_set_min_align_mask(&pdev->dev, NVME_CTRL_PAGE_SIZE - 1);
> + dma_set_min_align_mask(&pdev->dev, PAGE_SIZE - 1);
> dma_set_max_seg_size(&pdev->dev, 0xffffffff);

I recall we had to do this for POWER because they have 64k pages, but
page aligned addresses IOMMU map to 4k, so we needed to allow the lower
dma alignment to efficiently use it.