Skip to content

Commit 4e839f2

Browse files
committed
drm/{i915,xe}/fb: add panic pointer member to struct intel_framebuffer
Add a panic data pointer member in struct intel_framebuffer in preparation for breaking the artificial subclassing between intel_framebuffer and panic structures. 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/41f42e1de8545409274d54854aa12e0fb390e394.1756835342.git.jani.nikula@intel.com
1 parent 05a85e7 commit 4e839f2

3 files changed

Lines changed: 19 additions & 22 deletions

File tree

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ struct intel_framebuffer {
149149
unsigned int vtd_guard;
150150

151151
unsigned int (*panic_tiling)(unsigned int x, unsigned int y, unsigned int width);
152+
void *panic;
152153
};
153154

154155
enum intel_hotplug_state {

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -368,11 +368,6 @@ struct i915_framebuffer {
368368
struct i915_panic_data panic;
369369
};
370370

371-
static inline struct i915_panic_data *to_i915_panic_data(struct intel_framebuffer *fb)
372-
{
373-
return &container_of_const(fb, struct i915_framebuffer, base)->panic;
374-
}
375-
376371
static void i915_panic_kunmap(struct i915_panic_data *panic)
377372
{
378373
if (panic->vaddr) {
@@ -420,7 +415,7 @@ static void i915_gem_object_panic_page_set_pixel(struct drm_scanout_buffer *sb,
420415
unsigned int new_page;
421416
unsigned int offset;
422417
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
423-
struct i915_panic_data *panic = to_i915_panic_data(fb);
418+
struct i915_panic_data *panic = fb->panic;
424419

425420
if (fb->panic_tiling)
426421
offset = fb->panic_tiling(sb->width, x, y);
@@ -446,9 +441,12 @@ struct intel_framebuffer *i915_gem_object_alloc_framebuffer(void)
446441
struct i915_framebuffer *i915_fb;
447442

448443
i915_fb = kzalloc(sizeof(*i915_fb), GFP_KERNEL);
449-
if (i915_fb)
450-
return &i915_fb->base;
451-
return NULL;
444+
if (!i915_fb)
445+
return NULL;
446+
447+
i915_fb->base.panic = &i915_fb->panic;
448+
449+
return &i915_fb->base;
452450
}
453451

454452
/*
@@ -460,7 +458,7 @@ int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb)
460458
{
461459
enum i915_map_type has_type;
462460
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
463-
struct i915_panic_data *panic = to_i915_panic_data(fb);
461+
struct i915_panic_data *panic = fb->panic;
464462
struct drm_i915_gem_object *obj = to_intel_bo(intel_fb_bo(&fb->base));
465463
void *ptr;
466464

@@ -488,7 +486,7 @@ int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb)
488486

489487
void i915_gem_object_panic_finish(struct intel_framebuffer *fb)
490488
{
491-
struct i915_panic_data *panic = to_i915_panic_data(fb);
489+
struct i915_panic_data *panic = fb->panic;
492490

493491
i915_panic_kunmap(panic);
494492
panic->page = -1;

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,6 @@ struct xe_framebuffer {
2020
struct xe_panic_data panic;
2121
};
2222

23-
static inline struct xe_panic_data *to_xe_panic_data(struct intel_framebuffer *fb)
24-
{
25-
return &container_of_const(fb, struct xe_framebuffer, base)->panic;
26-
}
27-
2823
static void xe_panic_kunmap(struct xe_panic_data *panic)
2924
{
3025
if (panic->vaddr) {
@@ -43,7 +38,7 @@ static void xe_panic_page_set_pixel(struct drm_scanout_buffer *sb, unsigned int
4338
unsigned int y, u32 color)
4439
{
4540
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
46-
struct xe_panic_data *panic = to_xe_panic_data(fb);
41+
struct xe_panic_data *panic = fb->panic;
4742
struct xe_bo *bo = gem_to_xe_bo(intel_fb_bo(&fb->base));
4843
unsigned int new_page;
4944
unsigned int offset;
@@ -72,15 +67,18 @@ struct intel_framebuffer *intel_bo_alloc_framebuffer(void)
7267
struct xe_framebuffer *xe_fb;
7368

7469
xe_fb = kzalloc(sizeof(*xe_fb), GFP_KERNEL);
75-
if (xe_fb)
76-
return &xe_fb->base;
77-
return NULL;
70+
if (!xe_fb)
71+
return NULL;
72+
73+
xe_fb->base.panic = &xe_fb->panic;
74+
75+
return &xe_fb->base;
7876
}
7977

8078
int intel_panic_setup(struct drm_scanout_buffer *sb)
8179
{
8280
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
83-
struct xe_panic_data *panic = to_xe_panic_data(fb);
81+
struct xe_panic_data *panic = fb->panic;
8482

8583
panic->page = -1;
8684
sb->set_pixel = xe_panic_page_set_pixel;
@@ -89,7 +87,7 @@ int intel_panic_setup(struct drm_scanout_buffer *sb)
8987

9088
void intel_panic_finish(struct intel_framebuffer *fb)
9189
{
92-
struct xe_panic_data *panic = to_xe_panic_data(fb);
90+
struct xe_panic_data *panic = fb->panic;
9391

9492
xe_panic_kunmap(panic);
9593
panic->page = -1;

0 commit comments

Comments
 (0)