On Wed, Oct 14, 2026 at 09:31:00AM +0200, Thomas Zimmermann wrote:
Hi

Am 13.10.26 um 20:29 schrieb Niranjana Vishwanathapura:
On Tue, Oct 13, 2026 at 09:17:17AM +0200, Thomas Zimmermann wrote:
Hi,

I don't think we should merge this series.

Testing for the functions struct is a hack, which we do because it works in practice. We don't any other good identifier for the source of the imported dma_buf. We want to hide this from the outside world as much as possible. Putting it into an exported interface goes in the wrong direction.


Ok, I understand. Given it is just a utility function that is helpful
across drivers, would defining drm_gem_prime_self_import() as a static
inline helper in drm_prime.h is permissible?

It's not about the EXPORT_SYMBOL. Please see my reply to Matthew for details.

I think it would be OK to do something like this in the header file:

static inline bool __drm_gem_is_exported_dma_buf(dev, ops, dma_buf)
{
    /* do the prime test here, but with the given ops. */
}

Double-underscore prefix in symbols means 'implementation detail'. The existing drm_gem_is_prime_exported_dma_buf() can be implemented on top; existing callers should continue to use drm_gem_prime_eported_dma_buf().  Other drivers can use the new helper for the test, as they use the same logic internally.


drm_gem_is_prime_exported_dma_buf() do not take object reference.
The code duplicated in multliple drivers take object reference. So, we
need the helper routine to take object reference.

Niranjana

Best regards
Thomas



Niranjana

Best regards
Thomas


Am 13.10.26 um 03:06 schrieb Niranjana Vishwanathapura:
Detecting that a PRIME dma-buf being imported was exported by the same
DRM device is a pattern currently open-coded in many drivers (compare
dma_buf->ops against the driver's own ops, check obj->dev == dev, then
return the GEM object with an extra reference). This series adds generic
helpers for it and converts several drivers to use them.

Patch 1 adds drm_gem_prime_self_import(dev, dma_buf, ops): for a dma-buf
self-exported via the given ops, it returns the backing GEM object with
a reference, letting a driver short-circuit the generic PRIME import and
skip the extra dma-buf file reference. Patch 2 converts Xe to it.

Patch 3 adds drm_gem_prime_dma_buf_to_gem(), a thin wrapper that uses the core PRIME ops, and replaces the drm_gem_is_prime_exported_dma_buf() bool
predicate with it so the shmem importer resolves the object directly
(the sole caller already wanted the referenced object).

Patches 4-6 convert panthor, panfrost and amdgpu to
drm_gem_prime_self_import(), removing the duplicated open-coded checks.

No intended functional change.

Assisted-by: GitHub-Copilot:claude-opus-4.8
Signed-off-by: Niranjana Vishwanathapura <[email protected]>

Farah Kassabri (2):
  drm/gem: add helper to detect self-imported PRIME dma-bufs
  drm/xe/dma-buf: Use drm helper to detect dma-buf self-import

Niranjana Vishwanathapura (4):
  drm/gem: add drm_gem_prime_dma_buf_to_gem() self-import helper
  drm/panthor: use drm_gem_prime_self_import() helper
  drm/panfrost: use drm_gem_prime_self_import() helper
  drm/amdgpu: use drm_gem_prime_self_import() helper

 drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 14 +---
 drivers/gpu/drm/drm_gem_shmem_helper.c      | 14 ++--
 drivers/gpu/drm/drm_prime.c                 | 74 +++++++++++++++------
 drivers/gpu/drm/panfrost/panfrost_gem.c     | 10 +--
 drivers/gpu/drm/panthor/panthor_gem.c       | 10 +--
 drivers/gpu/drm/xe/xe_dma_buf.c             | 23 ++++---
 drivers/gpu/drm/xe/xe_dma_buf.h             |  2 +
 include/drm/drm_prime.h                     |  8 ++-
 8 files changed, 91 insertions(+), 64 deletions(-)


--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Stefan Gaiser, Jochen Jaser, Abhinav Puri, (HRB 36809, AG Nürnberg)



--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Stefan Gaiser, Jochen Jaser, Abhinav Puri, (HRB 36809, AG Nürnberg)


Reply via email to