diff mbox

drm/i915/gen9: Add WaVFEStateAfterPipeControlwithMediaStateClear

Message ID 1464954000-35400-1-git-send-email-arun.siluvery@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

arun.siluvery@linux.intel.com June 3, 2016, 11:40 a.m. UTC
Kernel only need to add a register to HW whitelist, required for a
preemption related issue.

Reference: HSD#2131039
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h         | 1 +
 drivers/gpu/drm/i915/intel_ringbuffer.c | 5 +++++
 2 files changed, 6 insertions(+)

Comments

jeff.mcgee@intel.com June 3, 2016, 11:34 p.m. UTC | #1
On Fri, Jun 03, 2016 at 12:40:00PM +0100, Arun Siluvery wrote:
> Kernel only need to add a register to HW whitelist, required for a
> preemption related issue.
> 
> Reference: HSD#2131039
> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/i915_reg.h         | 1 +
>  drivers/gpu/drm/i915/intel_ringbuffer.c | 5 +++++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index e307725..1f6040a 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -6072,6 +6072,7 @@ enum skl_disp_power_wells {
>  #define  GEN9_TSG_BARRIER_ACK_DISABLE		(1<<8)
>  
>  #define GEN9_CS_DEBUG_MODE1		_MMIO(0x20ec)
> +#define GEN9_CTX_PREEMPT_REG		_MMIO(0x2248)
>  #define GEN8_CS_CHICKEN1		_MMIO(0x2580)
>  
>  /* GEN7 chicken */
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index 8d35a39..1f9d3a4 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -987,6 +987,11 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>  	I915_WRITE(GEN8_L3SQCREG4, (I915_READ(GEN8_L3SQCREG4) |
>  				    GEN8_LQSC_FLUSH_COHERENT_LINES));
>  
> +	/* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt */
> +	ret= wa_ring_whitelist_reg(engine, GEN9_CTX_PREEMPT_REG);
> +	if (ret)
> +		return ret;
> +
>  	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt */
>  	ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
>  	if (ret)
> -- 
> 1.9.1
> 

Reviewed-by: Jeff McGee <jeff.mcgee@intel.com>

> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
arun.siluvery@linux.intel.com June 6, 2016, 10:03 a.m. UTC | #2
On 06/06/2016 14:58, Patchwork wrote:
> == Series Details ==
>
> Series: drm/i915/gen9: Add WaVFEStateAfterPipeControlwithMediaStateClear (rev2)
> URL   : https://patchwork.freedesktop.org/series/8218/
> State : warning
>
> == Summary ==
>
> Series 8218v2 drm/i915/gen9: Add WaVFEStateAfterPipeControlwithMediaStateClear
> http://patchwork.freedesktop.org/api/1.0/series/8218/revisions/2/mbox
>
> Test gem_basic:
>          Subgroup create-close:
>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
> Test gem_busy:
>          Subgroup basic-parallel-bsd:
>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
> Test gem_close_race:
>          Subgroup basic-threads:
>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
> Test gem_cs_tlb:
>          Subgroup basic-default:
>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
> Test gem_ctx_param:
>          Subgroup basic:
>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
> Test gem_exec_flush:
>          Subgroup basic-uc-set-default:
>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
> Test gem_flink_basic:
>          Subgroup basic:
>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
> Test gem_mmap_gtt:
>          Subgroup basic-small-copy-xy:
>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>          Subgroup basic-write:
>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>          Subgroup basic-write-gtt:
>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
> Test kms_addfb_basic:
>          Subgroup addfb25-x-tiled-mismatch:
>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>          Subgroup bad-pitch-65536:
>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>          Subgroup bo-too-small:
>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>          Subgroup no-handle:
>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>          Subgroup too-high:
>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>          Subgroup unused-modifier:
>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>          Subgroup unused-offsets:
>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>

All dmesg-warn are because of a single known issue,

[BAT SKL] *ERROR* Potential atomic update failure on pipe A
https://bugs.freedesktop.org/show_bug.cgi?id=95632

regards
Arun

> fi-bdw-i7-5557u  total:102  pass:93   dwarn:0   dfail:0   fail:0   skip:8
> fi-hsw-i7-4770k  total:209  pass:190  dwarn:0   dfail:0   fail:0   skip:19
> fi-skl-i5-6260u  total:209  pass:198  dwarn:0   dfail:0   fail:0   skip:11
> fi-skl-i7-6700k  total:209  pass:184  dwarn:0   dfail:0   fail:0   skip:25
> fi-snb-i7-2600   total:209  pass:170  dwarn:0   dfail:0   fail:0   skip:39
> ro-bsw-n3050     total:209  pass:168  dwarn:0   dfail:0   fail:2   skip:39
> ro-byt-n2820     total:209  pass:169  dwarn:0   dfail:0   fail:3   skip:37
> ro-hsw-i3-4010u  total:209  pass:186  dwarn:0   dfail:0   fail:0   skip:23
> ro-hsw-i7-4770r  total:102  pass:82   dwarn:0   dfail:0   fail:0   skip:19
> ro-ilk-i7-620lm  total:1    pass:0    dwarn:0   dfail:0   fail:0   skip:0
> ro-ilk1-i5-650   total:204  pass:146  dwarn:0   dfail:0   fail:1   skip:57
> ro-ivb-i7-3770   total:102  pass:75   dwarn:0   dfail:0   fail:0   skip:26
> ro-ivb2-i7-3770  total:102  pass:79   dwarn:0   dfail:0   fail:0   skip:22
> ro-skl-i7-6700hq total:204  pass:172  dwarn:11  dfail:0   fail:0   skip:21
> ro-snb-i7-2620M  total:102  pass:72   dwarn:0   dfail:0   fail:0   skip:29
> ro-bdw-i5-5250u failed to connect after reboot
> ro-bdw-i7-5557U failed to connect after reboot
>
> Results at /archive/results/CI_IGT_test/RO_Patchwork_1118/
>
> 1930b31 drm-intel-nightly: 2016y-06m-06d-06h-53m-02s UTC integration manifest
> 29cf429 drm/i915/gen9: Add WaVFEStateAfterPipeControlwithMediaStateClear
>
>
Tvrtko Ursulin June 6, 2016, 12:05 p.m. UTC | #3
On 06/06/16 11:03, Arun Siluvery wrote:
> On 06/06/2016 14:58, Patchwork wrote:
>> == Series Details ==
>>
>> Series: drm/i915/gen9: Add
>> WaVFEStateAfterPipeControlwithMediaStateClear (rev2)
>> URL   : https://patchwork.freedesktop.org/series/8218/
>> State : warning
>>
>> == Summary ==
>>
>> Series 8218v2 drm/i915/gen9: Add
>> WaVFEStateAfterPipeControlwithMediaStateClear
>> http://patchwork.freedesktop.org/api/1.0/series/8218/revisions/2/mbox
>>
>> Test gem_basic:
>>          Subgroup create-close:
>>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>> Test gem_busy:
>>          Subgroup basic-parallel-bsd:
>>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>> Test gem_close_race:
>>          Subgroup basic-threads:
>>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>> Test gem_cs_tlb:
>>          Subgroup basic-default:
>>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>> Test gem_ctx_param:
>>          Subgroup basic:
>>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>> Test gem_exec_flush:
>>          Subgroup basic-uc-set-default:
>>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>> Test gem_flink_basic:
>>          Subgroup basic:
>>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>> Test gem_mmap_gtt:
>>          Subgroup basic-small-copy-xy:
>>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>>          Subgroup basic-write:
>>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>>          Subgroup basic-write-gtt:
>>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>> Test kms_addfb_basic:
>>          Subgroup addfb25-x-tiled-mismatch:
>>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>>          Subgroup bad-pitch-65536:
>>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>>          Subgroup bo-too-small:
>>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>>          Subgroup no-handle:
>>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>>          Subgroup too-high:
>>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>>          Subgroup unused-modifier:
>>                  dmesg-warn -> PASS       (ro-skl-i7-6700hq)
>>          Subgroup unused-offsets:
>>                  pass       -> DMESG-WARN (ro-skl-i7-6700hq)
>>
>
> All dmesg-warn are because of a single known issue,
>
> [BAT SKL] *ERROR* Potential atomic update failure on pipe A
> https://bugs.freedesktop.org/show_bug.cgi?id=95632

Merged, thanks for the patch and review.

Regards,

Tvrtko
Chris Wilson Nov. 1, 2017, 10:44 p.m. UTC | #4
Quoting Arun Siluvery (2016-06-03 12:40:00)
> Kernel only need to add a register to HW whitelist, required for a
> preemption related issue.
> 
> Reference: HSD#2131039
> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/i915_reg.h         | 1 +
>  drivers/gpu/drm/i915/intel_ringbuffer.c | 5 +++++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index e307725..1f6040a 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -6072,6 +6072,7 @@ enum skl_disp_power_wells {
>  #define  GEN9_TSG_BARRIER_ACK_DISABLE          (1<<8)
>  
>  #define GEN9_CS_DEBUG_MODE1            _MMIO(0x20ec)
> +#define GEN9_CTX_PREEMPT_REG           _MMIO(0x2248)
>  #define GEN8_CS_CHICKEN1               _MMIO(0x2580)
>  
>  /* GEN7 chicken */
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index 8d35a39..1f9d3a4 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -987,6 +987,11 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>         I915_WRITE(GEN8_L3SQCREG4, (I915_READ(GEN8_L3SQCREG4) |
>                                     GEN8_LQSC_FLUSH_COHERENT_LINES));
>  
> +       /* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt */
> +       ret= wa_ring_whitelist_reg(engine, GEN9_CTX_PREEMPT_REG);
> +       if (ret)
> +               return ret;

What is for exactly? This register is not context saved, so...
-Chris
Joonas Lahtinen Nov. 8, 2017, 1:03 p.m. UTC | #5
s/Arun/Jeff + Jon/

This W/A would seem to be breaking context isolation as it is not context saved. Thus it is a candidate for being removed.

I have to say I did not get any wiser from reading the HSD, so can you guys bring some insight here?

Regards, Joonas

On Wed, 2017-11-01 at 22:44 +0000, Chris Wilson wrote:
> Quoting Arun Siluvery (2016-06-03 12:40:00)
> > Kernel only need to add a register to HW whitelist, required for a
> > preemption related issue.
> > 
> > Reference: HSD#2131039
> > Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_reg.h         | 1 +
> >  drivers/gpu/drm/i915/intel_ringbuffer.c | 5 +++++
> >  2 files changed, 6 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index e307725..1f6040a 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -6072,6 +6072,7 @@ enum skl_disp_power_wells {
> >  #define  GEN9_TSG_BARRIER_ACK_DISABLE          (1<<8)
> >  
> >  #define GEN9_CS_DEBUG_MODE1            _MMIO(0x20ec)
> > +#define GEN9_CTX_PREEMPT_REG           _MMIO(0x2248)
> >  #define GEN8_CS_CHICKEN1               _MMIO(0x2580)
> >  
> >  /* GEN7 chicken */
> > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> > index 8d35a39..1f9d3a4 100644
> > --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> > @@ -987,6 +987,11 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
> >         I915_WRITE(GEN8_L3SQCREG4, (I915_READ(GEN8_L3SQCREG4) |
> >                                     GEN8_LQSC_FLUSH_COHERENT_LINES));
> >  
> > +       /* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt */
> > +       ret= wa_ring_whitelist_reg(engine, GEN9_CTX_PREEMPT_REG);
> > +       if (ret)
> > +               return ret;
> 
> What is for exactly? This register is not context saved, so...
> -Chris
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index e307725..1f6040a 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -6072,6 +6072,7 @@  enum skl_disp_power_wells {
 #define  GEN9_TSG_BARRIER_ACK_DISABLE		(1<<8)
 
 #define GEN9_CS_DEBUG_MODE1		_MMIO(0x20ec)
+#define GEN9_CTX_PREEMPT_REG		_MMIO(0x2248)
 #define GEN8_CS_CHICKEN1		_MMIO(0x2580)
 
 /* GEN7 chicken */
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 8d35a39..1f9d3a4 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -987,6 +987,11 @@  static int gen9_init_workarounds(struct intel_engine_cs *engine)
 	I915_WRITE(GEN8_L3SQCREG4, (I915_READ(GEN8_L3SQCREG4) |
 				    GEN8_LQSC_FLUSH_COHERENT_LINES));
 
+	/* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt */
+	ret= wa_ring_whitelist_reg(engine, GEN9_CTX_PREEMPT_REG);
+	if (ret)
+		return ret;
+
 	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt */
 	ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
 	if (ret)