]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/{i915,xe}/panic: pass struct intel_panic to intel_panic_setup()
authorJani Nikula <jani.nikula@intel.com>
Tue, 2 Sep 2025 17:51:54 +0000 (20:51 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 8 Sep 2025 11:23:46 +0000 (14:23 +0300)
Reduce the struct intel_framebuffer usage within the panic
implementation.

Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: Maarten Lankhorst <dev@lankhorst.se>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://lore.kernel.org/r/2a016167b1f6f0b432aed0a630f9dbcd07fadb7b.1756835342.git.jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_panic.c
drivers/gpu/drm/i915/display/intel_panic.h
drivers/gpu/drm/i915/display/intel_plane.c
drivers/gpu/drm/i915/gem/i915_gem_object.h
drivers/gpu/drm/i915/gem/i915_gem_pages.c
drivers/gpu/drm/xe/display/xe_panic.c

index c8ac8b5a39f370ac6001f1ae8ebc8170a9ed3661..7311ce4e8b6c32a88a8283399c071428abea2672 100644 (file)
@@ -1,7 +1,11 @@
 // SPDX-License-Identifier: MIT
 /* Copyright © 2025 Intel Corporation */
 
+#include <drm/drm_panic.h>
+
 #include "gem/i915_gem_object.h"
+#include "intel_display_types.h"
+#include "intel_fb.h"
 #include "intel_panic.h"
 
 struct intel_panic *intel_panic_alloc(void)
@@ -9,9 +13,12 @@ struct intel_panic *intel_panic_alloc(void)
        return i915_gem_object_alloc_panic();
 }
 
-int intel_panic_setup(struct drm_scanout_buffer *sb)
+int intel_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb)
 {
-       return i915_gem_object_panic_setup(sb);
+       struct intel_framebuffer *fb = sb->private;
+       struct drm_gem_object *obj = intel_fb_bo(&fb->base);
+
+       return i915_gem_object_panic_setup(panic, sb, obj, fb->panic_tiling);
 }
 
 void intel_panic_finish(struct intel_panic *panic)
index cec193e725a456a88b05ff8ce856d69893ccfabd..afb472e924aa7afba72183f5094c1274e28be2f2 100644 (file)
@@ -8,7 +8,7 @@ struct drm_scanout_buffer;
 struct intel_panic;
 
 struct intel_panic *intel_panic_alloc(void);
-int intel_panic_setup(struct drm_scanout_buffer *sb);
+int intel_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb);
 void intel_panic_finish(struct intel_panic *panic);
 
 #endif /* __INTEL_PANIC_H__ */
index 6a3f4a7b6dfdcb08e6f26aece90910e49f10f497..2329f09d413d0f0f2cf92dfde7444e8fd82c531a 100644 (file)
@@ -1409,7 +1409,7 @@ static int intel_get_scanout_buffer(struct drm_plane *plane,
                                return -EOPNOTSUPP;
                }
                sb->private = intel_fb;
-               ret = intel_panic_setup(sb);
+               ret = intel_panic_setup(intel_fb->panic, sb);
                if (ret)
                        return ret;
        }
index 08da7ec670fe1efa716c764c19e0d6e038f990fd..148034ef504d5a929f2ae533b5f31b29134afec9 100644 (file)
@@ -694,7 +694,8 @@ int __i915_gem_object_put_pages(struct drm_i915_gem_object *obj);
 int i915_gem_object_truncate(struct drm_i915_gem_object *obj);
 
 struct intel_panic *i915_gem_object_alloc_panic(void);
-int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb);
+int i915_gem_object_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb,
+                               struct drm_gem_object *_obj, bool panic_tiling);
 void i915_gem_object_panic_finish(struct intel_panic *panic);
 
 /**
index 3505b1842c407f402454c71e375a51d2d82a3ce5..76d2178572b61619c6c6b1d1958927234db67431 100644 (file)
@@ -445,12 +445,11 @@ 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.
  */
-int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb)
+int i915_gem_object_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb,
+                               struct drm_gem_object *_obj, bool panic_tiling)
 {
        enum i915_map_type has_type;
-       struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
-       struct intel_panic *panic = fb->panic;
-       struct drm_i915_gem_object *obj = to_intel_bo(intel_fb_bo(&fb->base));
+       struct drm_i915_gem_object *obj = to_intel_bo(_obj);
        void *ptr;
 
        ptr = page_unpack_bits(obj->mm.mapping, &has_type);
@@ -460,7 +459,7 @@ int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb)
                else
                        iosys_map_set_vaddr(&sb->map[0], ptr);
 
-               if (fb->panic_tiling)
+               if (panic_tiling)
                        sb->set_pixel = i915_gem_object_panic_map_set_pixel;
                return 0;
        }
index ea9583473ea3457a9fbb359e1ed28a04c559d9f9..f32b23338331aead4b8a45193ede3b321c20861d 100644 (file)
@@ -66,11 +66,8 @@ struct intel_panic *intel_panic_alloc(void)
        return panic;
 }
 
-int intel_panic_setup(struct drm_scanout_buffer *sb)
+int intel_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb)
 {
-       struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
-       struct intel_panic *panic = fb->panic;
-
        panic->page = -1;
        sb->set_pixel = xe_panic_page_set_pixel;
        return 0;