Re: [PATCH 09/11] drm/i915: assert force wake is disabled when we runtime suspend

Imre Deak
2014-02-28T14:33:28Z

[-- Attachment #1.1: Type: text/plain, Size: 2574 bytes --]

On Fri, 2014-02-21 at 13:52 -0300, Paulo Zanoni wrote:
> From: Paulo Zanoni <paulo.r.zanoni@intel.com>
>
> Just to be sure...
>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.c | 1 +
> drivers/gpu/drm/i915/i915_drv.h | 1 +
> drivers/gpu/drm/i915/intel_uncore.c | 8 ++++++++
> 3 files changed, 10 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 2d05d7c..0c1e9e4 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -847,6 +847,7 @@ static int i915_runtime_suspend(struct device *device)
> struct drm_i915_private *dev_priv = dev->dev_private;
>
> WARN_ON(!HAS_RUNTIME_PM(dev));
> + assert_force_wake_inactive(dev_priv);
>
> DRM_DEBUG_KMS("Suspending device\n");
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 2a2a3a9..bc81c86 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2604,6 +2604,7 @@ extern void intel_display_print_error_state(struct drm_i915_error_state_buf *e,
> */
> void gen6_gt_force_wake_get(struct drm_i915_private *dev_priv, int fw_engine);
> void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv, int fw_engine);
> +void assert_force_wake_inactive(struct drm_i915_private *dev_priv);
>
> int sandybridge_pcode_read(struct drm_i915_private *dev_priv, u8 mbox, u32 *val);
> int sandybridge_pcode_write(struct drm_i915_private *dev_priv, u8 mbox, u32 val);
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 212de36..c3a4d6f 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -427,6 +427,14 @@ void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv, int fw_engine)
> intel_runtime_pm_put(dev_priv);
> }
>
> +void assert_force_wake_inactive(struct drm_i915_private *dev_priv)
> +{
> + if (!dev_priv->uncore.funcs.force_wake_get)
> + return;
> +
> + WARN_ON(dev_priv->uncore.forcewake_count > 0);
> +}
> +

As patch 8/11, this one would also trigger without 3/11, so it should be
applied after that.

You could also check the VLV forcewake refcounts, but I'm ok if you add
that later.

With the patch order fixed:
Reviewed-by: Imre Deak <imre.deak@intel.com>

> /* We give fast paths for the really cool registers */
> #define NEEDS_FORCE_WAKE(dev_priv, reg) \
> ((reg) < 0x40000 && (reg) != FORCEWAKE)

[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org