Linux-Next discussions
 help / color / mirror / Atom feed
From: Thorsten Leemhuis <linux@leemhuis.info>
To: Alex Deucher <alexander.deucher@amd.com>,
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	Felix.Kuehling@amd.com
Cc: "Mukul Joshi" <mukul.joshi@amd.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Mark Brown" <broonie@kernel.org>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	rust-for-linux@vger.kernel.org,
	"Linux Next Mailing List" <linux-next@vger.kernel.org>
Subject: Re: [PATCH 1/3] drm/gem: Add callback for when handle count goes to 0
Date: Sat, 5 Sep 2026 07:36:59 +0200	[thread overview]
Message-ID: <aaef18cd-ab55-4fb8-8563-ca3a5ea9cbc6@leemhuis.info> (raw)
In-Reply-To: <20260831183311.1090131-2-alexander.deucher@amd.com>

On 8/31/26 20:33, Alex Deucher wrote:
> From: Mukul Joshi <mukul.joshi@amd.com>
> 
> Add an optional callback for driver-specific cleanup when the GEM
> handle of an object is freed. This will be used by AMDGPU to enable
> freeing of memory exported to other nodes in a UALink pod once all
> user mode references are gone.
> 
> The callback is called outside the object_name_lock and before
> releasing the reference count on the GEM object

This showed up in -next yesterday and afaics broke build on arm64 and
x86_64 for me with the following error from rust:

"""
>> error[E0063]: missing field `handle_free` in initializer of `drm_gem_object_funcs`
>>    --> rust/kernel/drm/gem/mod.rs:265:58
>>     |
>> 265 |     const OBJECT_FUNCS: bindings::drm_gem_object_funcs = bindings::drm_gem_object_funcs {
>>     |                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `handle_free`
>> 
>> error: aborting due to 1 previous error
>> 
>> For more information about this error, try `rustc --explain E0063`.
>> make[2]: *** [rust/Makefile:799: rust/kernel.o] Error 1
>> make[1]: *** [/builddir/build/BUILD/kernel-7.3.0-build/kernel-next-20260904/linux-7.3.0-0.0.next.20260904.221.vanilla.fc43.aarch64/Makefile:1442: prepare] Error 2
>> make: *** [Makefile:256: __sub-make] Error 2
"""
Full log:
https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/next/fedora-43-aarch64/10951622-next-next-all/builder-live.log.gz

Reverting this change and 2/3 from this set fixed the problem for me.

Ciao, Thorsten
> Suggested-by: Christian König <christian.koenig@amd.com>
> Signed-off-by: Mukul Joshi <mukul.joshi@amd.com>
> Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c |  9 +++++++++
>  drivers/gpu/drm/drm_gem.c               |  5 ++++-
>  include/drm/drm_gem.h                   | 11 +++++++++++
>  3 files changed, 24 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> index f754a4a3a1c22..0d579517c03ce 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> @@ -386,6 +386,14 @@ static int amdgpu_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_str
>  	return drm_gem_ttm_mmap(obj, vma);
>  }
>  
> +static void amdgpu_gem_object_handle_free(struct drm_gem_object *gobj)
> +{
> +	struct amdgpu_bo *aobj = gem_to_amdgpu_bo(gobj);
> +
> +	amdgpu_ualink_revoke_exported_memory(aobj);
> +
> +}
> +
>  const struct drm_gem_object_funcs amdgpu_gem_object_funcs = {
>  	.free = amdgpu_gem_object_free,
>  	.open = amdgpu_gem_object_open,
> @@ -395,6 +403,7 @@ const struct drm_gem_object_funcs amdgpu_gem_object_funcs = {
>  	.vunmap = drm_gem_ttm_vunmap,
>  	.mmap = amdgpu_gem_object_mmap,
>  	.vm_ops = &amdgpu_gem_vm_ops,
> +	.handle_free = amdgpu_gem_object_handle_free
>  };
>  
>  static bool amdgpu_gem_are_domains_valid(u32 domains)
> diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
> index e3ed684ddcf29..6a86bd2a0343e 100644
> --- a/drivers/gpu/drm/drm_gem.c
> +++ b/drivers/gpu/drm/drm_gem.c
> @@ -354,8 +354,11 @@ void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj)
>  	}
>  	mutex_unlock(&dev->object_name_lock);
>  
> -	if (final)
> +	if (final) {
> +		if (obj->funcs->handle_free)
> +			obj->funcs->handle_free(obj);
>  		drm_gem_object_put(obj);
> +	}
>  }
>  
>  /*
> diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h
> index 8a704f6a65c15..95d8ae6f85df7 100644
> --- a/include/drm/drm_gem.h
> +++ b/include/drm/drm_gem.h
> @@ -227,6 +227,17 @@ struct drm_gem_object_funcs {
>  	 */
>  	size_t (*rss)(struct drm_gem_object *obj);
>  
> +	/**
> +	 * @handle_free:
> +	 *
> +	 * This callback is called when the GEM handle count goes down to 0.
> +	 * It is currently used by AMDGPU driver to release their exported BO
> +	 * handles.
> +	 *
> +	 * This callback is optional.
> +	 */
> +	void (*handle_free)(struct drm_gem_object *obj);
> +
>  	/**
>  	 * @vm_ops:
>  	 *


       reply	other threads:[~2026-09-05  5:37 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260831183311.1090131-1-alexander.deucher@amd.com>
     [not found] ` <20260831183311.1090131-2-alexander.deucher@amd.com>
2026-09-05  5:36   ` Thorsten Leemhuis [this message]
2026-09-05  9:31     ` [PATCH 1/3] drm/gem: Add callback for when handle count goes to 0 Manuel Ebner
2026-09-05 22:25       ` Klara Modin
2026-09-05 23:41         ` Gary Guo
2026-09-08  4:33         ` Thorsten Leemhuis
2026-09-08 16:03         ` Alex Deucher
2026-09-08 17:57           ` Klara Modin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aaef18cd-ab55-4fb8-8563-ca3a5ea9cbc6@leemhuis.info \
    --to=linux@leemhuis.info \
    --cc=Felix.Kuehling@amd.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=broonie@kernel.org \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-next@vger.kernel.org \
    --cc=mukul.joshi@amd.com \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox