mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
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
This commit is contained in:
parent
05a85e781f
commit
4e839f2c7b
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user