From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 04/32] drm/i915: Make workaround verification *optional*
Date: Wed, 17 Apr 2019 10:37:38 +0100 [thread overview]
Message-ID: <2f690c35-764c-ff92-1dba-c501843796bd@linux.intel.com> (raw)
In-Reply-To: <20190417075657.19456-4-chris@chris-wilson.co.uk>
On 17/04/2019 08:56, Chris Wilson wrote:
> Sometimes the HW doesn't even play fair, and completely forgets about
> register writes. Skip verifying known troublemakers.
>
> References: https://bugs.freedesktop.org/show_bug.cgi?id=108954
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
> drivers/gpu/drm/i915/intel_workarounds.c | 40 ++++++++++++++-----
> .../gpu/drm/i915/intel_workarounds_types.h | 7 ++--
> 2 files changed, 33 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_workarounds.c b/drivers/gpu/drm/i915/intel_workarounds.c
> index 89e2c603e34b..b3cbed1ee1c9 100644
> --- a/drivers/gpu/drm/i915/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/intel_workarounds.c
> @@ -122,6 +122,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> wal->wa_count++;
> wa_->val |= wa->val;
> wa_->mask |= wa->mask;
> + wa_->read |= wa->read;
> return;
> }
> }
> @@ -146,9 +147,10 @@ wa_write_masked_or(struct i915_wa_list *wal, i915_reg_t reg, u32 mask,
> u32 val)
> {
> struct i915_wa wa = {
> - .reg = reg,
> + .reg = reg,
> .mask = mask,
> - .val = val
> + .val = val,
> + .read = mask,
> };
>
> _wa_add(wal, &wa);
> @@ -172,6 +174,19 @@ wa_write_or(struct i915_wa_list *wal, i915_reg_t reg, u32 val)
> wa_write_masked_or(wal, reg, val, val);
> }
>
> +static void
> +ignore_wa_write_or(struct i915_wa_list *wal, i915_reg_t reg, u32 mask, u32 val)
> +{
> + struct i915_wa wa = {
> + .reg = reg,
> + .mask = mask,
> + .val = val,
> + /* Bonkers HW, skip verifying */
> + };
> +
> + _wa_add(wal, &wa);
> +}
> +
> #define WA_SET_BIT_MASKED(addr, mask) \
> wa_write_masked_or(wal, (addr), (mask), _MASKED_BIT_ENABLE(mask))
>
> @@ -916,10 +931,11 @@ wal_get_fw_for_rmw(struct intel_uncore *uncore, const struct i915_wa_list *wal)
> static bool
> wa_verify(const struct i915_wa *wa, u32 cur, const char *name, const char *from)
> {
> - if ((cur ^ wa->val) & wa->mask) {
> + if ((cur ^ wa->val) & wa->read) {
> DRM_ERROR("%s workaround lost on %s! (%x=%x/%x, expected %x, mask=%x)\n",
> - name, from, i915_mmio_reg_offset(wa->reg), cur,
> - cur & wa->mask, wa->val, wa->mask);
> + name, from, i915_mmio_reg_offset(wa->reg),
> + cur, cur & wa->read,
> + wa->val, wa->mask);
>
> return false;
> }
> @@ -1122,9 +1138,10 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
> _3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE);
>
> /* WaPipelineFlushCoherentLines:icl */
> - wa_write_or(wal,
> - GEN8_L3SQCREG4,
> - GEN8_LQSC_FLUSH_COHERENT_LINES);
> + ignore_wa_write_or(wal,
> + GEN8_L3SQCREG4,
> + GEN8_LQSC_FLUSH_COHERENT_LINES,
> + GEN8_LQSC_FLUSH_COHERENT_LINES);
>
> /*
> * Wa_1405543622:icl
> @@ -1151,9 +1168,10 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
> * Wa_1405733216:icl
> * Formerly known as WaDisableCleanEvicts
> */
> - wa_write_or(wal,
> - GEN8_L3SQCREG4,
> - GEN11_LQSC_CLEAN_EVICT_DISABLE);
> + ignore_wa_write_or(wal,
> + GEN8_L3SQCREG4,
> + GEN11_LQSC_CLEAN_EVICT_DISABLE,
> + GEN11_LQSC_CLEAN_EVICT_DISABLE);
>
> /* WaForwardProgressSoftReset:icl */
> wa_write_or(wal,
> diff --git a/drivers/gpu/drm/i915/intel_workarounds_types.h b/drivers/gpu/drm/i915/intel_workarounds_types.h
> index 30918da180ff..42ac1fb99572 100644
> --- a/drivers/gpu/drm/i915/intel_workarounds_types.h
> +++ b/drivers/gpu/drm/i915/intel_workarounds_types.h
> @@ -12,9 +12,10 @@
> #include "i915_reg.h"
>
> struct i915_wa {
> - i915_reg_t reg;
> - u32 mask;
> - u32 val;
> + i915_reg_t reg;
> + u32 mask;
> + u32 val;
> + u32 read;
> };
>
> struct i915_wa_list {
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2019-04-17 9:37 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-17 7:56 [PATCH 01/32] drm/i915: Seal races between async GPU cancellation, retirement and signaling Chris Wilson
2019-04-17 7:56 ` [PATCH 02/32] drm/i915: Verify workarounds immediately after application Chris Wilson
2019-04-17 7:56 ` [PATCH 03/32] drm/i915: Verify the engine workarounds stick on application Chris Wilson
2019-04-17 7:56 ` [PATCH 04/32] drm/i915: Make workaround verification *optional* Chris Wilson
2019-04-17 9:37 ` Tvrtko Ursulin [this message]
2019-04-17 7:56 ` [PATCH 05/32] drm/i915/selftests: Verify whitelist of context registers Chris Wilson
2019-04-17 7:56 ` [PATCH 06/32] drm/i915: Store the default sseu setup on the engine Chris Wilson
2019-04-17 9:40 ` Tvrtko Ursulin
2019-04-24 9:45 ` Chris Wilson
2019-04-17 7:56 ` [PATCH 07/32] drm/i915: Move GraphicsTechnology files under gt/ Chris Wilson
2019-04-17 9:42 ` Tvrtko Ursulin
2019-04-18 12:04 ` Joonas Lahtinen
2019-04-23 8:57 ` Joonas Lahtinen
2019-04-23 9:40 ` Jani Nikula
2019-04-23 16:46 ` Rodrigo Vivi
2019-04-17 7:56 ` [PATCH 08/32] drm/i915: Introduce struct intel_wakeref Chris Wilson
2019-04-17 9:45 ` Tvrtko Ursulin
2019-04-17 7:56 ` [PATCH 09/32] drm/i915: Pull the GEM powermangement coupling into its own file Chris Wilson
2019-04-17 7:56 ` [PATCH 10/32] drm/i915: Introduce context->enter() and context->exit() Chris Wilson
2019-04-17 7:56 ` [PATCH 11/32] drm/i915: Pass intel_context to i915_request_create() Chris Wilson
2019-04-17 7:56 ` [PATCH 12/32] drm/i915: Invert the GEM wakeref hierarchy Chris Wilson
2019-04-18 12:42 ` Tvrtko Ursulin
2019-04-18 13:07 ` Chris Wilson
2019-04-18 13:22 ` Chris Wilson
2019-04-23 13:02 ` Tvrtko Ursulin
2019-04-17 7:56 ` [PATCH 13/32] drm/i915/gvt: Pin the per-engine GVT shadow contexts Chris Wilson
2019-04-17 7:56 ` [PATCH 14/32] drm/i915: Explicitly pin the logical context for execbuf Chris Wilson
2019-04-17 7:56 ` [PATCH 15/32] drm/i915: Export intel_context_instance() Chris Wilson
2019-04-17 7:56 ` [PATCH 16/32] drm/i915/selftests: Use the real kernel context for sseu isolation tests Chris Wilson
2019-04-17 7:56 ` [PATCH 17/32] drm/i915/selftests: Pass around intel_context for sseu Chris Wilson
2019-04-17 7:56 ` [PATCH 18/32] drm/i915: Pass intel_context to intel_context_pin_lock() Chris Wilson
2019-04-17 7:56 ` [PATCH 19/32] drm/i915: Split engine setup/init into two phases Chris Wilson
2019-04-17 7:56 ` [PATCH 20/32] drm/i915: Switch back to an array of logical per-engine HW contexts Chris Wilson
2019-04-17 7:56 ` [PATCH 21/32] drm/i915: Remove intel_context.active_link Chris Wilson
2019-04-17 9:47 ` Tvrtko Ursulin
2019-04-17 7:56 ` [PATCH 22/32] drm/i915: Move i915_request_alloc into selftests/ Chris Wilson
2019-04-17 7:56 ` [PATCH 23/32] drm/i915: Allow multiple user handles to the same VM Chris Wilson
2019-04-17 7:56 ` [PATCH 24/32] drm/i915: Restore control over ppgtt for context creation ABI Chris Wilson
2019-04-17 7:56 ` [PATCH 25/32] drm/i915: Allow a context to define its set of engines Chris Wilson
2019-04-17 9:50 ` Tvrtko Ursulin
2019-04-17 7:56 ` [PATCH 26/32] drm/i915: Re-expose SINGLE_TIMELINE flags for context creation Chris Wilson
2019-04-17 7:56 ` [PATCH 27/32] drm/i915: Allow userspace to clone contexts on creation Chris Wilson
2019-04-17 9:50 ` Tvrtko Ursulin
2019-04-17 7:56 ` [PATCH 28/32] drm/i915: Load balancing across a virtual engine Chris Wilson
2019-04-17 11:26 ` Tvrtko Ursulin
2019-04-17 13:51 ` Chris Wilson
2019-04-17 7:56 ` [PATCH 29/32] drm/i915: Apply an execution_mask to the virtual_engine Chris Wilson
2019-04-17 11:43 ` Tvrtko Ursulin
2019-04-17 11:57 ` Chris Wilson
2019-04-17 12:35 ` Tvrtko Ursulin
2019-04-17 12:46 ` Chris Wilson
2019-04-17 13:32 ` Tvrtko Ursulin
2019-04-18 7:24 ` Chris Wilson
2019-04-17 7:56 ` [PATCH 30/32] drm/i915: Extend execution fence to support a callback Chris Wilson
2019-04-17 7:56 ` [PATCH 31/32] drm/i915/execlists: Virtual engine bonding Chris Wilson
2019-04-18 6:47 ` Tvrtko Ursulin
2019-04-18 6:57 ` Chris Wilson
2019-04-18 8:57 ` Tvrtko Ursulin
2019-04-18 9:13 ` Chris Wilson
2019-04-18 9:50 ` Tvrtko Ursulin
2019-04-18 9:59 ` Chris Wilson
2019-04-18 10:24 ` Tvrtko Ursulin
2019-04-17 7:56 ` [PATCH 32/32] drm/i915: Allow specification of parallel execbuf Chris Wilson
2019-04-17 8:46 ` [PATCH 01/32] drm/i915: Seal races between async GPU cancellation, retirement and signaling Chris Wilson
2019-04-17 11:33 ` ✗ Fi.CI.BAT: failure for series starting with [01/32] " Patchwork
2019-04-18 10:32 ` [PATCH 01/32] " Tvrtko Ursulin
2019-04-18 10:40 ` Chris Wilson
2019-04-23 12:59 ` Tvrtko Ursulin
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=2f690c35-764c-ff92-1dba-c501843796bd@linux.intel.com \
--to=tvrtko.ursulin@linux.intel.com \
--cc=chris@chris-wilson.co.uk \
--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