diff options
author | André Fabian Silva Delgado <andre@pc-01.localdomain> | 2012-03-12 01:16:00 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <andre@pc-01.localdomain> | 2012-03-12 01:16:00 -0300 |
commit | 0898dcbc181487ce82934f9f900b2a1772fd2da0 (patch) | |
tree | f3ae46a77fa698eac4f8786beff116e49132e1b2 /kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch | |
parent | 27c545ae9d8f8876469bed2eb8d11fdd6455992f (diff) | |
download | abslibre-0898dcbc181487ce82934f9f900b2a1772fd2da0.tar.gz abslibre-0898dcbc181487ce82934f9f900b2a1772fd2da0.tar.bz2 abslibre-0898dcbc181487ce82934f9f900b2a1772fd2da0.zip |
kernels/linux-libre-aufs_friendly
Diffstat (limited to 'kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch')
-rw-r--r-- | kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch b/kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch new file mode 100644 index 000000000..5840c9181 --- /dev/null +++ b/kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch @@ -0,0 +1,55 @@ +commit 389a55581e30607af0fcde6cdb4e54f189cf46cf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 29 15:12:16 2011 +0000 + + drm/i915: Only clear the GPU domains upon a successful finish + + By clearing the GPU read domains before waiting upon the buffer, we run + the risk of the wait being interrupted and the domains prematurely + cleared. The next time we attempt to wait upon the buffer (after + userspace handles the signal), we believe that the buffer is idle and so + skip the wait. + + There are a number of bugs across all generations which show signs of an + overly haste reuse of active buffers. + + Such as: + + https://bugs.freedesktop.org/show_bug.cgi?id=29046 + https://bugs.freedesktop.org/show_bug.cgi?id=35863 + https://bugs.freedesktop.org/show_bug.cgi?id=38952 + https://bugs.freedesktop.org/show_bug.cgi?id=40282 + https://bugs.freedesktop.org/show_bug.cgi?id=41098 + https://bugs.freedesktop.org/show_bug.cgi?id=41102 + https://bugs.freedesktop.org/show_bug.cgi?id=41284 + https://bugs.freedesktop.org/show_bug.cgi?id=42141 + + A couple of those pre-date i915_gem_object_finish_gpu(), so may be + unrelated (such as a wild write from a userspace command buffer), but + this does look like a convincing cause for most of those bugs. + + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> + Cc: stable@kernel.org + Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> + Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> + +diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c +index d560175..036bc58 100644 +--- a/drivers/gpu/drm/i915/i915_gem.c ++++ b/drivers/gpu/drm/i915/i915_gem.c +@@ -3087,10 +3087,13 @@ i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj) + return ret; + } + ++ ret = i915_gem_object_wait_rendering(obj); ++ if (ret) ++ return ret; ++ + /* Ensure that we invalidate the GPU's caches and TLBs. */ + obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS; +- +- return i915_gem_object_wait_rendering(obj); ++ return 0; + } + + /** |