diff mbox

[1/2] drm/i915/gen9: Add WaInPlaceDecompressionHang

Message ID 1469013973-24104-1-git-send-email-mika.kuoppala@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Mika Kuoppala July 20, 2016, 11:26 a.m. UTC
From: Mika Kuoppala <mika.kuoppala@linux.intel.com>

Add this workaround to prevent hang when in place compression
is used.

References: HSD#2135774
Cc: stable@vger.kernel.org
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Arun Siluvery <arun.siluvery@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h         |  2 ++
 drivers/gpu/drm/i915/i915_reg.h         |  3 +++
 drivers/gpu/drm/i915/intel_ringbuffer.c | 14 ++++++++++++++
 3 files changed, 19 insertions(+)

Comments

Joonas Lahtinen July 20, 2016, 12:49 p.m. UTC | #1
On ke, 2016-07-20 at 12:05 +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: series starting with [1/2] drm/i915/gen9: Add WaInPlaceDecompressionHang
> URL   : https://patchwork.freedesktop.org/series/10088/
> State : failure
> 
> == Summary ==
> 
> Series 10088v1 Series without cover letter
> http://patchwork.freedesktop.org/api/1.0/series/10088/revisions/1/mbox
> 
> Test gem_exec_suspend:
>         Subgroup basic-s3:
>                 pass       -> INCOMPLETE (fi-hsw-i7-4770k)
> Test gem_sync:
>         Subgroup basic-store-each:
>                 pass       -> FAIL       (ro-bdw-i7-5600u)
> 

Arun, do you mind giving these a look, Mika left for a vacation.

Regards, Joonas
Chris Wilson July 20, 2016, 12:50 p.m. UTC | #2
On Wed, Jul 20, 2016 at 03:49:00PM +0300, Joonas Lahtinen wrote:
> On ke, 2016-07-20 at 12:05 +0000, Patchwork wrote:
> > == Series Details ==
> > 
> > Series: series starting with [1/2] drm/i915/gen9: Add WaInPlaceDecompressionHang
> > URL   : https://patchwork.freedesktop.org/series/10088/
> > State : failure
> > 
> > == Summary ==
> > 
> > Series 10088v1 Series without cover letter
> > http://patchwork.freedesktop.org/api/1.0/series/10088/revisions/1/mbox
> > 
> > Test gem_exec_suspend:
> >         Subgroup basic-s3:
> >                 pass       -> INCOMPLETE (fi-hsw-i7-4770k)
> > Test gem_sync:
> >         Subgroup basic-store-each:
> >                 pass       -> FAIL       (ro-bdw-i7-5600u)
> > 
> 
> Arun, do you mind giving these a look, Mika left for a vacation.

Neither related to this pair of patches if that's what you mean.
-Chris
Joonas Lahtinen July 20, 2016, 1:08 p.m. UTC | #3
On ke, 2016-07-20 at 13:50 +0100, Chris Wilson wrote:
> On Wed, Jul 20, 2016 at 03:49:00PM +0300, Joonas Lahtinen wrote:
> > 
> > On ke, 2016-07-20 at 12:05 +0000, Patchwork wrote:
> > > 
> > > == Series Details ==
> > > 
> > > Series: series starting with [1/2] drm/i915/gen9: Add WaInPlaceDecompressionHang
> > > URL   : https://patchwork.freedesktop.org/series/10088/
> > > State : failure
> > > 
> > > == Summary ==
> > > 
> > > Series 10088v1 Series without cover letter
> > > http://patchwork.freedesktop.org/api/1.0/series/10088/revisions/1/mbox
> > > 
> > > Test gem_exec_suspend:
> > >         Subgroup basic-s3:
> > >                 pass       -> INCOMPLETE (fi-hsw-i7-4770k)
> > > Test gem_sync:
> > >         Subgroup basic-store-each:
> > >                 pass       -> FAIL       (ro-bdw-i7-5600u)
> > > 
> > Arun, do you mind giving these a look, Mika left for a vacation.
> Neither related to this pair of patches if that's what you mean.
> -Chris

Right, merging this in then. Thanks for the detective work, patch and
review.

Regards, Joonas
>
Dave Gordon July 20, 2016, 1:11 p.m. UTC | #4
On 20/07/16 13:50, Chris Wilson wrote:
> On Wed, Jul 20, 2016 at 03:49:00PM +0300, Joonas Lahtinen wrote:
>> On ke, 2016-07-20 at 12:05 +0000, Patchwork wrote:
>>> == Series Details ==
>>>
>>> Series: series starting with [1/2] drm/i915/gen9: Add WaInPlaceDecompressionHang
>>> URL   : https://patchwork.freedesktop.org/series/10088/
>>> State : failure
>>>
>>> == Summary ==
>>>
>>> Series 10088v1 Series without cover letter
>>> http://patchwork.freedesktop.org/api/1.0/series/10088/revisions/1/mbox
>>>
>>> Test gem_exec_suspend:
>>>          Subgroup basic-s3:
>>>                  pass       -> INCOMPLETE (fi-hsw-i7-4770k)
>>> Test gem_sync:
>>>          Subgroup basic-store-each:
>>>                  pass       -> FAIL       (ro-bdw-i7-5600u)
>>>
>>
>> Arun, do you mind giving these a look, Mika left for a vacation.
>
> Neither related to this pair of patches if that's what you mean.
> -Chris

The latter is
Bug 96974 - [BAT BDW] gem_sync / basic-store-each fails sporadically
frequently seen on that specific machine, but not on any other BDW.

.Dave.
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index e163a9487750..7f1003046caa 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2580,6 +2580,8 @@  struct drm_i915_cmd_table {
 #define SKL_REVID_D0		0x3
 #define SKL_REVID_E0		0x4
 #define SKL_REVID_F0		0x5
+#define SKL_REVID_G0		0x6
+#define SKL_REVID_H0		0x7
 
 #define IS_SKL_REVID(p, since, until) (IS_SKYLAKE(p) && IS_REVID(p, since, until))
 
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 8bfde75789f6..ce14fe09d962 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1686,6 +1686,9 @@  enum skl_disp_power_wells {
 
 #define GEN7_TLB_RD_ADDR	_MMIO(0x4700)
 
+#define GEN9_GAMT_ECO_REG_RW_IA _MMIO(0x4ab0)
+#define   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS	(1<<18)
+
 #define GAMT_CHKN_BIT_REG	_MMIO(0x4ab8)
 #define   GAMT_CHKN_DISABLE_DYNAMIC_CREDIT_SHARING	(1<<28)
 
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index af0bd71e3a36..75cede0147f7 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1104,6 +1104,11 @@  static int skl_init_workarounds(struct intel_engine_cs *engine)
 	/* WaDisableGafsUnitClkGating:skl */
 	WA_SET_BIT(GEN7_UCGCTL4, GEN8_EU_GAUNIT_CLOCK_GATE_DISABLE);
 
+	/* WaInPlaceDecompressionHang:skl */
+	if (IS_SKL_REVID(dev_priv, SKL_REVID_H0, REVID_FOREVER))
+		WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
+			   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
+
 	/* WaDisableLSQCROPERFforOCL:skl */
 	ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4);
 	if (ret)
@@ -1173,6 +1178,11 @@  static int bxt_init_workarounds(struct intel_engine_cs *engine)
 		WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
 				  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
 
+	/* WaInPlaceDecompressionHang:bxt */
+	if (IS_BXT_REVID(dev_priv, BXT_REVID_C0, REVID_FOREVER))
+		WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
+			   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
+
 	return 0;
 }
 
@@ -1220,6 +1230,10 @@  static int kbl_init_workarounds(struct intel_engine_cs *engine)
 		GEN7_HALF_SLICE_CHICKEN1,
 		GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE);
 
+	/* WaInPlaceDecompressionHang:kbl */
+	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
+		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
+
 	/* WaDisableLSQCROPERFforOCL:kbl */
 	ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4);
 	if (ret)