[packages/kernel/LINUX_4_14] i915_crash.patch added

jajcus jajcus at pld-linux.org
Wed Nov 14 22:37:31 CET 2018


commit e1e8d8cb8857e085ca3d64d6a421c737366925df
Author: Jacek Konieczny <jajcus at jajcus.net>
Date:   Wed Nov 14 20:17:40 2018 +0100

    i915_crash.patch added
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=104773
    "GPF in i915 call to gen8_ppgtt_alloc_pdp causes laptop to hang"

 i915_crash.patch | 42 ++++++++++++++++++++++++++++++++++++++++++
 kernel.spec      |  5 +++++
 2 files changed, 47 insertions(+)
---
diff --git a/kernel.spec b/kernel.spec
index 79f6027d..955cbc62 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -150,6 +150,9 @@ Source55:	kernel-imq.config
 
 Source58:	kernel-inittmpfs.config
 
+# https://bugs.freedesktop.org/show_bug.cgi?id=104773
+Patch2:		i915_crash.patch
+
 # http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.4-2.6.25-rc6.patch
 Patch3:		kernel-fbcondecor.patch
 Patch6:		linux-wistron-nx.patch
@@ -624,6 +627,8 @@ cd linux-%{basever}
 
 %if %{without vanilla}
 
+%patch2 -p1
+
 %if %{with fbcondecor}
 %patch3 -p1
 %endif
diff --git a/i915_crash.patch b/i915_crash.patch
new file mode 100644
index 00000000..7fc60ad3
--- /dev/null
+++ b/i915_crash.patch
@@ -0,0 +1,42 @@
+diff -dur -x '*~' -x '*.orig' -x '*.rej' linux-4.14.orig/drivers/gpu/drm/i915/i915_gem_gtt.c linux-4.14/drivers/gpu/drm/i915/i915_gem_gtt.c
+--- linux-4.14.orig/drivers/gpu/drm/i915/i915_gem_gtt.c	2017-11-12 19:46:13.000000000 +0100
++++ linux-4.14/drivers/gpu/drm/i915/i915_gem_gtt.c	2018-11-14 20:15:43.380387823 +0100
+@@ -1099,14 +1099,17 @@
+ 
+ 	gen8_for_each_pde(pt, pd, start, length, pde) {
+ 		if (pt == vm->scratch_pt) {
++			pd->used_pdes++;
++
+ 			pt = alloc_pt(vm);
+-			if (IS_ERR(pt))
++			if (IS_ERR(pt)) {
++				pd->used_pdes--;
+ 				goto unwind;
++			}
+ 
+ 			gen8_initialize_pt(vm, pt);
+ 
+ 			gen8_ppgtt_set_pde(vm, pd, pt, pde);
+-			pd->used_pdes++;
+ 			GEM_BUG_ON(pd->used_pdes > I915_PDES);
+ 		}
+ 
+@@ -1130,13 +1133,16 @@
+ 
+ 	gen8_for_each_pdpe(pd, pdp, start, length, pdpe) {
+ 		if (pd == vm->scratch_pd) {
++			pdp->used_pdpes++;
++
+ 			pd = alloc_pd(vm);
+-			if (IS_ERR(pd))
++			if (IS_ERR(pd)) {
++				pdp->used_pdpes--;
+ 				goto unwind;
++			}
+ 
+ 			gen8_initialize_pd(vm, pd);
+ 			gen8_ppgtt_set_pdpe(vm, pdp, pd, pdpe);
+-			pdp->used_pdpes++;
+ 			GEM_BUG_ON(pdp->used_pdpes > i915_pdpes_per_pdp(vm));
+ 
+ 			mark_tlbs_dirty(i915_vm_to_ppgtt(vm));
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/e1e8d8cb8857e085ca3d64d6a421c737366925df



More information about the pld-cvs-commit mailing list