Skip to content

Commit 0b47032

Browse files
committed
drm/{i915,xe}/panic: pass struct intel_panic to intel_panic_setup()
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
1 parent 427a3f9 commit 0b47032

6 files changed

Lines changed: 18 additions & 14 deletions

File tree

drivers/gpu/drm/i915/display/intel_panic.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
// SPDX-License-Identifier: MIT
22
/* Copyright © 2025 Intel Corporation */
33

4+
#include <drm/drm_panic.h>
5+
46
#include "gem/i915_gem_object.h"
7+
#include "intel_display_types.h"
8+
#include "intel_fb.h"
59
#include "intel_panic.h"
610

711
struct intel_panic *intel_panic_alloc(void)
812
{
913
return i915_gem_object_alloc_panic();
1014
}
1115

12-
int intel_panic_setup(struct drm_scanout_buffer *sb)
16+
int intel_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb)
1317
{
14-
return i915_gem_object_panic_setup(sb);
18+
struct intel_framebuffer *fb = sb->private;
19+
struct drm_gem_object *obj = intel_fb_bo(&fb->base);
20+
21+
return i915_gem_object_panic_setup(panic, sb, obj, fb->panic_tiling);
1522
}
1623

1724
void intel_panic_finish(struct intel_panic *panic)

drivers/gpu/drm/i915/display/intel_panic.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ struct drm_scanout_buffer;
88
struct intel_panic;
99

1010
struct intel_panic *intel_panic_alloc(void);
11-
int intel_panic_setup(struct drm_scanout_buffer *sb);
11+
int intel_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb);
1212
void intel_panic_finish(struct intel_panic *panic);
1313

1414
#endif /* __INTEL_PANIC_H__ */

drivers/gpu/drm/i915/display/intel_plane.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1409,7 +1409,7 @@ static int intel_get_scanout_buffer(struct drm_plane *plane,
14091409
return -EOPNOTSUPP;
14101410
}
14111411
sb->private = intel_fb;
1412-
ret = intel_panic_setup(sb);
1412+
ret = intel_panic_setup(intel_fb->panic, sb);
14131413
if (ret)
14141414
return ret;
14151415
}

drivers/gpu/drm/i915/gem/i915_gem_object.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,8 @@ int __i915_gem_object_put_pages(struct drm_i915_gem_object *obj);
694694
int i915_gem_object_truncate(struct drm_i915_gem_object *obj);
695695

696696
struct intel_panic *i915_gem_object_alloc_panic(void);
697-
int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb);
697+
int i915_gem_object_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb,
698+
struct drm_gem_object *_obj, bool panic_tiling);
698699
void i915_gem_object_panic_finish(struct intel_panic *panic);
699700

700701
/**

drivers/gpu/drm/i915/gem/i915_gem_pages.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -445,12 +445,11 @@ struct intel_panic *i915_gem_object_alloc_panic(void)
445445
* Use current vaddr if it exists, or setup a list of pages.
446446
* pfn is not supported yet.
447447
*/
448-
int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb)
448+
int i915_gem_object_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb,
449+
struct drm_gem_object *_obj, bool panic_tiling)
449450
{
450451
enum i915_map_type has_type;
451-
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
452-
struct intel_panic *panic = fb->panic;
453-
struct drm_i915_gem_object *obj = to_intel_bo(intel_fb_bo(&fb->base));
452+
struct drm_i915_gem_object *obj = to_intel_bo(_obj);
454453
void *ptr;
455454

456455
ptr = page_unpack_bits(obj->mm.mapping, &has_type);
@@ -460,7 +459,7 @@ int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb)
460459
else
461460
iosys_map_set_vaddr(&sb->map[0], ptr);
462461

463-
if (fb->panic_tiling)
462+
if (panic_tiling)
464463
sb->set_pixel = i915_gem_object_panic_map_set_pixel;
465464
return 0;
466465
}

drivers/gpu/drm/xe/display/xe_panic.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,8 @@ struct intel_panic *intel_panic_alloc(void)
6666
return panic;
6767
}
6868

69-
int intel_panic_setup(struct drm_scanout_buffer *sb)
69+
int intel_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb)
7070
{
71-
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
72-
struct intel_panic *panic = fb->panic;
73-
7471
panic->page = -1;
7572
sb->set_pixel = xe_panic_page_set_pixel;
7673
return 0;

0 commit comments

Comments
 (0)