diff mbox

[v3] drm/i915/gen9: implement WaConextSwitchWithConcurrentTLBInvalidate

Message ID 1465816501-25557-1-git-send-email-tim.gore@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

tim.gore@intel.com June 13, 2016, 11:15 a.m. UTC
From: Tim Gore <tim.gore@intel.com>

This patch enables a workaround for a mid thread preemption
issue where a hardware timing problem can prevent the
context restore from happening, leading to a hang.

v2: move to gen9_init_workarounds (Arun)
v3: move to start of gen9_init_workarounds (Arun)

Signed-off-by: Tim Gore <tim.gore@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h         | 4 ++++
 drivers/gpu/drm/i915/intel_ringbuffer.c | 3 +++
 2 files changed, 7 insertions(+)

Comments

arun.siluvery@linux.intel.com June 13, 2016, 11:51 a.m. UTC | #1
On 13/06/2016 16:45, tim.gore@intel.com wrote:
> From: Tim Gore <tim.gore@intel.com>
>
> This patch enables a workaround for a mid thread preemption
> issue where a hardware timing problem can prevent the
> context restore from happening, leading to a hang.
>
> v2: move to gen9_init_workarounds (Arun)
> v3: move to start of gen9_init_workarounds (Arun)
>
> Signed-off-by: Tim Gore <tim.gore@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_reg.h         | 4 ++++
>   drivers/gpu/drm/i915/intel_ringbuffer.c | 3 +++
>   2 files changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 81d1896..2a6fc62 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -1810,6 +1810,10 @@ enum skl_disp_power_wells {
>   #define   GEN9_IZ_HASHING_MASK(slice)			(0x3 << ((slice) * 2))
>   #define   GEN9_IZ_HASHING(slice, val)			((val) << ((slice) * 2))
>
> +/* chicken reg for WaConextSwitchWithConcurrentTLBInvalidate */
> +#define GEN9_CSFE_CHICKEN1_RCS _MMIO(0x20D4)
> +#define   GEN9_PREEMPT_GPGPU_SYNC_SWITCH_DISABLE (1 << 2)
> +
>   /* WaClearTdlStateAckDirtyBits */
>   #define GEN8_STATE_ACK		_MMIO(0x20F0)
>   #define GEN9_STATE_ACK_SLICE1	_MMIO(0x20F8)
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index cf8d0bf..110c7fc 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -910,6 +910,9 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>   	struct drm_i915_private *dev_priv = engine->i915;
>   	int ret;
>
> +	/* WaConextSwitchWithConcurrentTLBInvalidate:skl,bxt,kbl */
> +	I915_WRITE(GEN9_CSFE_CHICKEN1_RCS, _MASKED_BIT_ENABLE(GEN9_PREEMPT_GPGPU_SYNC_SWITCH_DISABLE));
> +
agrees with spec. It would've been good to have correct spelling but to 
match with existing documentation we have to use the same name.

Reviewed-by: Arun Siluvery <arun.siluvery@linux.intel.com>

regards
Arun

>   	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl */
>   	I915_WRITE(BDW_SCRATCH1, I915_READ(BDW_SCRATCH1) |
>   		   GEN9_LBS_SLA_RETRY_TIMER_DECREMENT_ENABLE);
>
tim.gore@intel.com June 13, 2016, 1:35 p.m. UTC | #2
Tim Gore 
Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ

> -----Original Message-----

> From: Patchwork [mailto:patchwork@emeril.freedesktop.org]

> Sent: Monday, June 13, 2016 12:40 PM

> To: Gore, Tim

> Cc: intel-gfx@lists.freedesktop.org

> Subject: ✗ Ro.CI.BAT: warning for drm/i915/gen9: implement

> WaConextSwitchWithConcurrentTLBInvalidate (rev3)

> 

> == Series Details ==

> 

> Series: drm/i915/gen9: implement

> WaConextSwitchWithConcurrentTLBInvalidate (rev3)

> URL   : https://patchwork.freedesktop.org/series/8487/

> State : warning

> 

> == Summary ==

> 

> Series 8487v3 drm/i915/gen9: implement

> WaConextSwitchWithConcurrentTLBInvalidate

> http://patchwork.freedesktop.org/api/1.0/series/8487/revisions/3/mbox

> 

> Test gem_exec_flush:

>         Subgroup basic-batch-kernel-default-cmd:

>                 fail       -> PASS       (ro-byt-n2820)

> Test gem_exec_suspend:

>         Subgroup basic-s3:

>                 pass       -> DMESG-WARN (ro-bdw-i7-5557U)


See https://bugs.freedesktop.org/show_bug.cgi?id=96448

> Test kms_force_connector_basic:

>         Subgroup force-connector-state:

>                 skip       -> PASS       (ro-ivb2-i7-3770)

>         Subgroup force-edid:

>                 skip       -> PASS       (ro-ivb2-i7-3770)

>         Subgroup prune-stale-modes:

>                 skip       -> PASS       (ro-ivb2-i7-3770)

> Test kms_pipe_crc_basic:

>         Subgroup nonblocking-crc-pipe-b:

>                 pass       -> SKIP       (fi-skl-i5-6260u)

>         Subgroup suspend-read-crc-pipe-b:

>                 skip       -> DMESG-WARN (ro-bdw-i7-5557U)


See https://bugs.freedesktop.org/show_bug.cgi?id=96448

>         Subgroup suspend-read-crc-pipe-c:

>                 dmesg-warn -> SKIP       (ro-bdw-i5-5250u)

> 

> fi-bdw-i7-5557u  total:213  pass:201  dwarn:0   dfail:0   fail:0   skip:12

> fi-skl-i5-6260u  total:213  pass:201  dwarn:0   dfail:0   fail:0   skip:12

> fi-skl-i7-6700k  total:213  pass:188  dwarn:0   dfail:0   fail:0   skip:25

> fi-snb-i7-2600   total:213  pass:174  dwarn:0   dfail:0   fail:0   skip:39

> ro-bdw-i5-5250u  total:213  pass:197  dwarn:1   dfail:0   fail:0   skip:15

> ro-bdw-i7-5557U  total:213  pass:197  dwarn:2   dfail:0   fail:0   skip:14

> ro-bdw-i7-5600u  total:213  pass:185  dwarn:0   dfail:0   fail:0   skip:28

> ro-bsw-n3050     total:213  pass:172  dwarn:0   dfail:0   fail:2   skip:39

> ro-byt-n2820     total:213  pass:174  dwarn:0   dfail:0   fail:2   skip:37

> ro-hsw-i3-4010u  total:213  pass:190  dwarn:0   dfail:0   fail:0   skip:23

> ro-hsw-i7-4770r  total:213  pass:190  dwarn:0   dfail:0   fail:0   skip:23

> ro-ilk-i7-620lm  total:213  pass:150  dwarn:0   dfail:0   fail:1   skip:62

> ro-ilk1-i5-650   total:208  pass:150  dwarn:0   dfail:0   fail:1   skip:57

> ro-ivb-i7-3770   total:213  pass:181  dwarn:0   dfail:0   fail:0   skip:32

> ro-ivb2-i7-3770  total:213  pass:185  dwarn:0   dfail:0   fail:0   skip:28

> ro-skl3-i5-6260u total:213  pass:201  dwarn:1   dfail:0   fail:0   skip:11

> ro-snb-i7-2620M  total:213  pass:174  dwarn:0   dfail:0   fail:1   skip:38

> fi-hsw-i7-4770k failed to connect after reboot

> 

> Results at /archive/results/CI_IGT_test/RO_Patchwork_1171/

> 

> f80cfb4 drm-intel-nightly: 2016y-06m-13d-10h-41m-19s UTC integration

> manifest 3f1502e drm/i915/gen9: implement

> WaConextSwitchWithConcurrentTLBInvalidate
Tvrtko Ursulin June 13, 2016, 1:48 p.m. UTC | #3
On 13/06/16 14:35, Gore, Tim wrote:
>
>
> Tim Gore
> Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ
>
>> -----Original Message-----
>> From: Patchwork [mailto:patchwork@emeril.freedesktop.org]
>> Sent: Monday, June 13, 2016 12:40 PM
>> To: Gore, Tim
>> Cc: intel-gfx@lists.freedesktop.org
>> Subject: ✗ Ro.CI.BAT: warning for drm/i915/gen9: implement
>> WaConextSwitchWithConcurrentTLBInvalidate (rev3)
>>
>> == Series Details ==
>>
>> Series: drm/i915/gen9: implement
>> WaConextSwitchWithConcurrentTLBInvalidate (rev3)
>> URL   : https://patchwork.freedesktop.org/series/8487/
>> State : warning
>>
>> == Summary ==
>>
>> Series 8487v3 drm/i915/gen9: implement
>> WaConextSwitchWithConcurrentTLBInvalidate
>> http://patchwork.freedesktop.org/api/1.0/series/8487/revisions/3/mbox
>>
>> Test gem_exec_flush:
>>          Subgroup basic-batch-kernel-default-cmd:
>>                  fail       -> PASS       (ro-byt-n2820)
>> Test gem_exec_suspend:
>>          Subgroup basic-s3:
>>                  pass       -> DMESG-WARN (ro-bdw-i7-5557U)
>
> See https://bugs.freedesktop.org/show_bug.cgi?id=96448
>
>> Test kms_force_connector_basic:
>>          Subgroup force-connector-state:
>>                  skip       -> PASS       (ro-ivb2-i7-3770)
>>          Subgroup force-edid:
>>                  skip       -> PASS       (ro-ivb2-i7-3770)
>>          Subgroup prune-stale-modes:
>>                  skip       -> PASS       (ro-ivb2-i7-3770)
>> Test kms_pipe_crc_basic:
>>          Subgroup nonblocking-crc-pipe-b:
>>                  pass       -> SKIP       (fi-skl-i5-6260u)
>>          Subgroup suspend-read-crc-pipe-b:
>>                  skip       -> DMESG-WARN (ro-bdw-i7-5557U)
>
> See https://bugs.freedesktop.org/show_bug.cgi?id=96448
>
>>          Subgroup suspend-read-crc-pipe-c:
>>                  dmesg-warn -> SKIP       (ro-bdw-i5-5250u)
>>
>> fi-bdw-i7-5557u  total:213  pass:201  dwarn:0   dfail:0   fail:0   skip:12
>> fi-skl-i5-6260u  total:213  pass:201  dwarn:0   dfail:0   fail:0   skip:12
>> fi-skl-i7-6700k  total:213  pass:188  dwarn:0   dfail:0   fail:0   skip:25
>> fi-snb-i7-2600   total:213  pass:174  dwarn:0   dfail:0   fail:0   skip:39
>> ro-bdw-i5-5250u  total:213  pass:197  dwarn:1   dfail:0   fail:0   skip:15
>> ro-bdw-i7-5557U  total:213  pass:197  dwarn:2   dfail:0   fail:0   skip:14
>> ro-bdw-i7-5600u  total:213  pass:185  dwarn:0   dfail:0   fail:0   skip:28
>> ro-bsw-n3050     total:213  pass:172  dwarn:0   dfail:0   fail:2   skip:39
>> ro-byt-n2820     total:213  pass:174  dwarn:0   dfail:0   fail:2   skip:37
>> ro-hsw-i3-4010u  total:213  pass:190  dwarn:0   dfail:0   fail:0   skip:23
>> ro-hsw-i7-4770r  total:213  pass:190  dwarn:0   dfail:0   fail:0   skip:23
>> ro-ilk-i7-620lm  total:213  pass:150  dwarn:0   dfail:0   fail:1   skip:62
>> ro-ilk1-i5-650   total:208  pass:150  dwarn:0   dfail:0   fail:1   skip:57
>> ro-ivb-i7-3770   total:213  pass:181  dwarn:0   dfail:0   fail:0   skip:32
>> ro-ivb2-i7-3770  total:213  pass:185  dwarn:0   dfail:0   fail:0   skip:28
>> ro-skl3-i5-6260u total:213  pass:201  dwarn:1   dfail:0   fail:0   skip:11
>> ro-snb-i7-2620M  total:213  pass:174  dwarn:0   dfail:0   fail:1   skip:38
>> fi-hsw-i7-4770k failed to connect after reboot
>>
>> Results at /archive/results/CI_IGT_test/RO_Patchwork_1171/
>>
>> f80cfb4 drm-intel-nightly: 2016y-06m-13d-10h-41m-19s UTC integration
>> manifest 3f1502e drm/i915/gen9: implement
>> WaConextSwitchWithConcurrentTLBInvalidate

Merged, thanks for the patch and review.

Regards,

Tvrtko
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 81d1896..2a6fc62 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1810,6 +1810,10 @@  enum skl_disp_power_wells {
 #define   GEN9_IZ_HASHING_MASK(slice)			(0x3 << ((slice) * 2))
 #define   GEN9_IZ_HASHING(slice, val)			((val) << ((slice) * 2))
 
+/* chicken reg for WaConextSwitchWithConcurrentTLBInvalidate */
+#define GEN9_CSFE_CHICKEN1_RCS _MMIO(0x20D4)
+#define   GEN9_PREEMPT_GPGPU_SYNC_SWITCH_DISABLE (1 << 2)
+
 /* WaClearTdlStateAckDirtyBits */
 #define GEN8_STATE_ACK		_MMIO(0x20F0)
 #define GEN9_STATE_ACK_SLICE1	_MMIO(0x20F8)
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index cf8d0bf..110c7fc 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -910,6 +910,9 @@  static int gen9_init_workarounds(struct intel_engine_cs *engine)
 	struct drm_i915_private *dev_priv = engine->i915;
 	int ret;
 
+	/* WaConextSwitchWithConcurrentTLBInvalidate:skl,bxt,kbl */
+	I915_WRITE(GEN9_CSFE_CHICKEN1_RCS, _MASKED_BIT_ENABLE(GEN9_PREEMPT_GPGPU_SYNC_SWITCH_DISABLE));
+
 	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl */
 	I915_WRITE(BDW_SCRATCH1, I915_READ(BDW_SCRATCH1) |
 		   GEN9_LBS_SLA_RETRY_TIMER_DECREMENT_ENABLE);