Re: [PATCH 08/11] drm/i915: call assert_device_not_suspended at gen6_force_wake_work

Paulo Zanoni
2014-02-21T18:05:01Z

2014-02-21 13:52 GMT-03:00 Paulo Zanoni <przanoni@gmail.com>:
> From: Paulo Zanoni <paulo.r.zanoni@intel.com>
>
> Because we shouldn't be runtime suspended when forcewake is supposed
> to be enabled.
>
> This commit will trigger the WARNs because we currently have a bug
> with this. The next patches should fix the bug.

Actually I changed the patch order and forgot to remove the sentence
above. Patch 03/11 should fix it.

>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
> drivers/gpu/drm/i915/intel_uncore.c | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 1f7226f..212de36 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -40,6 +40,12 @@
>
> #define __raw_posting_read(dev_priv__, reg__) (void)__raw_i915_read32(dev_priv__, reg__)
>
> +static void
> +assert_device_not_suspended(struct drm_i915_private *dev_priv)
> +{
> + WARN(HAS_RUNTIME_PM(dev_priv->dev) && dev_priv->pm.suspended,
> + "Device suspended\n");
> +}
>
> static void __gen6_gt_wait_for_thread_c0(struct drm_i915_private *dev_priv)
> {
> @@ -295,6 +301,8 @@ static void gen6_force_wake_work(struct work_struct *work)
> container_of(work, typeof(*dev_priv), uncore.force_wake_work.work);
> unsigned long irqflags;
>
> + assert_device_not_suspended(dev_priv);
> +
> spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
> if (--dev_priv->uncore.forcewake_count == 0)
> dev_priv->uncore.funcs.force_wake_put(dev_priv, FORCEWAKE_ALL);
> @@ -451,13 +459,6 @@ hsw_unclaimed_reg_check(struct drm_i915_private *dev_priv, u32 reg)
> }
> }
>
> -static void
> -assert_device_not_suspended(struct drm_i915_private *dev_priv)
> -{
> - WARN(HAS_RUNTIME_PM(dev_priv->dev) && dev_priv->pm.suspended,
> - "Device suspended\n");
> -}
> -
> #define REG_READ_HEADER(x) \
> unsigned long irqflags; \
> u##x val = 0; \
> --
> 1.8.5.3
>

--
Paulo Zanoni