[kernel/f15/master] i915: add fix for 945G misrendering terminal

Dave Airlie airlied at fedoraproject.org
Tue Mar 22 23:42:05 UTC 2011


commit e04a1dcc80bb7d476cd8f19463256a854322e18b
Author: Dave Airlie <airlied at redhat.com>
Date:   Wed Mar 23 09:41:36 2011 +1000

    i915: add fix for 945G misrendering terminal

 drm-i915-fix-pipelined-fencing.patch |   80 ++++++++++++++++++++++++++++++++++
 kernel.spec                          |    8 +++-
 2 files changed, 87 insertions(+), 1 deletions(-)
---
diff --git a/drm-i915-fix-pipelined-fencing.patch b/drm-i915-fix-pipelined-fencing.patch
new file mode 100644
index 0000000..b6c016c
--- /dev/null
+++ b/drm-i915-fix-pipelined-fencing.patch
@@ -0,0 +1,80 @@
+From 3b936797f5e4623ae1b80a5f0c4df30a17360bf5 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris at chris-wilson.co.uk>
+Date: Thu, 17 Mar 2011 15:23:22 +0000
+Subject: [PATCH] drm/i915: Fix pipelined fencing
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=34584
+Cc: Andy Whitcroft <apw at canonical.com>
+Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
+Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
+---
+ drivers/gpu/drm/i915/i915_gem.c |   46 ++++++++++++++++----------------------
+ 1 files changed, 19 insertions(+), 27 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
+index 36e66cc..10378a3 100644
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -2544,8 +2544,25 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
+ 		reg = &dev_priv->fence_regs[obj->fence_reg];
+ 		list_move_tail(&reg->lru_list, &dev_priv->mm.fence_list);
+ 
+-		if (!obj->fenced_gpu_access && !obj->last_fenced_seqno)
+-			pipelined = NULL;
++		if (obj->tiling_changed) {
++			ret = i915_gem_object_flush_fence(obj,
++							  pipelined,
++							  interruptible);
++			if (ret)
++				return ret;
++
++			if (!obj->fenced_gpu_access && !obj->last_fenced_seqno)
++				pipelined = NULL;
++
++			if (pipelined) {
++				reg->setup_seqno =
++					i915_gem_next_request_seqno(dev, pipelined);
++				obj->last_fenced_seqno = reg->setup_seqno;
++				obj->last_fenced_ring = pipelined;
++			}
++
++			goto update;
++		}
+ 
+ 		if (!pipelined) {
+ 			if (reg->setup_seqno) {
+@@ -2568,31 +2585,6 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
+ 							  interruptible);
+ 			if (ret)
+ 				return ret;
+-		} else if (obj->tiling_changed) {
+-			if (obj->fenced_gpu_access) {
+-				if (obj->base.write_domain & I915_GEM_GPU_DOMAINS) {
+-					ret = i915_gem_flush_ring(obj->base.dev, obj->ring,
+-								  0, obj->base.write_domain);
+-					if (ret)
+-						return ret;
+-				}
+-
+-				obj->fenced_gpu_access = false;
+-			}
+-		}
+-
+-		if (!obj->fenced_gpu_access && !obj->last_fenced_seqno)
+-			pipelined = NULL;
+-		BUG_ON(!pipelined && reg->setup_seqno);
+-
+-		if (obj->tiling_changed) {
+-			if (pipelined) {
+-				reg->setup_seqno =
+-					i915_gem_next_request_seqno(dev, pipelined);
+-				obj->last_fenced_seqno = reg->setup_seqno;
+-				obj->last_fenced_ring = pipelined;
+-			}
+-			goto update;
+ 		}
+ 
+ 		return 0;
+-- 
+1.5.6.5
+
diff --git a/kernel.spec b/kernel.spec
index 2019739..8dce0b1 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -51,7 +51,7 @@ Summary: The Linux kernel
 # For non-released -rc kernels, this will be prepended with "0.", so
 # for example a 3 here will become 0.3
 #
-%global baserelease 4
+%global baserelease 5
 %global fedora_build %{baserelease}
 
 # base_sublevel is the kernel version we're starting with and patching
@@ -672,6 +672,8 @@ Patch1555: fix_xen_guest_on_old_EC2.patch
 Patch1810: drm-nouveau-updates.patch
 Patch1819: drm-intel-big-hammer.patch
 # intel drm is all merged upstream
+# fix for 945G corruption will hit stable eventually
+Patch1821: drm-i915-fix-pipelined-fencing.patch
 Patch1824: drm-intel-next.patch
 # make sure the lvds comes back on lid open
 Patch1825: drm-intel-make-lvds-work.patch
@@ -1306,6 +1308,7 @@ ApplyPatch drm-intel-big-hammer.patch
 ApplyPatch drm-intel-make-lvds-work.patch
 ApplyPatch linux-2.6-intel-iommu-igfx.patch
 ApplyPatch drm-intel-edp-fixes.patch
+ApplyPatch drm-i915-fix-pipelined-fencing.patch
 # rhbz#681285 (i965: crash in brw_wm_surface_state.c::prepare_wm_surfaces()
 #  where intelObj->mt == NULL)
 #ApplyPatch drm-i915-gen4-has-non-power-of-two-strides.patch
@@ -1970,6 +1973,9 @@ fi
 # and build.
 
 %changelog
+* Wed Mar 23 2011 Dave Airlie <airlied at redhat.com> 2.6.38-5
+- i915: add fix for 945G misrendering terminal
+
 * Tue Mar 22 2011 Ben Skeggs <bskeggs at redhat.com> 2.6.38-4
 - nouveau: implement missing bios opcode 0x5c (rhbz#688569)
 - nouveau: a couple of minor fixes from nouveau git


More information about the scm-commits mailing list