diff options
author | André Fabian Silva Delgado <emulatorman@lavabit.com> | 2013-03-19 02:15:19 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@lavabit.com> | 2013-03-19 02:15:19 -0300 |
commit | 115ba0f3353608b3ba21a67d841f21e1fc152d9f (patch) | |
tree | 92e7de2c74bde37068cc72ede9aa6c1a2e15b1cb /kernels/linux-libre-xen/drm-i915-enable-irqs-earlier-when-resuming.patch | |
parent | 4bea87761214a907762df442c8591a82e2960968 (diff) | |
download | abslibre-115ba0f3353608b3ba21a67d841f21e1fc152d9f.tar.gz abslibre-115ba0f3353608b3ba21a67d841f21e1fc152d9f.tar.bz2 abslibre-115ba0f3353608b3ba21a67d841f21e1fc152d9f.zip |
linux-libre-{pae,xen}-3.8.3-2: updating revision
* Fix intel drm https://bugs.archlinux.org/task/34327
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.patch | 82 |
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); |