diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2015-04-01 21:08:18 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2015-04-01 21:08:18 -0300 |
commit | 5113505bccad5b371a53a49cdbca22f5c07ffa03 (patch) | |
tree | 35024acb210ddbfa959a3a0acb6af16c8e5dc8d8 /libre/linux-libre-grsec/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch | |
parent | 6f12c1e194b9cfe937e975813a2b160c695354b9 (diff) | |
download | abslibre-5113505bccad5b371a53a49cdbca22f5c07ffa03.tar.gz abslibre-5113505bccad5b371a53a49cdbca22f5c07ffa03.tar.bz2 abslibre-5113505bccad5b371a53a49cdbca22f5c07ffa03.zip |
linux-libre-grsec{,-knock}-3.19.3_gnu.201503270049-1.1: fix system boot hang with libreboot -> https://bugzilla.kernel.org/show_bug.cgi?id=93171
Diffstat (limited to 'libre/linux-libre-grsec/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch')
-rw-r--r-- | libre/linux-libre-grsec/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/libre/linux-libre-grsec/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch b/libre/linux-libre-grsec/0001-drm-i915-Dont-enable-CS_PARSER_ERROR-interrupts-at-all.patch new file mode 100644 index 000000000..4e801b3cc --- /dev/null +++ b/libre/linux-libre-grsec/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 + |