]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/3.19.7/drm-i915-dont-enable-cs_parser_error-interrupts-at-all.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 3.19.7 / drm-i915-dont-enable-cs_parser_error-interrupts-at-all.patch
1 From 37ef01ab5d24d1d520dc79f6a98099d451c2a901 Mon Sep 17 00:00:00 2001
2 From: Daniel Vetter <daniel.vetter@ffwll.ch>
3 Date: Wed, 1 Apr 2015 13:43:46 +0200
4 Subject: drm/i915: Dont enable CS_PARSER_ERROR interrupts at all
5
6 From: Daniel Vetter <daniel.vetter@ffwll.ch>
7
8 commit 37ef01ab5d24d1d520dc79f6a98099d451c2a901 upstream.
9
10 We stopped handling them in
11
12 commit aaecdf611a05cac26a94713bad25297e60225c29
13 Author: Daniel Vetter <daniel.vetter@ffwll.ch>
14 Date: Tue Nov 4 15:52:22 2014 +0100
15
16 drm/i915: Stop gathering error states for CS error interrupts
17
18 but just clearing is apparently not enough: A sufficiently dead gpu
19 left behind by firmware (*cough* coreboot *cough*) can keep the gpu in
20 an endless loop of such interrupts, eventually leading to the nmi
21 firing. And definitely to what looks like a machine hang.
22
23 Since we don't even enable these interrupts on gen5+ let's do the same
24 on earlier platforms.
25
26 Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=93171
27 Tested-by: Mono <mono-for-kernel-org@donderklumpen.de>
28 Tested-by: info@gluglug.org.uk
29 Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
30 Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
31 Signed-off-by: Jani Nikula <jani.nikula@intel.com>
32 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
33
34 ---
35 drivers/gpu/drm/i915/i915_irq.c | 8 ++------
36 1 file changed, 2 insertions(+), 6 deletions(-)
37
38 --- a/drivers/gpu/drm/i915/i915_irq.c
39 +++ b/drivers/gpu/drm/i915/i915_irq.c
40 @@ -3717,14 +3717,12 @@ static int i8xx_irq_postinstall(struct d
41 ~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
42 I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
43 I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
44 - I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
45 - I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
46 + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
47 I915_WRITE16(IMR, dev_priv->irq_mask);
48
49 I915_WRITE16(IER,
50 I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
51 I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
52 - I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
53 I915_USER_INTERRUPT);
54 POSTING_READ16(IER);
55
56 @@ -3886,14 +3884,12 @@ static int i915_irq_postinstall(struct d
57 I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
58 I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
59 I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
60 - I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
61 - I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
62 + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
63
64 enable_mask =
65 I915_ASLE_INTERRUPT |
66 I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
67 I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
68 - I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
69 I915_USER_INTERRUPT;
70
71 if (I915_HAS_HOTPLUG(dev)) {