]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/prime: Limit scatter list size with dedicated DMA device
authorChen-Yu Tsai <wenst@chromium.org>
Wed, 11 Mar 2026 09:49:25 +0000 (17:49 +0800)
committerChen-Yu Tsai <wenst@chromium.org>
Mon, 23 Mar 2026 05:23:29 +0000 (13:23 +0800)
If a dedicated DMA device is specified for the DRM device, then the
scatter list size limit should pertain to the DMA device.

Use the dedicated DMA device, if given, to limit the scatter list size.
This only applies to drivers that have called drm_dev_set_dma_dev() and
are using drm_prime_pages_to_sg() either directly or through the SHMEM
helpers. At the time of this writing, the former case only includes the
Rockchip DRM driver, while the latter case includes the gud, udl, and
the tiny appletbdrm and gm12u320 drivers.

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://patch.msgid.link/20260311094929.3393338-2-wenst@chromium.org
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
drivers/gpu/drm/drm_prime.c

index 51fdb06d3e9f21bed47e558a22db98a095fd60cd..9b44c78cd77fcc96a444c1be8cb6715c57ef1c2d 100644 (file)
@@ -859,7 +859,7 @@ struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,
                return ERR_PTR(-ENOMEM);
 
        if (dev)
-               max_segment = dma_max_mapping_size(dev->dev);
+               max_segment = dma_max_mapping_size(drm_dev_dma_dev(dev));
        if (max_segment == 0)
                max_segment = UINT_MAX;
        err = sg_alloc_table_from_pages_segment(sg, pages, nr_pages, 0,