summaryrefslogtreecommitdiff
path: root/kernels/linux-libre-xen/drm-i915-enable-irqs-earlier-when-resuming.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kernels/linux-libre-xen/drm-i915-enable-irqs-earlier-when-resuming.patch')
-rw-r--r--kernels/linux-libre-xen/drm-i915-enable-irqs-earlier-when-resuming.patch82
1 files changed, 82 insertions, 0 deletions
diff --git a/kernels/linux-libre-xen/drm-i915-enable-irqs-earlier-when-resuming.patch b/kernels/linux-libre-xen/drm-i915-enable-irqs-earlier-when-resuming.patch
new file mode 100644
index 000000000..cb621d520
--- /dev/null
+++ b/kernels/linux-libre-xen/drm-i915-enable-irqs-earlier-when-resuming.patch
@@ -0,0 +1,82 @@
+From 15239099d7a7a9ecdc1ccb5b187ae4cda5488ff9 Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Tue, 5 Mar 2013 09:50:58 +0100
+Subject: drm/i915: enable irqs earlier when resuming
+
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+
+commit 15239099d7a7a9ecdc1ccb5b187ae4cda5488ff9 upstream.
+
+We need it to restore the ilk rc6 context, since the gpu wait no
+requires interrupts. But in general having interrupts around should
+help in code sanity, since more and more stuff is interrupt driven.
+
+This regression has been introduced in
+
+commit 3e9605018ab3e333d51cc90fccfde2031886763b
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Tue Nov 27 16:22:54 2012 +0000
+
+ drm/i915: Rearrange code to only have a single method for waiting upon the ring
+
+Like in the driver load code we need to make sure that hotplug
+interrupts don't cause havoc with our modeset state, hence block them
+with the existing infrastructure. Again we ignore races where we might
+loose hotplug interrupts ...
+
+Note that the driver load part of the regression has already been
+fixed in
+
+commit 52d7ecedac3f96fb562cb482c139015372728638
+Author: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Sat Dec 1 21:03:22 2012 +0100
+
+ drm/i915: reorder setup sequence to have irqs for output setup
+
+v2: Add a note to the commit message about which patch fixed the
+driver load part of the regression. Stable kernels need to backport
+both patches.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=54691
+Cc: Chris Wilson <chris@chris-wilson.co.uk>
+Cc: Mika Kuoppala <mika.kuoppala@intel.com>
+Reported-and-Tested-by: Ilya Tumaykin <itumaykin@gmail.com>
+Reviewed-by: Chris wilson <chris@chris-wilson.co.uk> (v1)
+Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/i915_drv.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -486,6 +486,7 @@ static int i915_drm_freeze(struct drm_de
+ intel_modeset_disable(dev);
+
+ drm_irq_uninstall(dev);
++ dev_priv->enable_hotplug_processing = false;
+ }
+
+ i915_save_state(dev);
+@@ -562,9 +563,19 @@ static int __i915_drm_thaw(struct drm_de
+ error = i915_gem_init_hw(dev);
+ mutex_unlock(&dev->struct_mutex);
+
++ /* We need working interrupts for modeset enabling ... */
++ drm_irq_install(dev);
++
+ intel_modeset_init_hw(dev);
+ intel_modeset_setup_hw_state(dev, false);
+- drm_irq_install(dev);
++
++ /*
++ * ... but also need to make sure that hotplug processing
++ * doesn't cause havoc. Like in the driver load code we don't
++ * bother with the tiny race here where we might loose hotplug
++ * notifications.
++ * */
++ dev_priv->enable_hotplug_processing = true;
+ }
+
+ intel_opregion_init(dev);