--- /dev/null
+From foo@baz Mon Mar 18 13:13:39 PDT 2013
+Date: Mon, 18 Mar 2013 13:13:39 -0700
+To: Greg KH <gregkh@linuxfoundation.org>
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Subject: Revert "drm/i915: enable irqs earlier when resuming"
+
+This reverts commit 31f14f4219d2a74b7a6d86c7798f49141b5eccbe which was
+commit 15239099d7a7a9ecdc1ccb5b187ae4cda5488ff9 upstream.
+
+It caused problems in the 3.8-stable series, but 3.9-rc is just fine.
+
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Chris Wilson <chris@chris-wilson.co.uk>
+Cc: Mika Kuoppala <mika.kuoppala@intel.com>
+Cc: Ilya Tumaykin <itumaykin@gmail.com>
+Cc: Chris wilson <chris@chris-wilson.co.uk>
+Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
+
+---
+ drivers/gpu/drm/i915/i915_drv.c | 13 +------------
+ 1 file changed, 1 insertion(+), 12 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -486,7 +486,6 @@ 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);
+@@ -563,19 +562,9 @@ 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);
+-
+- /*
+- * ... 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;
++ drm_irq_install(dev);
+ }
+
+ intel_opregion_init(dev);
--- /dev/null
+From foo@baz Mon Mar 18 13:16:44 PDT 2013
+Date: Mon, 18 Mar 2013 13:16:44 -0700
+To: Greg KH <gregkh@linuxfoundation.org>
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Subject: Revert "drm/i915: reorder setup sequence to have irqs for output setup"
+
+Revert commit 2a9810441fcc26cf3f006f015f8a62094fe57a90 which is
+commit 52d7ecedac3f96fb562cb482c139015372728638 upstream.
+
+This caused problems in 3.8-stable, but all is fine in 3.9-rc.
+
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Imre Deak <imre.deak@intel.com>
+Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
+
+---
+ drivers/gpu/drm/i915/i915_dma.c | 23 +++++++++--------------
+ drivers/gpu/drm/i915/i915_drv.h | 1 -
+ drivers/gpu/drm/i915/i915_irq.c | 4 ----
+ 3 files changed, 9 insertions(+), 19 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_dma.c
++++ b/drivers/gpu/drm/i915/i915_dma.c
+@@ -1297,21 +1297,19 @@ static int i915_load_modeset_init(struct
+ if (ret)
+ goto cleanup_vga_switcheroo;
+
+- ret = drm_irq_install(dev);
+- if (ret)
+- goto cleanup_gem_stolen;
+-
+- /* Important: The output setup functions called by modeset_init need
+- * working irqs for e.g. gmbus and dp aux transfers. */
+ intel_modeset_init(dev);
+
+ ret = i915_gem_init(dev);
+ if (ret)
+- goto cleanup_irq;
++ goto cleanup_gem_stolen;
++
++ intel_modeset_gem_init(dev);
+
+ INIT_WORK(&dev_priv->console_resume_work, intel_console_resume);
+
+- intel_modeset_gem_init(dev);
++ ret = drm_irq_install(dev);
++ if (ret)
++ goto cleanup_gem;
+
+ /* Always safe in the mode setting case. */
+ /* FIXME: do pre/post-mode set stuff in core KMS code */
+@@ -1319,10 +1317,7 @@ static int i915_load_modeset_init(struct
+
+ ret = intel_fbdev_init(dev);
+ if (ret)
+- goto cleanup_gem;
+-
+- /* Only enable hotplug handling once the fbdev is fully set up. */
+- dev_priv->enable_hotplug_processing = true;
++ goto cleanup_irq;
+
+ drm_kms_helper_poll_init(dev);
+
+@@ -1331,13 +1326,13 @@ static int i915_load_modeset_init(struct
+
+ return 0;
+
++cleanup_irq:
++ drm_irq_uninstall(dev);
+ cleanup_gem:
+ mutex_lock(&dev->struct_mutex);
+ i915_gem_cleanup_ringbuffer(dev);
+ mutex_unlock(&dev->struct_mutex);
+ i915_gem_cleanup_aliasing_ppgtt(dev);
+-cleanup_irq:
+- drm_irq_uninstall(dev);
+ cleanup_gem_stolen:
+ i915_gem_cleanup_stolen(dev);
+ cleanup_vga_switcheroo:
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -672,7 +672,6 @@ typedef struct drm_i915_private {
+
+ u32 hotplug_supported_mask;
+ struct work_struct hotplug_work;
+- bool enable_hotplug_processing;
+
+ int num_pipe;
+ int num_pch_pll;
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -287,10 +287,6 @@ static void i915_hotplug_work_func(struc
+ struct drm_mode_config *mode_config = &dev->mode_config;
+ struct intel_encoder *encoder;
+
+- /* HPD irq before everything is fully set up. */
+- if (!dev_priv->enable_hotplug_processing)
+- return;
+-
+ mutex_lock(&mode_config->mutex);
+ DRM_DEBUG_KMS("running encoder hotplug functions\n");
+