Hi,
On 3/25/2025 3:14 PM, Thomas Zimmermann wrote: > Hi > > Am 25.03.25 um 14:53 schrieb Christian König: >> Am 25.03.25 um 14:37 schrieb Jacek Lawrynowicz: >>> Use DMA_ATTR_SKIP_CPU_SYNC flag for exported buffers during DMA mapping. >>> The same flag is already used by drm_gem_map_dma_buf() for imported >>> buffers. >>> >>> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynow...@linux.intel.com> >>> --- >>> drivers/gpu/drm/drm_gem_shmem_helper.c | 8 ++++++-- >>> include/drm/drm_gem.h | 12 ++++++++++++ >>> 2 files changed, 18 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c >>> b/drivers/gpu/drm/drm_gem_shmem_helper.c >>> index d99dee67353a1..8938d8e3de52f 100644 >>> --- a/drivers/gpu/drm/drm_gem_shmem_helper.c >>> +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c >>> @@ -699,7 +699,7 @@ EXPORT_SYMBOL_GPL(drm_gem_shmem_get_sg_table); >>> static struct sg_table *drm_gem_shmem_get_pages_sgt_locked(struct >>> drm_gem_shmem_object *shmem) >>> { >>> struct drm_gem_object *obj = &shmem->base; >>> - int ret; >>> + int ret, flags = 0; >>> struct sg_table *sgt; >>> if (shmem->sgt) >>> @@ -716,8 +716,12 @@ static struct sg_table >>> *drm_gem_shmem_get_pages_sgt_locked(struct drm_gem_shmem_ >>> ret = PTR_ERR(sgt); >>> goto err_put_pages; >>> } >>> + >>> + if (drm_gem_is_exported()) >>> + flags |= DMA_ATTR_SKIP_CPU_SYNC; >> We should probably just unconditionally set this flag or not at all. > > A question to both of you: does this have an effect on performance? I'm > asking because i have a bug report where someone exports a buffer from > gem-shmem with miserable performance. Would this flag make a difference? On x86 this has no effect on performance. I'm not sure about other archs. Regards, Jacek