On 02/06/2026 12:09, Jani Nikula wrote:
Start reducing i915 and xe core dependency on struct intel_framebuffer
by passing the fb obj from display.


Thanks, it looks good to me.

Reviewed-by: Jocelyn Falempe <[email protected]>

Cc: Jocelyn Falempe <[email protected]>
Signed-off-by: Jani Nikula <[email protected]>
---
  drivers/gpu/drm/i915/display/intel_parent.c  | 5 +++--
  drivers/gpu/drm/i915/display/intel_parent.h  | 3 ++-
  drivers/gpu/drm/i915/display/intel_plane.c   | 2 +-
  drivers/gpu/drm/i915/gem/i915_gem_panic.c    | 5 ++---
  drivers/gpu/drm/xe/display/xe_panic.c        | 6 +++---
  include/drm/intel/display_parent_interface.h | 3 ++-
  6 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_parent.c 
b/drivers/gpu/drm/i915/display/intel_parent.c
index a5816561be40..0b2bc2d38442 100644
--- a/drivers/gpu/drm/i915/display/intel_parent.c
+++ b/drivers/gpu/drm/i915/display/intel_parent.c
@@ -251,9 +251,10 @@ struct intel_panic *intel_parent_panic_alloc(struct 
intel_display *display)
        return display->parent->panic->alloc();
  }
-int intel_parent_panic_setup(struct intel_display *display, struct intel_panic *panic, struct drm_scanout_buffer *sb)
+int intel_parent_panic_setup(struct intel_display *display, struct intel_panic 
*panic,
+                            struct drm_scanout_buffer *sb, struct 
drm_gem_object *obj)
  {
-       return display->parent->panic->setup(panic, sb);
+       return display->parent->panic->setup(panic, sb, obj);
  }
void intel_parent_panic_finish(struct intel_display *display, struct intel_panic *panic)
diff --git a/drivers/gpu/drm/i915/display/intel_parent.h 
b/drivers/gpu/drm/i915/display/intel_parent.h
index 27e35f891a6b..4197d1b1af61 100644
--- a/drivers/gpu/drm/i915/display/intel_parent.h
+++ b/drivers/gpu/drm/i915/display/intel_parent.h
@@ -105,7 +105,8 @@ void intel_parent_overlay_cleanup(struct intel_display 
*display);
/* panic */
  struct intel_panic *intel_parent_panic_alloc(struct intel_display *display);
-int intel_parent_panic_setup(struct intel_display *display, struct intel_panic 
*panic, struct drm_scanout_buffer *sb);
+int intel_parent_panic_setup(struct intel_display *display, struct intel_panic 
*panic,
+                            struct drm_scanout_buffer *sb, struct 
drm_gem_object *obj);
  void intel_parent_panic_finish(struct intel_display *display, struct 
intel_panic *panic);
/* pc8 */
diff --git a/drivers/gpu/drm/i915/display/intel_plane.c 
b/drivers/gpu/drm/i915/display/intel_plane.c
index f55a6a2f7dd1..75eae994433d 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c
@@ -1590,7 +1590,7 @@ static int intel_get_scanout_buffer(struct drm_plane 
*plane,
                                return -EOPNOTSUPP;
                }
                sb->private = fb;
-               ret = intel_parent_panic_setup(display, fb->panic, sb);
+               ret = intel_parent_panic_setup(display, fb->panic, sb, obj);
                if (ret)
                        return ret;
        }
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_panic.c 
b/drivers/gpu/drm/i915/gem/i915_gem_panic.c
index bb26a0ece176..001ccfbf7ab7 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_panic.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_panic.c
@@ -5,7 +5,6 @@
  #include <drm/drm_panic.h>
  #include <drm/intel/display_parent_interface.h>
-#include "display/intel_fb.h"
  #include "display/intel_display_types.h"
  #include "i915_gem_object.h"
  #include "i915_gem_panic.h"
@@ -98,10 +97,10 @@ static struct intel_panic *i915_gem_object_alloc_panic(void)
   * Use current vaddr if it exists, or setup a list of pages.
   * pfn is not supported yet.
   */
-static int i915_gem_object_panic_setup(struct intel_panic *panic, struct 
drm_scanout_buffer *sb)
+static int i915_gem_object_panic_setup(struct intel_panic *panic, struct 
drm_scanout_buffer *sb,
+                                      struct drm_gem_object *_obj)
  {
        struct intel_framebuffer *fb = sb->private;
-       struct drm_gem_object *_obj = intel_fb_bo(&fb->base);
        bool panic_tiling = fb->panic_tiling;
        enum i915_map_type has_type;
        struct drm_i915_gem_object *obj = to_intel_bo(_obj);
diff --git a/drivers/gpu/drm/xe/display/xe_panic.c 
b/drivers/gpu/drm/xe/display/xe_panic.c
index bebb21d617f0..d7f456eec597 100644
--- a/drivers/gpu/drm/xe/display/xe_panic.c
+++ b/drivers/gpu/drm/xe/display/xe_panic.c
@@ -84,10 +84,10 @@ static struct intel_panic *xe_panic_alloc(void)
        return panic;
  }
-static int xe_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb)
+static int xe_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer 
*sb,
+                         struct drm_gem_object *obj)
  {
-       struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
-       struct xe_bo *bo = gem_to_xe_bo(intel_fb_bo(&fb->base));
+       struct xe_bo *bo = gem_to_xe_bo(obj);
if (xe_bo_is_vram(bo) && !xe_bo_is_visible_vram(bo))
                return -ENODEV;
diff --git a/include/drm/intel/display_parent_interface.h 
b/include/drm/intel/display_parent_interface.h
index 39991afeb173..b0362e231d84 100644
--- a/include/drm/intel/display_parent_interface.h
+++ b/include/drm/intel/display_parent_interface.h
@@ -167,7 +167,8 @@ struct intel_display_overlay_interface {
struct intel_display_panic_interface {
        struct intel_panic *(*alloc)(void);
-       int (*setup)(struct intel_panic *panic, struct drm_scanout_buffer *sb);
+       int (*setup)(struct intel_panic *panic, struct drm_scanout_buffer *sb,
+                    struct drm_gem_object *obj);
        void (*finish)(struct intel_panic *panic);
  };

Reply via email to