All of lore.kernel.org
 help / color / mirror / Atom feed
From: Imre Deak <imre.deak@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Jani Nikula <jani.nikula@intel.com>,
	Mika Kuoppala <mika.kuoppala@intel.com>
Subject: [PATCH v2 2/2] drm/i915/bxt: work around HW coherency issue for cached GEM mappings
Date: Fri, 14 Aug 2015 15:38:57 +0300	[thread overview]
Message-ID: <1439555937-8016-3-git-send-email-imre.deak@intel.com> (raw)
In-Reply-To: <1439555937-8016-1-git-send-email-imre.deak@intel.com>

Due to a coherency issue on BXT A steppings we can't guarantee a
coherent view of cached GPU mappings, so fall back to uncached mappings.
Note that this still won't fix cases where userspace expects a coherent
view without synchronizing (via a set domain call). It still makes sense
to limit the kernel's notion of the mapping to be uncached, for example
for relocations to work properly during execbuffer time. Also in case
user space does synchronize the buffer, this will still guarantee that
we'll do the proper clflushing for the buffer.

v2:
- limit the WA to A steppings, on later stepping this HW issue is fixed

Testcast: igt/gem_store_dword_batches_loop/cached-mapping
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/i915_gem.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 407b6b3..987ffa8 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3742,7 +3742,16 @@ int i915_gem_set_caching_ioctl(struct drm_device *dev, void *data,
 		level = I915_CACHE_NONE;
 		break;
 	case I915_CACHING_CACHED:
-		level = I915_CACHE_LLC;
+		/*
+		 * Due to a HW issue on BXT A stepping, GPU stores via a
+		 * snooped mapping may leave stale data in a corresponding CPU
+		 * cacheline, whereas normally such cachelines would get
+		 * invalidated. As a workaround assume that these stores are
+		 * not coherent, which means we'll flush the CPU cache manually
+		 * whenever doing a CPU/GPU sync operation.
+		 */
+		level = IS_BROXTON(dev) && INTEL_REVID(dev) < BXT_REVID_B0 ?
+			I915_CACHE_NONE : I915_CACHE_LLC;
 		break;
 	case I915_CACHING_DISPLAY:
 		level = HAS_WT(dev) ? I915_CACHE_WT : I915_CACHE_NONE;
-- 
2.1.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2015-08-14 12:39 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-14 12:38 [PATCH v2 0/2] drm/i915/bxt: work around HW coherency issue Imre Deak
2015-08-14 12:38 ` [PATCH v2 1/2] drm/i915/bxt: work around HW coherency issue when accessing GPU seqno Imre Deak
2015-08-14 13:12   ` Chris Wilson
2015-08-14 13:31     ` Imre Deak
2015-08-14 15:35   ` [PATCH v3 " Imre Deak
2015-08-14 16:21     ` Chris Wilson
2015-08-14 12:38 ` Imre Deak [this message]
2015-08-14 13:11   ` [PATCH v2 2/2] drm/i915/bxt: work around HW coherency issue for cached GEM mappings Chris Wilson
2015-08-14 13:29     ` Imre Deak
2015-08-14 15:43   ` [PATCH v3 2/2] drm/i915/bxt: don't allow cached GEM mappings on A stepping Imre Deak
2015-08-14 16:18     ` Chris Wilson
2015-08-26  7:13       ` Daniel Vetter
2015-08-16 11:45   ` [PATCH v2 2/2] drm/i915/bxt: work around HW coherency issue for cached GEM mappings shuang.he
2015-08-14 12:49 ` [PATCH v2 0/2] drm/i915/bxt: work around HW coherency issue Chris Wilson
2015-08-14 13:26   ` Imre Deak
2015-08-14 13:31     ` Chris Wilson

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=1439555937-8016-3-git-send-email-imre.deak@intel.com \
    --to=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=mika.kuoppala@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.