From 70cd1f2c476f7d3a01189dddaa8077b96b8497c7 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Thu, 3 Jul 2025 17:00:19 +0200 Subject: [PATCH 01/10] drm/amdgpu: Provide custom framebuffer destroy function Change amdgpu's framebuffer destroy function from drm_gem_fb_destroy() to a custom implementation. The former references GEM handles, while the driver references GEM objects. The custom helper fixes this. Signed-off-by: Thomas Zimmermann --- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index 35c778426a7c..dc03e52c7690 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -545,13 +545,24 @@ static int amdgpu_dirtyfb(struct drm_framebuffer *fb, struct drm_file *file, num_clips); } +static void amdgpu_fb_destroy(struct drm_framebuffer *fb) +{ + unsigned int i; + + for (i = 0; i < fb->format->num_planes; i++) + drm_gem_object_put(fb->obj[i]); + + drm_framebuffer_cleanup(fb); + kfree(fb); +} + static const struct drm_framebuffer_funcs amdgpu_fb_funcs = { - .destroy = drm_gem_fb_destroy, + .destroy = amdgpu_fb_destroy, .create_handle = drm_gem_fb_create_handle, }; static const struct drm_framebuffer_funcs amdgpu_fb_funcs_atomic = { - .destroy = drm_gem_fb_destroy, + .destroy = amdgpu_fb_destroy, .create_handle = drm_gem_fb_create_handle, .dirty = amdgpu_dirtyfb }; -- 2.50.0