[PATCH 1/3] media: tegra-vde: set an unlimited DMA segment size
From: Karl Mehltretter
Date: Mon Oct 05 2026 - 02:47:07 EST
The driver never sets a maximum DMA segment size, so the device claims
the 64 KiB default. With DMA_API_DEBUG, mapping a larger buffer
reports:
DMA-API: tegra-vde 6001a000.vde: mapping sg segment longer than
device claims to support [len=1228800] [max=65536]
Without an IOMMU domain the driver also needs each imported buffer as
one entry. An exporter that respects the 64 KiB claim has to split a
larger buffer, and queueing it fails with "Sparse DMA region is
unsupported, please enable IOMMU".
Set the maximum segment size to UINT_MAX.
Verified with a QEMU stub. Not tested on real hardware.
Fixes: cd6c56feb591 ("media: staging: media: Introduce NVIDIA Tegra video decoder driver")
Assisted-by: LLM
Signed-off-by: Karl Mehltretter <kmehltretter@xxxxxxxxx>
---
Notes:
Tested on v7.3-rc4-70-gfe2ec83746e5 with DMA_API_DEBUG on QEMU's
xilinx-zynq-a9. The driver probed from a stub device tree node, so all
registers read 0, and needed a test-only change to probe without a
Tegra PMC.
Queueing a capture buffer of 1228800-byte CMA heap buffers works
before and after this patch, with 7 segment-length reports before and
none after. With patch 3 alone it fails. With patches 1 and 3 it
works.
drivers/media/platform/nvidia/tegra-vde/vde.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/media/platform/nvidia/tegra-vde/vde.c b/drivers/media/platform/nvidia/tegra-vde/vde.c
index c3097085ad9d..6a47e8ba083c 100644
--- a/drivers/media/platform/nvidia/tegra-vde/vde.c
+++ b/drivers/media/platform/nvidia/tegra-vde/vde.c
@@ -238,6 +238,8 @@ static int tegra_vde_probe(struct platform_device *pdev)
vde->soc = of_device_get_match_data(&pdev->dev);
vde->dev = dev;
+ dma_set_max_seg_size(dev, UINT_MAX);
+
vde->sxe = devm_platform_ioremap_resource_byname(pdev, "sxe");
if (IS_ERR(vde->sxe))
return PTR_ERR(vde->sxe);
--
2.53.0