Bug 35072

Summary: [i915gm] Kicking stuck wait on render ring
Product: xorg Reporter: Tobias Diedrich <ranma+freedesktop>
Component: Driver/intelAssignee: Chris Wilson <chris>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: theholyettlz
Version: 7.6 (2010.12)Keywords: NEEDINFO
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Compiled gpu state and config details
none
Compiled crashlog for basically unpatched 2.6.38-rc8
none
Gpu hang while browsing in chrome, X was stuck at 100% cpu.
none
Another one while I was on this very bugtracker.
none
Again, browsing in chrome
none
20110315222921 gpu hang while browsing
none
20110316001333 gpu hang while browsing
none
20110316213815 crash while browsing in chrome
none
20110317230553 gpu hang while browsing
none
20110317233448 gpu hang while browsing, X using 100% cpu
none
Fix tiling corruption
none
Fix tiling corruption (v2.6.38)
none
Fix tiling corruption (wiggled for v2.6.38)
none
20110318224655 gpu hang while browsing in chrome, X at 100% cpu
none
20110318231206 gpu hang while browsing in chrome, X still usable, but slow.
none
20110319194019 gpu hang while browsing in chrome.
none
20110320225050 Kicking stuck wait on render ring while using MPlayer, driver recovered.
none
Kicking stuck wait on render ring while playing video in MPlayer
none
Fix unfenced alignment on pre-g33 none

Description Tobias Diedrich 2011-03-06 16:14:19 UTC
This just happened during video playback using MPlayer. Picture stopped, switching to different virtual desktop took a long time:

[ 5047.728022] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
[ 5047.728022] [drm:kick_ring] *ERROR* Kicking stuck wait on render ring
[ 5053.744024] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
[ 5053.744024] [drm:kick_ring] *ERROR* Kicking stuck wait on render ring

Kernel: 2.6.38-rc7 with https://bugs.freedesktop.org/show_bug.cgi?id=34014#c8 applied

ii  libdrm2        2.4.24-1       Userspace interface to kernel DRM services -
ii  xserver-xorg-v 2:2.14.901-1   X.Org X server -- Intel i8xx, i9xx display d

Unfotunately I saved the intel_gpu_dump output to /tmp and lost it on reboot since the system hung completely some time after that while I was writing this. (chrome did a nice job on restoring what I had entered so far though ;))

I _suspect_ that the only reason that this is not quite the same as the gpu lockup in https://bugs.freedesktop.org/show_bug.cgi?id=34014 is that this happens each time after resuming from suspend to memory:

Mar  6 23:01:46 navi kernel: [30453.432008] render error detected, EIR: 0x00000010
Mar  6 23:01:46 navi kernel: [30453.432008] page table error
Mar  6 23:01:46 navi kernel: [30453.432008]   PGTBL_ER: 0x00000003
Mar  6 23:01:46 navi kernel: [30453.432008] [drm:i915_report_and_clear_eir] *ERROR* EIR stuck: 0x00000010, masking
Mar  6 23:01:46 navi kernel: [30453.432008] render error detected, EIR: 0x00000010
Mar  6 23:01:46 navi kernel: [30453.432008] page table error
Mar  6 23:01:46 navi kernel: [30453.432008]   PGTBL_ER: 0x00000003
Mar  6 23:01:46 navi kernel: [30453.436010] [drm:i915_reset] *ERROR* Failed to reset chip.

So it's masking the render error EIR.

Retrieved from kern.log after reboot:
Mar  7 00:46:54 navi kernel: [ 5047.728022] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
Mar  7 00:46:54 navi kernel: [ 5047.728022] [drm:kick_ring] *ERROR* Kicking stuck wait on render ring
Mar  7 00:47:00 navi kernel: [ 5053.744024] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
Mar  7 00:47:00 navi kernel: [ 5053.744024] [drm:kick_ring] *ERROR* Kicking stuck wait on render ring
Mar  7 00:48:19 navi kernel: [ 5133.036024] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
Mar  7 00:48:19 navi kernel: [ 5133.036024] [drm:kick_ring] *ERROR* Kicking stuck wait on render ring
Mar  7 00:48:33 navi kernel: [ 5147.048023] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
Mar  7 00:48:33 navi kernel: [ 5147.048023] [drm:kick_ring] *ERROR* Kicking stuck wait on render ring
Mar  7 00:48:39 navi kernel: [ 5153.064023] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
Mar  7 00:48:39 navi kernel: [ 5153.064023] [drm:kick_ring] *ERROR* Kicking stuck wait on render ring
Mar  7 00:56:10 navi kernel: [ 5603.212024] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
Mar  7 00:56:10 navi kernel: [ 5603.216024] [drm:i915_do_wait_request] *ERROR* i915_do_wait_request returns -11 (awaiting 289847 at 289845, next 289848)
Mar  7 01:01:47 navi kernel: klogd 1.5.0#6, log source = /proc/kmsg started.
Mar  7 01:01:47 navi kernel: [    0.000000] Linux version 2.6.38-rc7 (ranma@navi) (gcc version 4.4.5 (Debian 4.4.5-13) ) #65 PREEMPT Sun Mar 6 23:16:00 CET 2011
Comment 1 Tobias Diedrich 2011-03-12 08:31:56 UTC
Created attachment 44394 [details]
Compiled gpu state and config details

May be moot because of the revert_6bda10d152735c22baf1dcd92937420b4b0a359a_fence_pipelining_disable
patch.
I had this applied because of the bisect result in https://bugs.freedesktop.org/show_bug.cgi?id=34584 to try if it helps in my case here.

The other i915 patches I have applied in this dump are:

# i915_invalid_unfenced_alignment

Index: linux-2.6.38-rc7/drivers/gpu/drm/i915/i915_gem.c
===================================================================
--- linux-2.6.38-rc7.orig/drivers/gpu/drm/i915/i915_gem.c	2011-03-06 23:13:21.150307624 +0100
+++ linux-2.6.38-rc7/drivers/gpu/drm/i915/i915_gem.c	2011-03-06 23:13:53.198944328 +0100
@@ -1411,6 +1411,7 @@
 	    obj->tiling_mode == I915_TILING_NONE)
 		return 4096;
 
+	return i915_gem_get_gtt_size(obj);
 	/*
 	 * Older chips need unfenced tiled buffers to be aligned to the left
 	 * edge of an even tile row (where tile rows are counted as if the bo is

# i915_drm_debug

Index: linux-2.6.38-rc7/drivers/gpu/drm/i915/i915_drv.c
===================================================================
--- linux-2.6.38-rc7.orig/drivers/gpu/drm/i915/i915_drv.c	2011-03-07 01:31:21.787178130 +0100
+++ linux-2.6.38-rc7/drivers/gpu/drm/i915/i915_drv.c	2011-03-09 21:47:07.333890303 +0100
@@ -280,6 +280,8 @@
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
+	printk(KERN_ERR "i915_drm_freeze()\n");
+
 	drm_kms_helper_poll_disable(dev);
 
 	pci_save_state(dev->pdev);
@@ -295,6 +297,7 @@
 		drm_irq_uninstall(dev);
 	}
 
+	printk(KERN_ERR "i915_save_state()\n");
 	i915_save_state(dev);
 
 	intel_opregion_fini(dev);
@@ -309,6 +312,8 @@
 {
 	int error;
 
+	printk(KERN_ERR "i915_suspend()\n");
+
 	if (!dev || !dev->dev_private) {
 		DRM_ERROR("dev: %p\n", dev);
 		DRM_ERROR("DRM not initialized, aborting suspend.\n");
@@ -340,6 +345,8 @@
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	int error = 0;
 
+	printk(KERN_ERR "i915_drm_thaw()\n");
+
 	if (drm_core_check_feature(dev, DRIVER_MODESET)) {
 		mutex_lock(&dev->struct_mutex);
 		i915_gem_restore_gtt_mappings(dev);
@@ -378,6 +385,8 @@
 {
 	int ret;
 
+	printk(KERN_ERR "i915_resume()\n");
+
 	if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
 		return 0;
 
@@ -515,7 +524,7 @@
 	}
 	dev_priv->last_gpu_reset = get_seconds();
 	if (ret) {
-		DRM_ERROR("Failed to reset chip.\n");
+		DRM_ERROR("Failed to reset chip (gen=%d, ret=%d).\n", INTEL_INFO(dev)->gen, ret);
 		mutex_unlock(&dev->struct_mutex);
 		return ret;
 	}
@@ -596,11 +605,14 @@
 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
 	int error;
 
+	printk(KERN_ERR "i915_pm_suspend()\n");
+
 	if (!drm_dev || !drm_dev->dev_private) {
 		dev_err(dev, "DRM not initialized, aborting suspend.\n");
 		return -ENODEV;
 	}
 
+	printk(KERN_ERR "switch_power_state: %d (switch_off=%d)\n", drm_dev->switch_power_state, DRM_SWITCH_POWER_OFF);
 	if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF)
 		return 0;
 
@@ -619,6 +631,8 @@
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
 
+	printk(KERN_ERR "i915_pm_resume()\n");
+
 	return i915_resume(drm_dev);
 }
 
@@ -627,6 +641,8 @@
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
 
+	printk(KERN_ERR "i915_pm_freeze()\n");
+
 	if (!drm_dev || !drm_dev->dev_private) {
 		dev_err(dev, "DRM not initialized, aborting suspend.\n");
 		return -ENODEV;
@@ -640,6 +656,8 @@
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
 
+	printk(KERN_ERR "i915_pm_thaw()\n");
+
 	return i915_drm_thaw(drm_dev);
 }
 

# i915_debug_test
Index: linux-2.6.38-rc7/drivers/gpu/drm/i915/i915_irq.c
===================================================================
--- linux-2.6.38-rc7.orig/drivers/gpu/drm/i915/i915_irq.c	2011-03-09 01:10:52.312479773 +0100
+++ linux-2.6.38-rc7/drivers/gpu/drm/i915/i915_irq.c	2011-03-09 01:23:34.436161397 +0100
@@ -954,6 +954,16 @@
 		}
 	}
 
+#define I810_PGETBL_CTL		0x2020
+#define I810_PGE_ERR		0x2024
+#define I965_PGETBL_CTL2	0x20C4
+	{
+		u32 pgetbl_ctl = I915_READ(I810_PGETBL_CTL);
+		printk(KERN_ERR "  PGETBL_CTL: 0x%08x\n", pgetbl_ctl);
+		u32 pgetbl_ctl2 = I915_READ(I965_PGETBL_CTL2);
+		printk(KERN_ERR "  PGETBL_CTL2: 0x%08x\n", pgetbl_ctl2);
+	}
+
 	if (eir & I915_ERROR_MEMORY_REFRESH) {
 		u32 pipea_stats = I915_READ(PIPEASTAT);
 		u32 pipeb_stats = I915_READ(PIPEBSTAT);
Comment 2 Tobias Diedrich 2011-03-12 08:35:21 UTC
However I'm pretty sure either the i915_invalid_unfenced_alignment or the commit revert make it crash much less oftern with 2.6.38-rc7/rc8 (Currently upgraded to -rc8 without patches and it already crashed again).
Comment 3 Tobias Diedrich 2011-03-12 08:38:39 UTC
Created attachment 44395 [details]
Compiled crashlog for basically unpatched 2.6.38-rc8

[ 2353.144057] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
[ 2353.148057] [drm:i915_do_wait_request] *ERROR* i915_do_wait_request returns -11 (awaiting 223878 at 223869, next 223879)
[ 2354.652005] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
[ 2354.660008] [drm:i915_reset] *ERROR* Failed to reset chip.
Comment 4 Tobias Diedrich 2011-03-13 09:05:03 UTC
Created attachment 44416 [details]
Gpu hang while browsing in chrome, X was stuck at 100% cpu.
Comment 5 Tobias Diedrich 2011-03-13 09:40:55 UTC
Created attachment 44417 [details]
Another one while I was on this very bugtracker.

BTW, these include the i915_error_state.
Comment 6 Tobias Diedrich 2011-03-13 09:53:07 UTC
Created attachment 44418 [details]
Again, browsing in chrome

I'm going to try running with 6bda10d152735c22baf1dcd92937420b4b0a359a reverted again.
Comment 7 Tobias Diedrich 2011-03-17 15:09:30 UTC
Created attachment 44560 [details]
20110315222921 gpu hang while browsing
Comment 8 Tobias Diedrich 2011-03-17 15:10:32 UTC
Created attachment 44561 [details]
20110316001333 gpu hang while browsing
Comment 9 Tobias Diedrich 2011-03-17 15:11:26 UTC
Created attachment 44562 [details]
20110316213815 crash while browsing in chrome
Comment 10 Tobias Diedrich 2011-03-17 15:13:14 UTC
Created attachment 44563 [details]
20110317230553 gpu hang while browsing
Comment 11 Tobias Diedrich 2011-03-17 15:43:35 UTC
Created attachment 44564 [details]
20110317233448 gpu hang while browsing, X using 100% cpu

X was stuck, Strg+Alt+FN didn't work, needed to log in remotely to dump state and reboot.

20110317233448.i915gm.crashlog.tar.gz:
20110317233448.i915gm.crashlog/config.gz
20110317233448.i915gm.crashlog/quilt_top.txt
20110317233448.i915gm.crashlog/patches/
20110317233448.i915gm.crashlog/patches/nbd-sectsize
20110317233448.i915gm.crashlog/patches/config
20110317233448.i915gm.crashlog/patches/enable_ccache
20110317233448.i915gm.crashlog/patches/series
20110317233448.i915gm.crashlog/i915_error_state.txt
20110317233448.i915gm.crashlog/dmesg_boot.txt
20110317233448.i915gm.crashlog/dmidecode.txt
20110317233448.i915gm.crashlog/lspci_nxxx.txt
20110317233448.i915gm.crashlog/lspci.txt
20110317233448.i915gm.crashlog/dmesg_now.txt
20110317233448.i915gm.crashlog/xorg.conf
20110317233448.i915gm.crashlog/Xorg.0.log
20110317233448.i915gm.crashlog/intel_reg_dumper.txt
20110317233448.i915gm.crashlog/intel_gpu_dump.txt
20110317233448.i915gm.crashlog/dpkg.txt
20110317233448.i915gm.crashlog/uname.txt
20110317233448.i915gm.crashlog/intel_stepping.txt
Comment 12 Chris Wilson 2011-03-18 02:51:52 UTC
Created attachment 44571 [details] [review]
Fix tiling corruption

Please try this patch.
Comment 13 Tobias Diedrich 2011-03-18 13:51:25 UTC
The patch doesn't apply cleanly against either of 2.6.38-rc7, -rc8 or .38 proper.
I'll try wiggling it into 2.6.38 manually.
Comment 14 Chris Wilson 2011-03-18 14:15:20 UTC
Created attachment 44596 [details] [review]
Fix tiling corruption (v2.6.38)

This is the 2.6.38 (as opposed to linus/master) variant. Alternatively you can pull it from drm-intel-staging.
Comment 15 Tobias Diedrich 2011-03-18 14:38:54 UTC
Created attachment 44597 [details] [review]
Fix tiling corruption (wiggled for v2.6.38)

You accidentally attached the same patch again. ;)
Here is my wiggled version, the compile just finished, I'll try booting it now.
Comment 16 Tobias Diedrich 2011-03-18 14:52:53 UTC
Created attachment 44598 [details]
20110318224655 gpu hang while browsing in chrome, X at 100% cpu

20110318224655.i915gm.crashlog.tar.gz contents:
20110318224655.i915gm.crashlog/config.gz
20110318224655.i915gm.crashlog/quilt_top.txt
20110318224655.i915gm.crashlog/patches/
20110318224655.i915gm.crashlog/patches/i915_fix_tiling_corruption_from_pipelined_fencing.txt
20110318224655.i915gm.crashlog/patches/nbd-sectsize
20110318224655.i915gm.crashlog/patches/config
20110318224655.i915gm.crashlog/patches/enable_ccache
20110318224655.i915gm.crashlog/patches/series
20110318224655.i915gm.crashlog/i915_error_state.txt
20110318224655.i915gm.crashlog/dmesg_boot.txt
20110318224655.i915gm.crashlog/dmidecode.txt
20110318224655.i915gm.crashlog/lspci_nxxx.txt
20110318224655.i915gm.crashlog/lspci.txt
20110318224655.i915gm.crashlog/dmesg_now.txt
20110318224655.i915gm.crashlog/xorg.conf
20110318224655.i915gm.crashlog/Xorg.0.log
20110318224655.i915gm.crashlog/intel_reg_dumper.txt
20110318224655.i915gm.crashlog/intel_gpu_dump.txt
20110318224655.i915gm.crashlog/dpkg.txt
20110318224655.i915gm.crashlog/uname.txt
20110318224655.i915gm.crashlog/intel_stepping.txt
Comment 17 Chris Wilson 2011-03-18 15:05:42 UTC
Hmm.

Try making this change to xf86-video-intel:

diff --git a/src/intel_memory.c b/src/intel_memory.c
index 64dfd8e..e805ff1 100644
--- a/src/intel_memory.c
+++ b/src/intel_memory.c
@@ -307,5 +307,6 @@ void intel_set_gem_max_sizes(ScrnInfoPtr scrn)
        gp.value = &value;
        gp.param = I915_PARAM_HAS_RELAXED_FENCING;
        ret = drmIoctl(intel->drmSubFD, DRM_IOCTL_I915_GETPARAM, &gp);
-       intel->has_relaxed_fencing = ret == 0;
+       //intel->has_relaxed_fencing = ret == 0;
+       intel->has_relaxed_fencing = 0;
 }
Comment 18 Tobias Diedrich 2011-03-18 15:14:46 UTC
Created attachment 44599 [details]
20110318231206 gpu hang while browsing in chrome, X still usable, but slow.

20110318231206.i915gm.crashlog.tar.gz contents:
20110318231206.i915gm.crashlog/config.gz
20110318231206.i915gm.crashlog/quilt_top.txt
20110318231206.i915gm.crashlog/intel_gpu_gather_info.sh
20110318231206.i915gm.crashlog/patches/
20110318231206.i915gm.crashlog/patches/i915_fix_tiling_corruption_from_pipelined_fencing.txt
20110318231206.i915gm.crashlog/patches/nbd-sectsize
20110318231206.i915gm.crashlog/patches/config
20110318231206.i915gm.crashlog/patches/enable_ccache
20110318231206.i915gm.crashlog/patches/series
20110318231206.i915gm.crashlog/i915_error_state.txt
20110318231206.i915gm.crashlog/dmesg_boot.txt
20110318231206.i915gm.crashlog/dmidecode.txt
20110318231206.i915gm.crashlog/lspci_nxxx.txt
20110318231206.i915gm.crashlog/lspci.txt
20110318231206.i915gm.crashlog/dmesg_now.txt
20110318231206.i915gm.crashlog/xorg.conf
20110318231206.i915gm.crashlog/Xorg.0.log
20110318231206.i915gm.crashlog/intel_reg_dumper.txt
20110318231206.i915gm.crashlog/intel_gpu_dump.txt
20110318231206.i915gm.crashlog/dpkg.txt
20110318231206.i915gm.crashlog/uname.txt
20110318231206.i915gm.crashlog/intel_stepping.txt
Comment 19 Tobias Diedrich 2011-03-18 16:20:59 UTC
Rebuilt xserver-xorg-video-intel with this change, verified its active:
[   422.050] (WW) intel(0): has_relaxed_fencing is 1, forcing to 0.
Comment 20 Tobias Diedrich 2011-03-19 11:42:27 UTC
Created attachment 44619 [details]
20110319194019 gpu hang while browsing in chrome.

Took longer to trigger this time.
Comment 21 Tobias Diedrich 2011-03-20 14:53:53 UTC
Created attachment 44642 [details]
20110320225050 Kicking stuck wait on render ring while using MPlayer, driver recovered.

20110320225050.i915gm.crashlog.tar.gz contents:
20110320225050.i915gm.crashlog/config.gz
20110320225050.i915gm.crashlog/quilt_top.txt
20110320225050.i915gm.crashlog/intel_gpu_gather_info.sh
20110320225050.i915gm.crashlog/patches/
20110320225050.i915gm.crashlog/patches/i915_fix_tiling_corruption_from_pipelined_fencing.txt
20110320225050.i915gm.crashlog/patches/nbd-sectsize
20110320225050.i915gm.crashlog/patches/config
20110320225050.i915gm.crashlog/patches/enable_ccache
20110320225050.i915gm.crashlog/patches/series
20110320225050.i915gm.crashlog/i915_error_state.txt
20110320225050.i915gm.crashlog/dmesg_boot.txt
20110320225050.i915gm.crashlog/dmidecode.txt
20110320225050.i915gm.crashlog/lspci_nxxx.txt
20110320225050.i915gm.crashlog/lspci.txt
20110320225050.i915gm.crashlog/dmesg_now.txt
20110320225050.i915gm.crashlog/xorg.conf
20110320225050.i915gm.crashlog/Xorg.0.log
20110320225050.i915gm.crashlog/intel_reg_dumper.txt
20110320225050.i915gm.crashlog/intel_gpu_dump.txt
20110320225050.i915gm.crashlog/dpkg.txt
20110320225050.i915gm.crashlog/uname.txt
20110320225050.i915gm.crashlog/intel_stepping.txt
Comment 22 Tobias Diedrich 2011-03-20 15:00:23 UTC
Actually I just found it didn't recover, video playback always triggered the "Kicking stuck wait on render ring" again after this until I did a suspend_to_memory-resume cycle.  Note that I'm explicitly using the video overlay (XvPreferOverlay==1 and vo=xv:port=86), last time I tried the textured video adapter it was still inferior, it regularily had frame swapping/tearing issues.
Comment 23 Tobias Diedrich 2011-03-22 16:44:25 UTC
Created attachment 44732 [details]
Kicking stuck wait on render ring while playing video in MPlayer
Comment 24 Chris Wilson 2011-06-16 13:28:41 UTC
Created attachment 48063 [details] [review]
Fix unfenced alignment on pre-g33

I think this is the final nail in the coffin...
Comment 25 Chris Wilson 2011-07-29 02:35:01 UTC
commit e28f87116503f796aba4fb27d81e2c3d81966174
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Jul 18 13:11:49 2011 -0700

    drm/i915: Fix unfenced alignment on pre-G33 hardware
    
    Align unfenced buffers on older hardware to the power-of-two object
    size.  The docs suggest that it should be possible to align only to a
    power-of-two tile height, but using the already computed fence size is
    easier and always correct. We also have to make sure that we unbind
    misaligned buffers upon tiling changes.
    
    In order to prevent a repetition of this bug, we change the interface
    to the alignment computation routines to force the caller to provide
    the requested alignment and size of the GTT binding rather than assume
    the current values on the object.
    
    Reported-and-tested-by: Sitosfe Wheeler <sitsofe@yahoo.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36326
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: stable@kernel.org
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Keith Packard <keithp@keithp.com>

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.