summaryrefslogtreecommitdiff
path: root/kernels
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@parabola.nu>2015-04-01 21:11:08 -0300
committerAndré Fabian Silva Delgado <emulatorman@parabola.nu>2015-04-01 21:11:08 -0300
commitabe03fc4e8c8d92e27619e75e7d920f8270217f4 (patch)
tree245a92aa4ca778aef30b07954f8f04376debec38 /kernels
parent1893aca02fd5df9cb89840667b9cfebb2ac985e6 (diff)
downloadabslibre-abe03fc4e8c8d92e27619e75e7d920f8270217f4.tar.gz
abslibre-abe03fc4e8c8d92e27619e75e7d920f8270217f4.tar.bz2
abslibre-abe03fc4e8c8d92e27619e75e7d920f8270217f4.zip
linux-libre-{pae,xen}-3.19.3_gnu-1.1: fix system boot hang with libreboot -> https://bugzilla.kernel.org/show_bug.cgi?id=93171
Diffstat (limited to 'kernels')
-rw-r--r--kernels/linux-libre-pae/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch66
-rw-r--r--kernels/linux-libre-pae/PKGBUILD12
-rw-r--r--kernels/linux-libre-xen/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch66
-rw-r--r--kernels/linux-libre-xen/PKGBUILD12
4 files changed, 150 insertions, 6 deletions
diff --git a/kernels/linux-libre-pae/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch b/kernels/linux-libre-pae/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch
new file mode 100644
index 000000000..4e801b3cc
--- /dev/null
+++ b/kernels/linux-libre-pae/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch
@@ -0,0 +1,66 @@
+From b27b2ff4bd6f0327ee550baa0397ccf0a559821f Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Wed, 1 Apr 2015 13:40:48 +0200
+Subject: [PATCH] drm/i915: Dont enable CS_PARSER_ERROR interrupts at all
+
+We stopped handling them in
+
+commit aaecdf611a05cac26a94713bad25297e60225c29
+Author: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Tue Nov 4 15:52:22 2014 +0100
+
+ drm/i915: Stop gathering error states for CS error interrupts
+
+but just clearing is apparently not enough: A sufficiently dead gpu
+left behind by firmware (*cough* coreboot *cough*) can keep the gpu in
+an endless loop of such interrupts, eventually leading to the nmi
+firing. And definitely to what looks like a machine hang.
+
+Since we don't even enable these interrupts on gen5+ let's do the same
+on earlier platforms.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=93171
+Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
+---
+ drivers/gpu/drm/i915/i915_irq.c | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
+index 14ecb4d13a1a..6d494432b19f 100644
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -3598,14 +3598,12 @@ static int i8xx_irq_postinstall(struct drm_device *dev)
+ ~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+ I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
+- I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
+- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
++ I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
+ I915_WRITE16(IMR, dev_priv->irq_mask);
+
+ I915_WRITE16(IER,
+ I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
+ I915_USER_INTERRUPT);
+ POSTING_READ16(IER);
+
+@@ -3767,14 +3765,12 @@ static int i915_irq_postinstall(struct drm_device *dev)
+ I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+ I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
+- I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
+- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
++ I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
+
+ enable_mask =
+ I915_ASLE_INTERRUPT |
+ I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
+ I915_USER_INTERRUPT;
+
+ if (I915_HAS_HOTPLUG(dev)) {
+--
+2.1.4
+
diff --git a/kernels/linux-libre-pae/PKGBUILD b/kernels/linux-libre-pae/PKGBUILD
index bc2e8f80d..ba527ceda 100644
--- a/kernels/linux-libre-pae/PKGBUILD
+++ b/kernels/linux-libre-pae/PKGBUILD
@@ -18,7 +18,7 @@ _replacesoldmodules=() # '%' gets replaced with _kernelname
_srcname=linux-${_pkgbasever%-*}
_archpkgver=${_pkgver%-*}
pkgver=${_pkgver//-/_}
-pkgrel=1
+pkgrel=1.1
arch=('i686')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
@@ -33,7 +33,8 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/li
# standard config files for mkinitcpio ramdisk
'linux.preset'
'logo_linux_'{clut224.ppm,vga16.ppm,mono.pbm}
- 'change-default-console-loglevel.patch')
+ 'change-default-console-loglevel.patch'
+ '0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch')
sha256sums=('2a60ec99ae498e7cdafac63ecca1c0ca07643eaa6c9a1a83f19e4daa3e75b9d9'
'SKIP'
'a8d04a9fc441edfa5fbdc9727743d584e7103d97ca13da4c667a894c4eff5a58'
@@ -43,7 +44,8 @@ sha256sums=('2a60ec99ae498e7cdafac63ecca1c0ca07643eaa6c9a1a83f19e4daa3e75b9d9'
'bfd4a7f61febe63c880534dcb7c31c5b932dde6acf991810b41a939a93535494'
'6de8a8319271809ffdb072b68d53d155eef12438e6d04ff06a5a4db82c34fa8a'
'13bd7a8d9ed6b6bc971e4cd162262c5a20448a83796af39ce394d827b0e5de74'
- '1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99')
+ '1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99'
+ '66cb2d859b253bc4e793baa3c0b95523d647a773b957dbc79b3eaacccf8692b5')
validpgpkeys=(
'474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva
)
@@ -73,6 +75,10 @@ prepare() {
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
+ # drm/i915: Stop gathering error states for CS error interrupts
+ # https://bugzilla.kernel.org/show_bug.cgi?id=93171
+ patch -p1 -i "${srcdir}/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch"
+
cat "${srcdir}/config" > ./.config # simpler
# append pkgrel to extraversion
diff --git a/kernels/linux-libre-xen/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch b/kernels/linux-libre-xen/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch
new file mode 100644
index 000000000..4e801b3cc
--- /dev/null
+++ b/kernels/linux-libre-xen/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch
@@ -0,0 +1,66 @@
+From b27b2ff4bd6f0327ee550baa0397ccf0a559821f Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Wed, 1 Apr 2015 13:40:48 +0200
+Subject: [PATCH] drm/i915: Dont enable CS_PARSER_ERROR interrupts at all
+
+We stopped handling them in
+
+commit aaecdf611a05cac26a94713bad25297e60225c29
+Author: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Tue Nov 4 15:52:22 2014 +0100
+
+ drm/i915: Stop gathering error states for CS error interrupts
+
+but just clearing is apparently not enough: A sufficiently dead gpu
+left behind by firmware (*cough* coreboot *cough*) can keep the gpu in
+an endless loop of such interrupts, eventually leading to the nmi
+firing. And definitely to what looks like a machine hang.
+
+Since we don't even enable these interrupts on gen5+ let's do the same
+on earlier platforms.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=93171
+Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
+---
+ drivers/gpu/drm/i915/i915_irq.c | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
+index 14ecb4d13a1a..6d494432b19f 100644
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -3598,14 +3598,12 @@ static int i8xx_irq_postinstall(struct drm_device *dev)
+ ~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+ I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
+- I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
+- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
++ I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
+ I915_WRITE16(IMR, dev_priv->irq_mask);
+
+ I915_WRITE16(IER,
+ I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
+ I915_USER_INTERRUPT);
+ POSTING_READ16(IER);
+
+@@ -3767,14 +3765,12 @@ static int i915_irq_postinstall(struct drm_device *dev)
+ I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+ I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
+- I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
+- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
++ I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
+
+ enable_mask =
+ I915_ASLE_INTERRUPT |
+ I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
+ I915_USER_INTERRUPT;
+
+ if (I915_HAS_HOTPLUG(dev)) {
+--
+2.1.4
+
diff --git a/kernels/linux-libre-xen/PKGBUILD b/kernels/linux-libre-xen/PKGBUILD
index fab71239d..14b6e9902 100644
--- a/kernels/linux-libre-xen/PKGBUILD
+++ b/kernels/linux-libre-xen/PKGBUILD
@@ -18,7 +18,7 @@ _replacesoldmodules=() # '%' gets replaced with _kernelname
_srcname=linux-${_pkgbasever%-*}
_archpkgver=${_pkgver%-*}
pkgver=${_pkgver//-/_}
-pkgrel=1
+pkgrel=1.1
arch=('i686')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
@@ -33,7 +33,8 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/li
# standard config files for mkinitcpio ramdisk
'linux.preset'
'logo_linux_'{clut224.ppm,vga16.ppm,mono.pbm}
- 'change-default-console-loglevel.patch')
+ 'change-default-console-loglevel.patch'
+ '0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch')
sha256sums=('2a60ec99ae498e7cdafac63ecca1c0ca07643eaa6c9a1a83f19e4daa3e75b9d9'
'SKIP'
'a8d04a9fc441edfa5fbdc9727743d584e7103d97ca13da4c667a894c4eff5a58'
@@ -43,7 +44,8 @@ sha256sums=('2a60ec99ae498e7cdafac63ecca1c0ca07643eaa6c9a1a83f19e4daa3e75b9d9'
'bfd4a7f61febe63c880534dcb7c31c5b932dde6acf991810b41a939a93535494'
'6de8a8319271809ffdb072b68d53d155eef12438e6d04ff06a5a4db82c34fa8a'
'13bd7a8d9ed6b6bc971e4cd162262c5a20448a83796af39ce394d827b0e5de74'
- '1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99')
+ '1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99'
+ '66cb2d859b253bc4e793baa3c0b95523d647a773b957dbc79b3eaacccf8692b5')
validpgpkeys=(
'474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva
)
@@ -73,6 +75,10 @@ prepare() {
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
+ # drm/i915: Stop gathering error states for CS error interrupts
+ # https://bugzilla.kernel.org/show_bug.cgi?id=93171
+ patch -p1 -i "${srcdir}/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch"
+
cat "${srcdir}/config" > ./.config # simpler
# append pkgrel to extraversion