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

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

 



On Tue, Feb 06, 2018 at 08:42:23PM +0000, Chris Wilson wrote:
> 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.

Ok, can remove it. IIUC the rational is that the forcewake count is
provided anyway in the same file and we don't win much by noticing
a pending forcewake release (without a FW reference), since it's a
transient state.

--Imre
_______________________________________________
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