summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/display/intel_display_types.h1
-rw-r--r--drivers/gpu/drm/i915/gem/i915_gem_pages.c20
-rw-r--r--drivers/gpu/drm/xe/display/xe_panic.c20
3 files changed, 19 insertions, 22 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index fd9d2527889b..608fd69af657 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -149,6 +149,7 @@ struct intel_framebuffer {
unsigned int vtd_guard;
unsigned int (*panic_tiling)(unsigned int x, unsigned int y, unsigned int width);
+ void *panic;
};
enum intel_hotplug_state {
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pages.c b/drivers/gpu/drm/i915/gem/i915_gem_pages.c
index c16a57160b26..c54ed1b33e60 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_pages.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_pages.c
@@ -368,11 +368,6 @@ struct i915_framebuffer {
struct i915_panic_data panic;
};
-static inline struct i915_panic_data *to_i915_panic_data(struct intel_framebuffer *fb)
-{
- return &container_of_const(fb, struct i915_framebuffer, base)->panic;
-}
-
static void i915_panic_kunmap(struct i915_panic_data *panic)
{
if (panic->vaddr) {
@@ -420,7 +415,7 @@ static void i915_gem_object_panic_page_set_pixel(struct drm_scanout_buffer *sb,
unsigned int new_page;
unsigned int offset;
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
- struct i915_panic_data *panic = to_i915_panic_data(fb);
+ struct i915_panic_data *panic = fb->panic;
if (fb->panic_tiling)
offset = fb->panic_tiling(sb->width, x, y);
@@ -446,9 +441,12 @@ struct intel_framebuffer *i915_gem_object_alloc_framebuffer(void)
struct i915_framebuffer *i915_fb;
i915_fb = kzalloc(sizeof(*i915_fb), GFP_KERNEL);
- if (i915_fb)
- return &i915_fb->base;
- return NULL;
+ if (!i915_fb)
+ return NULL;
+
+ i915_fb->base.panic = &i915_fb->panic;
+
+ return &i915_fb->base;
}
/*
@@ -460,7 +458,7 @@ int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb)
{
enum i915_map_type has_type;
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
- struct i915_panic_data *panic = to_i915_panic_data(fb);
+ struct i915_panic_data *panic = fb->panic;
struct drm_i915_gem_object *obj = to_intel_bo(intel_fb_bo(&fb->base));
void *ptr;
@@ -488,7 +486,7 @@ int i915_gem_object_panic_setup(struct drm_scanout_buffer *sb)
void i915_gem_object_panic_finish(struct intel_framebuffer *fb)
{
- struct i915_panic_data *panic = to_i915_panic_data(fb);
+ struct i915_panic_data *panic = fb->panic;
i915_panic_kunmap(panic);
panic->page = -1;
diff --git a/drivers/gpu/drm/xe/display/xe_panic.c b/drivers/gpu/drm/xe/display/xe_panic.c
index 18b27a06b260..fc1804d330e4 100644
--- a/drivers/gpu/drm/xe/display/xe_panic.c
+++ b/drivers/gpu/drm/xe/display/xe_panic.c
@@ -20,11 +20,6 @@ struct xe_framebuffer {
struct xe_panic_data panic;
};
-static inline struct xe_panic_data *to_xe_panic_data(struct intel_framebuffer *fb)
-{
- return &container_of_const(fb, struct xe_framebuffer, base)->panic;
-}
-
static void xe_panic_kunmap(struct xe_panic_data *panic)
{
if (panic->vaddr) {
@@ -43,7 +38,7 @@ static void xe_panic_page_set_pixel(struct drm_scanout_buffer *sb, unsigned int
unsigned int y, u32 color)
{
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
- struct xe_panic_data *panic = to_xe_panic_data(fb);
+ struct xe_panic_data *panic = fb->panic;
struct xe_bo *bo = gem_to_xe_bo(intel_fb_bo(&fb->base));
unsigned int new_page;
unsigned int offset;
@@ -72,15 +67,18 @@ struct intel_framebuffer *intel_bo_alloc_framebuffer(void)
struct xe_framebuffer *xe_fb;
xe_fb = kzalloc(sizeof(*xe_fb), GFP_KERNEL);
- if (xe_fb)
- return &xe_fb->base;
- return NULL;
+ if (!xe_fb)
+ return NULL;
+
+ xe_fb->base.panic = &xe_fb->panic;
+
+ return &xe_fb->base;
}
int intel_panic_setup(struct drm_scanout_buffer *sb)
{
struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
- struct xe_panic_data *panic = to_xe_panic_data(fb);
+ struct xe_panic_data *panic = fb->panic;
panic->page = -1;
sb->set_pixel = xe_panic_page_set_pixel;
@@ -89,7 +87,7 @@ int intel_panic_setup(struct drm_scanout_buffer *sb)
void intel_panic_finish(struct intel_framebuffer *fb)
{
- struct xe_panic_data *panic = to_xe_panic_data(fb);
+ struct xe_panic_data *panic = fb->panic;
xe_panic_kunmap(panic);
panic->page = -1;