mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
drm/i915: move pending_fb_pin to struct intel_display
pending_fb_pin is more about display than GPU reset. Move it to struct intel_display. The restore sub-struct already contains reset related members, so move it there. Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/ff779ae318610e6f6813474bcaa53851ffff909d.1741001054.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
6498a5e010
commit
30f2581b63
|
|
@ -512,6 +512,8 @@ struct intel_display {
|
|||
/* restore state for suspend/resume and display reset */
|
||||
struct drm_atomic_state *modeset_state;
|
||||
struct drm_modeset_acquire_ctx reset_ctx;
|
||||
/* modeset stuck tracking for reset */
|
||||
atomic_t pending_fb_pin;
|
||||
u32 saveDSPARB;
|
||||
u32 saveSWF0[16];
|
||||
u32 saveSWF1[16];
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ void intel_display_reset_prepare(struct intel_display *display)
|
|||
smp_mb__after_atomic();
|
||||
wake_up_bit(&to_gt(dev_priv)->reset.flags, I915_RESET_MODESET);
|
||||
|
||||
if (atomic_read(&dev_priv->gpu_error.pending_fb_pin)) {
|
||||
if (atomic_read(&display->restore.pending_fb_pin)) {
|
||||
drm_dbg_kms(display->drm,
|
||||
"Modeset potentially stuck, unbreaking through wedging\n");
|
||||
intel_gt_set_wedged(to_gt(dev_priv));
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ struct i915_vma *intel_dpt_pin_to_ggtt(struct i915_address_space *vm,
|
|||
unsigned int alignment)
|
||||
{
|
||||
struct drm_i915_private *i915 = vm->i915;
|
||||
struct intel_display *display = &i915->display;
|
||||
struct i915_dpt *dpt = i915_vm_to_dpt(vm);
|
||||
intel_wakeref_t wakeref;
|
||||
struct i915_vma *vma;
|
||||
|
|
@ -137,7 +138,7 @@ struct i915_vma *intel_dpt_pin_to_ggtt(struct i915_address_space *vm,
|
|||
pin_flags |= PIN_MAPPABLE;
|
||||
|
||||
wakeref = intel_runtime_pm_get(&i915->runtime_pm);
|
||||
atomic_inc(&i915->gpu_error.pending_fb_pin);
|
||||
atomic_inc(&display->restore.pending_fb_pin);
|
||||
|
||||
for_i915_gem_ww(&ww, err, true) {
|
||||
err = i915_gem_object_lock(dpt->obj, &ww);
|
||||
|
|
@ -167,7 +168,7 @@ struct i915_vma *intel_dpt_pin_to_ggtt(struct i915_address_space *vm,
|
|||
|
||||
dpt->obj->mm.dirty = true;
|
||||
|
||||
atomic_dec(&i915->gpu_error.pending_fb_pin);
|
||||
atomic_dec(&display->restore.pending_fb_pin);
|
||||
intel_runtime_pm_put(&i915->runtime_pm, wakeref);
|
||||
|
||||
return err ? ERR_PTR(err) : vma;
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
|
|||
struct i915_address_space *vm)
|
||||
{
|
||||
struct drm_device *dev = fb->dev;
|
||||
struct intel_display *display = to_intel_display(dev);
|
||||
struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
struct drm_gem_object *_obj = intel_fb_bo(fb);
|
||||
struct drm_i915_gem_object *obj = to_intel_bo(_obj);
|
||||
|
|
@ -42,7 +43,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
|
|||
if (WARN_ON(!i915_gem_object_is_framebuffer(obj)))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
atomic_inc(&dev_priv->gpu_error.pending_fb_pin);
|
||||
atomic_inc(&display->restore.pending_fb_pin);
|
||||
|
||||
for_i915_gem_ww(&ww, ret, true) {
|
||||
ret = i915_gem_object_lock(obj, &ww);
|
||||
|
|
@ -97,7 +98,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
|
|||
|
||||
i915_vma_get(vma);
|
||||
err:
|
||||
atomic_dec(&dev_priv->gpu_error.pending_fb_pin);
|
||||
atomic_dec(&display->restore.pending_fb_pin);
|
||||
|
||||
return vma;
|
||||
}
|
||||
|
|
@ -112,6 +113,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
|
|||
unsigned long *out_flags)
|
||||
{
|
||||
struct drm_device *dev = fb->dev;
|
||||
struct intel_display *display = to_intel_display(dev);
|
||||
struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
struct drm_gem_object *_obj = intel_fb_bo(fb);
|
||||
struct drm_i915_gem_object *obj = to_intel_bo(_obj);
|
||||
|
|
@ -136,7 +138,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
|
|||
*/
|
||||
wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
|
||||
|
||||
atomic_inc(&dev_priv->gpu_error.pending_fb_pin);
|
||||
atomic_inc(&display->restore.pending_fb_pin);
|
||||
|
||||
/*
|
||||
* Valleyview is definitely limited to scanning out the first
|
||||
|
|
@ -212,7 +214,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
|
|||
if (ret)
|
||||
vma = ERR_PTR(ret);
|
||||
|
||||
atomic_dec(&dev_priv->gpu_error.pending_fb_pin);
|
||||
atomic_dec(&display->restore.pending_fb_pin);
|
||||
intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref);
|
||||
return vma;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -800,7 +800,6 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay,
|
|||
struct drm_intel_overlay_put_image *params)
|
||||
{
|
||||
struct intel_display *display = overlay->display;
|
||||
struct drm_i915_private *dev_priv = to_i915(display->drm);
|
||||
struct overlay_registers __iomem *regs = overlay->regs;
|
||||
u32 swidth, swidthsw, sheight, ostride;
|
||||
enum pipe pipe = overlay->crtc->pipe;
|
||||
|
|
@ -815,7 +814,7 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay,
|
|||
if (ret != 0)
|
||||
return ret;
|
||||
|
||||
atomic_inc(&dev_priv->gpu_error.pending_fb_pin);
|
||||
atomic_inc(&display->restore.pending_fb_pin);
|
||||
|
||||
vma = intel_overlay_pin_fb(new_bo);
|
||||
if (IS_ERR(vma)) {
|
||||
|
|
@ -903,7 +902,7 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay,
|
|||
out_unpin:
|
||||
i915_vma_unpin(vma);
|
||||
out_pin_section:
|
||||
atomic_dec(&dev_priv->gpu_error.pending_fb_pin);
|
||||
atomic_dec(&display->restore.pending_fb_pin);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -224,8 +224,6 @@ struct i915_gpu_error {
|
|||
/* Protected by the above dev->gpu_error.lock. */
|
||||
struct i915_gpu_coredump *first_error;
|
||||
|
||||
atomic_t pending_fb_pin;
|
||||
|
||||
/** Number of times the device has been reset (global) */
|
||||
atomic_t reset_count;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user