[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(®->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