All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915/ivb+: Use the correct render forcewake ACK register
@ 2018-02-06 18:20 Imre Deak
  2018-02-06 18:57 ` ✓ Fi.CI.BAT: success for " Patchwork
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Imre Deak @ 2018-02-06 18:20 UTC (permalink / raw)
  To: intel-gfx

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@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reference: https://bugs.freedesktop.org/show_bug.cgi?id=103337
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 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));
 	}
-- 
2.13.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* ✓ Fi.CI.BAT: success for drm/i915/ivb+: Use the correct render forcewake ACK register
  2018-02-06 18:20 [PATCH] drm/i915/ivb+: Use the correct render forcewake ACK register Imre Deak
@ 2018-02-06 18:57 ` Patchwork
  2018-02-06 19:48 ` ✓ Fi.CI.IGT: " Patchwork
  2018-02-06 20:42 ` [PATCH] " Chris Wilson
  2 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2018-02-06 18:57 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/ivb+: Use the correct render forcewake ACK register
URL   : https://patchwork.freedesktop.org/series/37753/
State : success

== Summary ==

Series 37753v1 drm/i915/ivb+: Use the correct render forcewake ACK register
https://patchwork.freedesktop.org/api/1.0/series/37753/revisions/1/mbox/

Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-b:
                pass       -> INCOMPLETE (fi-snb-2520m) fdo#103713

fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:421s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:426s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:373s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:485s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:483s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:481s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:467s
fi-byt-n2820     total:288  pass:249  dwarn:0   dfail:0   fail:0   skip:39  time:456s
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:574s
fi-cnl-y3        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:585s
fi-elk-e7500     total:288  pass:229  dwarn:0   dfail:0   fail:0   skip:59  time:413s
fi-gdg-551       total:288  pass:179  dwarn:0   dfail:0   fail:1   skip:108 time:282s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:514s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:387s
fi-hsw-4770r     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:397s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:412s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:450s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:419s
fi-kbl-7500u     total:288  pass:263  dwarn:1   dfail:0   fail:0   skip:24  time:459s
fi-kbl-7560u     total:288  pass:269  dwarn:0   dfail:0   fail:0   skip:19  time:497s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:455s
fi-kbl-r         total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:498s
fi-pnv-d510      total:288  pass:222  dwarn:1   dfail:0   fail:0   skip:65  time:595s
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:426s
fi-skl-6600u     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:507s
fi-skl-6700hq    total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:528s
fi-skl-6700k2    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:491s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:491s
fi-skl-guc       total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:415s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:426s
fi-snb-2520m     total:245  pass:211  dwarn:0   dfail:0   fail:0   skip:33 
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:393s
Blacklisted hosts:
fi-glk-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:471s

078873da383505cf8d6940229007115b31f1d5e0 drm-tip: 2018y-02m-06d-11h-21m-36s UTC integration manifest
65ce7e1ae597 drm/i915/ivb+: Use the correct render forcewake ACK register

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_7911/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* ✓ Fi.CI.IGT: success for drm/i915/ivb+: Use the correct render forcewake ACK register
  2018-02-06 18:20 [PATCH] drm/i915/ivb+: Use the correct render forcewake ACK register Imre Deak
  2018-02-06 18:57 ` ✓ Fi.CI.BAT: success for " Patchwork
@ 2018-02-06 19:48 ` Patchwork
  2018-02-06 20:42 ` [PATCH] " Chris Wilson
  2 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2018-02-06 19:48 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/ivb+: Use the correct render forcewake ACK register
URL   : https://patchwork.freedesktop.org/series/37753/
State : success

== Summary ==

Test gem_exec_schedule:
        Subgroup reorder-wide-vebox:
                incomplete -> PASS       (shard-apl) fdo#102848
Test kms_setmode:
        Subgroup basic:
                fail       -> PASS       (shard-apl) fdo#99912
Test perf:
        Subgroup enable-disable:
                fail       -> PASS       (shard-apl) fdo#103715
        Subgroup buffer-fill:
                fail       -> PASS       (shard-apl) fdo#103755

fdo#102848 https://bugs.freedesktop.org/show_bug.cgi?id=102848
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
fdo#103715 https://bugs.freedesktop.org/show_bug.cgi?id=103715
fdo#103755 https://bugs.freedesktop.org/show_bug.cgi?id=103755

shard-apl        total:3383 pass:1753 dwarn:1   dfail:0   fail:19  skip:1609 time:12156s
shard-hsw        total:3442 pass:1758 dwarn:1   dfail:0   fail:11  skip:1671 time:11756s
shard-snb        total:3442 pass:1351 dwarn:1   dfail:0   fail:10  skip:2080 time:6621s
Blacklisted hosts:
shard-kbl        total:3442 pass:1909 dwarn:1   dfail:0   fail:21  skip:1511 time:9635s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_7911/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] drm/i915/ivb+: Use the correct render forcewake ACK register
  2018-02-06 18:20 [PATCH] drm/i915/ivb+: Use the correct render forcewake ACK register Imre Deak
  2018-02-06 18:57 ` ✓ Fi.CI.BAT: success for " Patchwork
  2018-02-06 19:48 ` ✓ Fi.CI.IGT: " Patchwork
@ 2018-02-06 20:42 ` Chris Wilson
  2018-02-07 12:48   ` Imre Deak
  2 siblings, 1 reply; 6+ messages in thread
From: Chris Wilson @ 2018-02-06 20:42 UTC (permalink / raw)
  To: Imre Deak, intel-gfx

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@linux.intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> Reference: https://bugs.freedesktop.org/show_bug.cgi?id=103337
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> ---
>  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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] drm/i915/ivb+: Use the correct render forcewake ACK register
  2018-02-06 20:42 ` [PATCH] " Chris Wilson
@ 2018-02-07 12:48   ` Imre Deak
  2018-02-07 12:50     ` Chris Wilson
  0 siblings, 1 reply; 6+ messages in thread
From: Imre Deak @ 2018-02-07 12:48 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

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@linux.intel.com>
> > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> > Reference: https://bugs.freedesktop.org/show_bug.cgi?id=103337
> > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > ---
> >  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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] drm/i915/ivb+: Use the correct render forcewake ACK register
  2018-02-07 12:48   ` Imre Deak
@ 2018-02-07 12:50     ` Chris Wilson
  0 siblings, 0 replies; 6+ messages in thread
From: Chris Wilson @ 2018-02-07 12:50 UTC (permalink / raw)
  To: imre.deak; +Cc: intel-gfx

Quoting Imre Deak (2018-02-07 12:48:33)
> 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@linux.intel.com>
> > > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> > > Reference: https://bugs.freedesktop.org/show_bug.cgi?id=103337
> > > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > > ---
> > >  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.

It's also "multi-threaded"; what the kernel thinks is only a small part
of the picture.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-02-07 12:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-06 18:20 [PATCH] drm/i915/ivb+: Use the correct render forcewake ACK register Imre Deak
2018-02-06 18:57 ` ✓ Fi.CI.BAT: success for " Patchwork
2018-02-06 19:48 ` ✓ Fi.CI.IGT: " Patchwork
2018-02-06 20:42 ` [PATCH] " Chris Wilson
2018-02-07 12:48   ` Imre Deak
2018-02-07 12:50     ` Chris Wilson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.