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