* [PATCH] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake.
@ 2018-01-04 19:38 Kenneth Graunke
2018-01-04 21:23 ` [Intel-gfx] " Chris Wilson
0 siblings, 1 reply; 6+ messages in thread
From: Kenneth Graunke @ 2018-01-04 19:38 UTC (permalink / raw)
To: intel-gfx; +Cc: Kenneth Graunke, stable
Geminilake requires the 3D driver to select whether barriers are
intended for compute shaders, or tessellation control shaders, by
whacking a "Barrier Mode" bit in SLICE_COMMON_ECO_CHICKEN1 when
switching pipelines. Failure to do this properly can result in GPU
hangs.
Unfortunately, this means it needs to switch mid-batch, so only
userspace can properly set it. To facilitate this, the kernel needs
to whitelist the register.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: stable@vger.kernel.org
---
drivers/gpu/drm/i915/i915_reg.h | 2 ++
drivers/gpu/drm/i915/intel_engine_cs.c | 5 +++++
2 files changed, 7 insertions(+)
Hello,
We unfortunately need to whitelist an extra register for GPU hang fix
on Geminilake. Here's the corresponding Mesa patch:
https://patchwork.freedesktop.org/patch/196047/
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 966e4df9700e..505c605eff98 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -7079,6 +7079,8 @@ enum {
#define GEN9_SLICE_COMMON_ECO_CHICKEN0 _MMIO(0x7308)
#define DISABLE_PIXEL_MASK_CAMMING (1<<14)
+#define GEN9_SLICE_COMMON_ECO_CHICKEN1 _MMIO(0x731c)
+
#define GEN7_L3SQCREG1 _MMIO(0xB010)
#define VLV_B0_WA_L3SQCREG1_VALUE 0x00D30000
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index ebdcbcbacb3c..d64a9f907550 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -1338,6 +1338,11 @@ static int glk_init_workarounds(struct intel_engine_cs *engine)
if (ret)
return ret;
+ /* Userspace needs to toggle "Barrier Mode" to avoid GPU hangs */
+ ret = wa_ring_whitelist_reg(engine, GEN9_SLICE_COMMON_ECO_CHICKEN1);
+ if (ret)
+ return ret;
+
/* WaToEnableHwFixForPushConstHWBug:glk */
WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
--
2.15.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake.
2018-01-04 19:38 [PATCH] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake Kenneth Graunke
@ 2018-01-04 21:23 ` Chris Wilson
2018-01-04 23:39 ` Kenneth Graunke
0 siblings, 1 reply; 6+ messages in thread
From: Chris Wilson @ 2018-01-04 21:23 UTC (permalink / raw)
To: Kenneth Graunke, intel-gfx; +Cc: Kenneth Graunke, stable
Quoting Kenneth Graunke (2018-01-04 19:38:05)
> Geminilake requires the 3D driver to select whether barriers are
> intended for compute shaders, or tessellation control shaders, by
> whacking a "Barrier Mode" bit in SLICE_COMMON_ECO_CHICKEN1 when
> switching pipelines. Failure to do this properly can result in GPU
> hangs.
>
> Unfortunately, this means it needs to switch mid-batch, so only
> userspace can properly set it. To facilitate this, the kernel needs
> to whitelist the register.
>
> Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
> Cc: stable@vger.kernel.org
> ---
> drivers/gpu/drm/i915/i915_reg.h | 2 ++
> drivers/gpu/drm/i915/intel_engine_cs.c | 5 +++++
> 2 files changed, 7 insertions(+)
>
> Hello,
>
> We unfortunately need to whitelist an extra register for GPU hang fix
> on Geminilake. Here's the corresponding Mesa patch:
Thankfully it appears to be context saved. Has a w/a name been assigned
for this?
-Chris
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake.
2018-01-04 21:23 ` [Intel-gfx] " Chris Wilson
@ 2018-01-04 23:39 ` Kenneth Graunke
2018-01-05 0:41 ` Rodrigo Vivi
0 siblings, 1 reply; 6+ messages in thread
From: Kenneth Graunke @ 2018-01-04 23:39 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx, stable
[-- Attachment #1: Type: text/plain, Size: 1339 bytes --]
On Thursday, January 4, 2018 1:23:06 PM PST Chris Wilson wrote:
> Quoting Kenneth Graunke (2018-01-04 19:38:05)
> > Geminilake requires the 3D driver to select whether barriers are
> > intended for compute shaders, or tessellation control shaders, by
> > whacking a "Barrier Mode" bit in SLICE_COMMON_ECO_CHICKEN1 when
> > switching pipelines. Failure to do this properly can result in GPU
> > hangs.
> >
> > Unfortunately, this means it needs to switch mid-batch, so only
> > userspace can properly set it. To facilitate this, the kernel needs
> > to whitelist the register.
> >
> > Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
> > Cc: stable@vger.kernel.org
> > ---
> > drivers/gpu/drm/i915/i915_reg.h | 2 ++
> > drivers/gpu/drm/i915/intel_engine_cs.c | 5 +++++
> > 2 files changed, 7 insertions(+)
> >
> > Hello,
> >
> > We unfortunately need to whitelist an extra register for GPU hang fix
> > on Geminilake. Here's the corresponding Mesa patch:
>
> Thankfully it appears to be context saved. Has a w/a name been assigned
> for this?
> -Chris
There doesn't appear to be one. The workaround page lists it, but there
is no name. The register description has a note saying that you need to
set this, but doesn't call it out as a workaround.
That's why I put a generic comment, rather than the name.
--Ken
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake.
2018-01-04 23:39 ` Kenneth Graunke
@ 2018-01-05 0:41 ` Rodrigo Vivi
2018-01-05 6:06 ` Kenneth Graunke
0 siblings, 1 reply; 6+ messages in thread
From: Rodrigo Vivi @ 2018-01-05 0:41 UTC (permalink / raw)
To: Kenneth Graunke; +Cc: Chris Wilson, intel-gfx, stable
On Thu, Jan 04, 2018 at 11:39:23PM +0000, Kenneth Graunke wrote:
> On Thursday, January 4, 2018 1:23:06 PM PST Chris Wilson wrote:
> > Quoting Kenneth Graunke (2018-01-04 19:38:05)
> > > Geminilake requires the 3D driver to select whether barriers are
> > > intended for compute shaders, or tessellation control shaders, by
> > > whacking a "Barrier Mode" bit in SLICE_COMMON_ECO_CHICKEN1 when
> > > switching pipelines. Failure to do this properly can result in GPU
> > > hangs.
> > >
> > > Unfortunately, this means it needs to switch mid-batch, so only
> > > userspace can properly set it. To facilitate this, the kernel needs
> > > to whitelist the register.
> > >
> > > Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
> > > Cc: stable@vger.kernel.org
> > > ---
> > > drivers/gpu/drm/i915/i915_reg.h | 2 ++
> > > drivers/gpu/drm/i915/intel_engine_cs.c | 5 +++++
> > > 2 files changed, 7 insertions(+)
> > >
> > > Hello,
> > >
> > > We unfortunately need to whitelist an extra register for GPU hang fix
> > > on Geminilake. Here's the corresponding Mesa patch:
> >
> > Thankfully it appears to be context saved. Has a w/a name been assigned
> > for this?
> > -Chris
>
> There doesn't appear to be one. The workaround page lists it, but there
> is no name. The register description has a note saying that you need to
> set this, but doesn't call it out as a workaround.
It mentions only BXT:ALL, but not mention to GLK.
Should we add to both then?
>
> That's why I put a generic comment, rather than the name.
On Display side we started using the row name for this case, to help
easily finding this later.
ex: "Display WA #0390: skl,kbl"
The number for this apparently is:
WA #0862
Maybe we could use this one to start
/* GT WA #0862: bxt,glk */
GT? GEM?
Unnamed WA #0862?
Thanks,
Rodrigo.
>
> --Ken
> _______________________________________________
> 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: [Intel-gfx] [PATCH] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake.
2018-01-05 0:41 ` Rodrigo Vivi
@ 2018-01-05 6:06 ` Kenneth Graunke
2019-02-28 18:17 ` Chris Wilson
0 siblings, 1 reply; 6+ messages in thread
From: Kenneth Graunke @ 2018-01-05 6:06 UTC (permalink / raw)
To: Rodrigo Vivi; +Cc: Chris Wilson, intel-gfx, stable, mark.a.janes
[-- Attachment #1: Type: text/plain, Size: 2784 bytes --]
On Thursday, January 4, 2018 4:41:35 PM PST Rodrigo Vivi wrote:
> On Thu, Jan 04, 2018 at 11:39:23PM +0000, Kenneth Graunke wrote:
> > On Thursday, January 4, 2018 1:23:06 PM PST Chris Wilson wrote:
> > > Quoting Kenneth Graunke (2018-01-04 19:38:05)
> > > > Geminilake requires the 3D driver to select whether barriers are
> > > > intended for compute shaders, or tessellation control shaders, by
> > > > whacking a "Barrier Mode" bit in SLICE_COMMON_ECO_CHICKEN1 when
> > > > switching pipelines. Failure to do this properly can result in GPU
> > > > hangs.
> > > >
> > > > Unfortunately, this means it needs to switch mid-batch, so only
> > > > userspace can properly set it. To facilitate this, the kernel needs
> > > > to whitelist the register.
> > > >
> > > > Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
> > > > Cc: stable@vger.kernel.org
> > > > ---
> > > > drivers/gpu/drm/i915/i915_reg.h | 2 ++
> > > > drivers/gpu/drm/i915/intel_engine_cs.c | 5 +++++
> > > > 2 files changed, 7 insertions(+)
> > > >
> > > > Hello,
> > > >
> > > > We unfortunately need to whitelist an extra register for GPU hang fix
> > > > on Geminilake. Here's the corresponding Mesa patch:
> > >
> > > Thankfully it appears to be context saved. Has a w/a name been assigned
> > > for this?
> > > -Chris
> >
> > There doesn't appear to be one. The workaround page lists it, but there
> > is no name. The register description has a note saying that you need to
> > set this, but doesn't call it out as a workaround.
>
> It mentions only BXT:ALL, but not mention to GLK.
>
> Should we add to both then?
Well, that's irritating. On the workarounds page, it does indeed say
"BXT" with no mention of GLK. But the workaround text says to set
"SLICE_COMMON_CHICKEN_ECO1 Barrier Mode [...] (bit 7 of MMIO 0x731C)."
Looking at the register definition for SLICE_COMMON_ECO_CHICKEN1, bit 7
is "Barrier Mode" on [GLK] only, with no mention of BXT. It's marked
reserved PBC on [SKL+, not GLK, not KBL]. On KBL it's something else.
I believe Mark saw hangs in tessellation control shader hangs on
Geminilake only, and never saw this issue on Broxton. So, my guess is
that the workaround really is new on Geminilake, and the BXT tag on the
workarounds page is incorrect. (Mark, does that sound right to you?)
> > That's why I put a generic comment, rather than the name.
>
> On Display side we started using the row name for this case, to help
> easily finding this later.
>
> ex: "Display WA #0390: skl,kbl"
>
> The number for this apparently is:
> WA #0862
>
> Maybe we could use this one to start
> /* GT WA #0862: bxt,glk */
>
> GT? GEM?
> Unnamed WA #0862?
Including #0862 seems like a good idea. I'm happy to change the comment
to whatever you'd prefer.
--Ken
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake.
2018-01-05 6:06 ` Kenneth Graunke
@ 2019-02-28 18:17 ` Chris Wilson
0 siblings, 0 replies; 6+ messages in thread
From: Chris Wilson @ 2019-02-28 18:17 UTC (permalink / raw)
To: Kenneth Graunke, Rodrigo Vivi; +Cc: intel-gfx, stable, mark.a.janes
Quoting Kenneth Graunke (2018-01-05 06:06:34)
> On Thursday, January 4, 2018 4:41:35 PM PST Rodrigo Vivi wrote:
> > On Thu, Jan 04, 2018 at 11:39:23PM +0000, Kenneth Graunke wrote:
> > > On Thursday, January 4, 2018 1:23:06 PM PST Chris Wilson wrote:
> > > > Quoting Kenneth Graunke (2018-01-04 19:38:05)
> > > > > Geminilake requires the 3D driver to select whether barriers are
> > > > > intended for compute shaders, or tessellation control shaders, by
> > > > > whacking a "Barrier Mode" bit in SLICE_COMMON_ECO_CHICKEN1 when
> > > > > switching pipelines. Failure to do this properly can result in GPU
> > > > > hangs.
> > > > >
> > > > > Unfortunately, this means it needs to switch mid-batch, so only
> > > > > userspace can properly set it. To facilitate this, the kernel needs
> > > > > to whitelist the register.
> > > > >
> > > > > Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
> > > > > Cc: stable@vger.kernel.org
> > > > > ---
> > > > > drivers/gpu/drm/i915/i915_reg.h | 2 ++
> > > > > drivers/gpu/drm/i915/intel_engine_cs.c | 5 +++++
> > > > > 2 files changed, 7 insertions(+)
> > > > >
> > > > > Hello,
> > > > >
> > > > > We unfortunately need to whitelist an extra register for GPU hang fix
> > > > > on Geminilake. Here's the corresponding Mesa patch:
> > > >
> > > > Thankfully it appears to be context saved. Has a w/a name been assigned
> > > > for this?
> > > > -Chris
> > >
> > > There doesn't appear to be one. The workaround page lists it, but there
> > > is no name. The register description has a note saying that you need to
> > > set this, but doesn't call it out as a workaround.
> >
> > It mentions only BXT:ALL, but not mention to GLK.
> >
> > Should we add to both then?
>
> Well, that's irritating. On the workarounds page, it does indeed say
> "BXT" with no mention of GLK. But the workaround text says to set
> "SLICE_COMMON_CHICKEN_ECO1 Barrier Mode [...] (bit 7 of MMIO 0x731C)."
>
> Looking at the register definition for SLICE_COMMON_ECO_CHICKEN1, bit 7
> is "Barrier Mode" on [GLK] only, with no mention of BXT. It's marked
> reserved PBC on [SKL+, not GLK, not KBL]. On KBL it's something else.
>
> I believe Mark saw hangs in tessellation control shader hangs on
> Geminilake only, and never saw this issue on Broxton. So, my guess is
> that the workaround really is new on Geminilake, and the BXT tag on the
> workarounds page is incorrect. (Mark, does that sound right to you?)
Hi, I'm back!
This fails a selftest on glk as we can't even write to the register
0x731c, or at least can't read from the register.
Did bspec ever get updated to include this register & wa?
-Chris
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-02-28 18:17 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-04 19:38 [PATCH] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake Kenneth Graunke
2018-01-04 21:23 ` [Intel-gfx] " Chris Wilson
2018-01-04 23:39 ` Kenneth Graunke
2018-01-05 0:41 ` Rodrigo Vivi
2018-01-05 6:06 ` Kenneth Graunke
2019-02-28 18:17 ` Chris Wilson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).