Re: [PATCH] drm/i915/ivb+: Use the correct render forcewake ACK register

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Quoting Imre Deak (2018-02-06 18:20:07)
> FORCEWAKE_ACK is depricated by BSpec at least starting from BDW,
> referring to the multi-threaded version of it instead. Accessing
> FORCEWAKE_ACK triggers an unclaimed register access error - at
> least on GLK - see the Reference: below.
> 
> As opposed to this debugfs file we normally use the MT version on IVB
> (if supported) and HSW/BDW, whereas we use FORCEWAKE_ACK_RENDER_GEN9
> starting from SKL. Fix the problem by using these same registers on
> each platform in the debugfs file too.
> 
> Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx>
> Reference: https://bugs.freedesktop.org/show_bug.cgi?id=103337
> Signed-off-by: Imre Deak <imre.deak@xxxxxxxxx>
> ---
>  drivers/gpu/drm/i915/i915_debugfs.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 3849ded354e3..8a019cb0980d 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -1458,18 +1458,21 @@ static int vlv_drpc_info(struct seq_file *m)
>  static int gen6_drpc_info(struct seq_file *m)
>  {
>         struct drm_i915_private *dev_priv = node_to_i915(m->private);
> +       struct intel_uncore_forcewake_domain *render_domain =
> +               &dev_priv->uncore.fw_domain[FW_DOMAIN_ID_RENDER];
>         u32 gt_core_status, rcctl1, rc6vids = 0;
>         u32 gen9_powergate_enable = 0, gen9_powergate_status = 0;
>         unsigned forcewake_count;
>         int count = 0;
>  
> -       forcewake_count = READ_ONCE(dev_priv->uncore.fw_domain[FW_DOMAIN_ID_RENDER].wake_count);
> +       forcewake_count = READ_ONCE(render_domain->wake_count);
>         if (forcewake_count) {
>                 seq_puts(m, "RC information inaccurate because somebody "
>                             "holds a forcewake reference \n");
>         } else {
>                 /* NB: we cannot use forcewake, else we read the wrong values */
> -               while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_ACK) & 1))
> +               while (count++ < 50 &&
> +                      (I915_READ_NOTRACE(render_domain->reg_ack) & 1))
>                         udelay(10);
>                 seq_printf(m, "RC information accurate: %s\n", yesno(count < 51));

I remember having a rant about this being absolutely meaningless. We can
just delete it imo.
-Chris
>     
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux