]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: intel/ipu6: Fix dma mask for non-secure mode
authorStanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Thu, 10 Apr 2025 09:47:06 +0000 (11:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2025 10:11:17 +0000 (11:11 +0100)
commit 0209916ebe2475079ce6d8dc4114afbc0ccad1c2 upstream.

We use dma_get_mask() of auxdev device for calculate iova pfn limit.
This is always 32 bit mask as we do not initialize the mask (and we can
not do so, since dev->dev_mask is NULL anyways for auxdev).

Since we need 31 bit mask for non-secure mode use mmu_info->aperture_end
which is properly initialized to correct mask for both modes.

Fixes: daabc5c64703 ("media: ipu6: not override the dma_ops of device in driver")
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/pci/intel/ipu6/ipu6-dma.c

index b71f66bd8c1fdbaf0d2c2ce2c833e3fe1fa02e2b..92d513608395c6933127cf2172b4ecb2cea21b38 100644 (file)
@@ -172,7 +172,7 @@ void *ipu6_dma_alloc(struct ipu6_bus_device *sys, size_t size,
        count = PHYS_PFN(size);
 
        iova = alloc_iova(&mmu->dmap->iovad, count,
-                         PHYS_PFN(dma_get_mask(dev)), 0);
+                         PHYS_PFN(mmu->dmap->mmu_info->aperture_end), 0);
        if (!iova)
                goto out_kfree;
 
@@ -398,7 +398,7 @@ int ipu6_dma_map_sg(struct ipu6_bus_device *sys, struct scatterlist *sglist,
                nents, npages);
 
        iova = alloc_iova(&mmu->dmap->iovad, npages,
-                         PHYS_PFN(dma_get_mask(dev)), 0);
+                         PHYS_PFN(mmu->dmap->mmu_info->aperture_end), 0);
        if (!iova)
                return 0;