[PATCH 09/15] drm/panthor: Test for imported buffers with drm_gem_is_imported()
Steven Price
steven.price at arm.com
Mon Mar 31 09:02:53 UTC 2025
On 17/03/2025 13:06, Thomas Zimmermann wrote:
> Instead of testing import_attach for imported GEM buffers, invoke
> drm_gem_is_imported() to do the test. The helper tests the dma_buf
> itself while import_attach is just an artifact of the import. Prepares
> to make import_attach optional.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> Cc: Boris Brezillon <boris.brezillon at collabora.com>
> Cc: Steven Price <steven.price at arm.com>
> Cc: Liviu Dudau <liviu.dudau at arm.com>
Reviewed-by: Steven Price <steven.price at arm.com>
> ---
> drivers/gpu/drm/panthor/panthor_gem.c | 2 +-
> drivers/gpu/drm/panthor/panthor_mmu.c | 10 +++++-----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/panthor/panthor_gem.c b/drivers/gpu/drm/panthor/panthor_gem.c
> index 8244a4e6c2a2..fd014ccc3bfc 100644
> --- a/drivers/gpu/drm/panthor/panthor_gem.c
> +++ b/drivers/gpu/drm/panthor/panthor_gem.c
> @@ -155,7 +155,7 @@ static enum drm_gem_object_status panthor_gem_status(struct drm_gem_object *obj)
> struct panthor_gem_object *bo = to_panthor_bo(obj);
> enum drm_gem_object_status res = 0;
>
> - if (bo->base.base.import_attach || bo->base.pages)
> + if (drm_gem_is_imported(&bo->base.base) || bo->base.pages)
> res |= DRM_GEM_OBJECT_RESIDENT;
>
> return res;
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> index 12a02e28f50f..3e123159ac10 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -1103,7 +1103,7 @@ static void panthor_vm_bo_put(struct drm_gpuvm_bo *vm_bo)
> /* If the vm_bo object was destroyed, release the pin reference that
> * was hold by this object.
> */
> - if (unpin && !bo->base.base.import_attach)
> + if (unpin && !drm_gem_is_imported(&bo->base.base))
> drm_gem_shmem_unpin(&bo->base);
>
> drm_gpuvm_put(vm);
> @@ -1234,7 +1234,7 @@ static int panthor_vm_prepare_map_op_ctx(struct panthor_vm_op_ctx *op_ctx,
> if (ret)
> goto err_cleanup;
>
> - if (!bo->base.base.import_attach) {
> + if (!drm_gem_is_imported(&bo->base.base)) {
> /* Pre-reserve the BO pages, so the map operation doesn't have to
> * allocate.
> */
> @@ -1245,7 +1245,7 @@ static int panthor_vm_prepare_map_op_ctx(struct panthor_vm_op_ctx *op_ctx,
>
> sgt = drm_gem_shmem_get_pages_sgt(&bo->base);
> if (IS_ERR(sgt)) {
> - if (!bo->base.base.import_attach)
> + if (!drm_gem_is_imported(&bo->base.base))
> drm_gem_shmem_unpin(&bo->base);
>
> ret = PTR_ERR(sgt);
> @@ -1256,7 +1256,7 @@ static int panthor_vm_prepare_map_op_ctx(struct panthor_vm_op_ctx *op_ctx,
>
> preallocated_vm_bo = drm_gpuvm_bo_create(&vm->base, &bo->base.base);
> if (!preallocated_vm_bo) {
> - if (!bo->base.base.import_attach)
> + if (!drm_gem_is_imported(&bo->base.base))
> drm_gem_shmem_unpin(&bo->base);
>
> ret = -ENOMEM;
> @@ -1282,7 +1282,7 @@ static int panthor_vm_prepare_map_op_ctx(struct panthor_vm_op_ctx *op_ctx,
> * which will be released in panthor_vm_bo_put().
> */
> if (preallocated_vm_bo != op_ctx->map.vm_bo &&
> - !bo->base.base.import_attach)
> + !drm_gem_is_imported(&bo->base.base))
> drm_gem_shmem_unpin(&bo->base);
>
> op_ctx->map.bo_offset = offset;
More information about the dri-devel
mailing list