From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: akash.goel@intel.com
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 4/6] drm/i915/vlv: Added 3 rendering specific Hw Workarounds in clock gating fn
Date: Wed, 22 Jan 2014 13:10:41 +0200 [thread overview]
Message-ID: <20140122111040.GM9454@intel.com> (raw)
In-Reply-To: <1390362310-15963-5-git-send-email-akash.goel@intel.com>
On Wed, Jan 22, 2014 at 09:15:08AM +0530, akash.goel@intel.com wrote:
> From: Akash Goel <akash.goel@intel.com>
>
> Added 2 new rendering specific Workarounds
> 1. WaDisable_RenderCache_OperationalFlush
> Operational flush cannot be enabled on
> BWG A0 [Errata BWT006]
> 2. WaVSThreadDispatchOverride
> Performance optimization - Hw will decide which
> half slice the thread will dispatch, May not be
> really needed for VLV, as its single slice
>
> Modified the implementation of 1 workaround
> 1. WaDisableL3Bank2xClockGate
> Disabling L3 clock gating- MMIO 940c[25] = 1
Three things in one patch -> needs to be split up.
>
> Signed-off-by: Akash Goel <akash.goel@intel.com>
> ---
> drivers/gpu/drm/i915/i915_reg.h | 3 +++
> drivers/gpu/drm/i915/intel_pm.c | 22 +++++++++++++++++++++-
> 2 files changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index a699efd..d829754 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -934,6 +934,9 @@
> #define ECO_GATING_CX_ONLY (1<<3)
> #define ECO_FLIP_DONE (1<<0)
>
> +#define GEN7_CACHE_MODE_0 0x07000 /* IVB+ only */
> +#define GEN7_RC_OP_FLUSH_ENABLE (1<<0)
> +
> #define CACHE_MODE_1 0x7004 /* IVB+ */
> #define PIXEL_SUBSPAN_COLLECT_OPT_DISABLE (1<<6)
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 469170c..4c36ff8 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4955,6 +4955,12 @@ static void valleyview_init_clock_gating(struct drm_device *dev)
> I915_WRITE(GEN7_L3CNTLREG1, I915_READ(GEN7_L3CNTLREG1) | GEN7_L3AGDIS);
> I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, GEN7_WA_L3_CHICKEN_MODE);
>
> + /* WaDisable_RenderCache_OperationalFlush
> + * Clear bit 0, so we do a AND with the mask
> + * to keep other bits the same */
> + I915_WRITE(GEN7_CACHE_MODE_0, (I915_READ(GEN7_CACHE_MODE_0) |
> + _MASKED_BIT_DISABLE(GEN7_RC_OP_FLUSH_ENABLE)));
This should be disabled for everything gen4+. We don't seem to do it for
any other platform though, and I guess the reason is that it should
already default to disabled. So I'm not sure we need this, but if we do
then I'd prefer to do it consistently for all platforms.
> +
> /* WaForceL3Serialization:vlv */
> I915_WRITE(GEN7_L3SQCREG4, I915_READ(GEN7_L3SQCREG4) &
> ~L3SQ_URB_READ_CAM_MATCH_DISABLE);
> @@ -4991,10 +4997,24 @@ static void valleyview_init_clock_gating(struct drm_device *dev)
> GEN6_RCPBUNIT_CLOCK_GATE_DISABLE |
> GEN6_RCCUNIT_CLOCK_GATE_DISABLE);
>
> - I915_WRITE(GEN7_UCGCTL4, GEN7_L3BANK2X_CLOCK_GATE_DISABLE);
> + /* WaDisableL3Bank2xClockGate
> + * Disabling L3 clock gating- MMIO 940c[25] = 1
> + * Set bit 25, to disable L3_BANK_2x_CLK_GATING */
> + I915_WRIT9E(GEN7_UCGCTL4,
> + I915_READ(GEN7_UCGCTL4) | GEN7_L3BANK2X_CLOCK_GATE_DISABLE);
>
> I915_WRITE(MI_ARB_VLV, MI_ARB_DISPLAY_TRICKLE_FEED_DISABLE);
>
> + /* WaVSThreadDispatchOverride
> + * Hw will decide which half slice the thread will dispatch.
> + * May not be needed for VLV, as its a single slice */
> + I915_WRITE(GEN7_CACHE_MODE_0,
> + I915_READ(GEN7_FF_THREAD_MODE) &
> + (~GEN7_FF_VS_SCHED_LOAD_BALANCE));
I'm pretty sure my workaround series from last summer tried to clean up
this w/a for all platforms. I guess you didn't look at those patches.
> +
> + /* WaDisable4x2SubspanOptimization,
> + * Disable combining of two 2x2 subspans into a 4x2 subspan
> + * Set chicken bit to disable subspan optimization */
This should also be another patch.
> I915_WRITE(CACHE_MODE_1,
> _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE));
>
> --
> 1.8.5.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
next prev parent reply other threads:[~2014-01-22 11:11 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-22 3:45 [PATCH 0/6] Rendering specific Hw workarounds for VLV akash.goel
2014-01-22 3:45 ` [PATCH 1/6] drm/i915/vlv: Added a rendering specific Hw WA 'WaTlbInvalidateStoreDataBefore' akash.goel
2014-01-22 10:51 ` Ville Syrjälä
2014-01-22 3:45 ` [PATCH 2/6] drm/i915/vlv: Added a rendering specific Hw WA 'WaReadAfterWriteHazard' akash.goel
2014-01-22 10:54 ` Ville Syrjälä
2014-01-22 11:11 ` Chris Wilson
2014-03-21 11:53 ` Gupta, Sourab
2014-03-21 14:58 ` Daniel Vetter
2014-03-21 16:50 ` Gupta, Sourab
2014-01-22 3:45 ` [PATCH 3/6] drm/i915/vlv: Modified the programming of 2 regs in Ring initialisation akash.goel
2014-01-22 11:01 ` Ville Syrjälä
2014-01-22 3:45 ` [PATCH 4/6] drm/i915/vlv: Added 3 rendering specific Hw Workarounds in clock gating fn akash.goel
2014-01-22 11:10 ` Ville Syrjälä [this message]
2014-03-21 12:58 ` [PATCH 1/2] drm/i915/vlv:Implement WaDisable_RenderCache_OperationalFlush sourab.gupta
2014-03-21 12:58 ` [PATCH 2/2] drm/i915/vlv: Modified Implementation of WaDisableL3Bank2xClockGate sourab.gupta
2014-01-22 3:45 ` [PATCH 5/6] drm/i915/vlv: Removed 3 rendering specific Hw WA from clock gating fn akash.goel
2014-01-22 11:11 ` Ville Syrjälä
2014-01-22 3:45 ` [PATCH 6/6] drm/i915/vlv: Added a rendering specific Hw WA 'WaSendDummy3dPrimitveAfterSetContext' akash.goel
2014-01-22 11:18 ` Ville Syrjälä
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140122111040.GM9454@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=akash.goel@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox