[Lima] [PATCH v2 0/3] drm/prime: Only call dma_map_sgtable() for devices with DMA support
Christian König
christian.koenig at amd.com
Mon Feb 22 13:09:03 UTC 2021
Am 22.02.21 um 13:43 schrieb Thomas Zimmermann:
> USB-based drivers cannot use DMA, so the importing of dma-buf attachments
> currently fails for udl and gm12u320. This breaks joining/mirroring of
> displays.
>
> The fix is now a little series. To solve the issue on the importer
> side (i.e., the affected USB-based driver), patch 1 introduces a new
> PRIME callback, struct drm_driver.gem_prime_create_object, which creates
> an object and gives more control to the importing driver. Specifically,
> udl and gm12u320 can now avoid the creation of a scatter/gather table
> for the imported pages. Patch 1 is self-contained in the sense that it
> can be backported into older kernels.
Mhm, that sounds like a little overkill to me.
Drivers can already import the DMA-bufs all by them selves without the
help of the DRM functions. See amdgpu for an example.
Daniel also already noted to me that he sees the DRM helper as a bit
questionable middle layer.
Have you thought about doing that instead?
Christian.
>
> Patches 2 and 3 update SHMEM and CMA helpers to use the new callback.
> Effectively this moves the sg table setup from the PRIME helpers into
> the memory managers. SHMEM now supports devices without DMA support,
> so custom code can be removed from udl and g12u320.
>
> Tested by joining/mirroring displays of udl and radeon under Gnome/X11.
>
> v2:
> * move fix to importer side (Christian, Daniel)
> * update SHMEM and CMA helpers for new PRIME callbacks
>
> Thomas Zimmermann (3):
> drm: Support importing dmabufs into drivers without DMA
> drm/shmem-helper: Implement struct drm_driver.gem_prime_create_object
> drm/cma-helper: Implement struct drm_driver.gem_prime_create_object
>
> drivers/gpu/drm/drm_gem_cma_helper.c | 62 ++++++++++++++-----------
> drivers/gpu/drm/drm_gem_shmem_helper.c | 38 ++++++++++-----
> drivers/gpu/drm/drm_prime.c | 43 +++++++++++------
> drivers/gpu/drm/lima/lima_drv.c | 2 +-
> drivers/gpu/drm/panfrost/panfrost_drv.c | 2 +-
> drivers/gpu/drm/panfrost/panfrost_gem.c | 6 +--
> drivers/gpu/drm/panfrost/panfrost_gem.h | 4 +-
> drivers/gpu/drm/pl111/pl111_drv.c | 8 ++--
> drivers/gpu/drm/v3d/v3d_bo.c | 6 +--
> drivers/gpu/drm/v3d/v3d_drv.c | 2 +-
> drivers/gpu/drm/v3d/v3d_drv.h | 5 +-
> include/drm/drm_drv.h | 12 +++++
> include/drm/drm_gem_cma_helper.h | 12 ++---
> include/drm/drm_gem_shmem_helper.h | 6 +--
> 14 files changed, 120 insertions(+), 88 deletions(-)
>
> --
> 2.30.1
>
More information about the lima
mailing list