[PATCH v2 0/3] drm/prime: Only call dma_map_sgtable() for devices with DMA support
Thomas Zimmermann
tzimmermann at suse.de
Mon Feb 22 13:24:41 UTC 2021
Hi
Am 22.02.21 um 14:09 schrieb Christian König:
>
>
> 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.
And this bug proves that it is. :)
>
> Have you thought about doing that instead?
There appears to be some useful code in drm_gem_prime_import_dev(). But
if the general sentiment goes towards removing
gem_prime_import_sg_table, we can work towards that as well.
Best regards
Thomas
>
> 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
>>
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210222/82118626/attachment-0001.sig>
More information about the dri-devel
mailing list