]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Mar 2012 22:44:18 +0000 (15:44 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Mar 2012 22:44:18 +0000 (15:44 -0700)
added patches:
drm-i915-suspend-fbdev-device-around-suspend-hibernate.patch

queue-3.0/drm-i915-suspend-fbdev-device-around-suspend-hibernate.patch [new file with mode: 0644]
queue-3.0/series

diff --git a/queue-3.0/drm-i915-suspend-fbdev-device-around-suspend-hibernate.patch b/queue-3.0/drm-i915-suspend-fbdev-device-around-suspend-hibernate.patch
new file mode 100644 (file)
index 0000000..0a7dc45
--- /dev/null
@@ -0,0 +1,88 @@
+From 3fa016a0b5c5237e9c387fc3249592b2cb5391c6 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied@redhat.com>
+Date: Wed, 28 Mar 2012 10:48:49 +0100
+Subject: drm/i915: suspend fbdev device around suspend/hibernate
+
+From: Dave Airlie <airlied@redhat.com>
+
+commit 3fa016a0b5c5237e9c387fc3249592b2cb5391c6 upstream.
+
+Looking at hibernate overwriting I though it looked like a cursor,
+so I tracked down this missing piece to stop the cursor blink
+timer. I've no idea if this is sufficient to fix the hibernate
+problems people are seeing, but please test it.
+
+Both radeon and nouveau have done this for a long time.
+
+I've run this personally all night hib/resume cycles with no fails.
+
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reported-by: Petr Tesarik <kernel@tesarici.cz>
+Reported-by: Stanislaw Gruszka <sgruszka@redhat.com>
+Reported-by: Lots of misc segfaults after hibernate across the world.
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=37142
+Tested-by: Dave Airlie <airlied@redhat.com>
+Tested-by: Bojan Smojver <bojan@rexursive.com>
+Tested-by: Andreas Hartmann <andihartmann@01019freenet.de>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/i915_drv.c  |    7 +++++++
+ drivers/gpu/drm/i915/intel_drv.h |    2 +-
+ drivers/gpu/drm/i915/intel_fb.c  |   10 ++++++++++
+ 3 files changed, 18 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -379,6 +379,10 @@ static int i915_drm_freeze(struct drm_de
+       /* Modeset on resume, not lid events */
+       dev_priv->modeset_on_lid = 0;
++      console_lock();
++      intel_fbdev_set_suspend(dev, 1);
++      console_unlock();
++
+       return 0;
+ }
+@@ -448,6 +452,9 @@ static int i915_drm_thaw(struct drm_devi
+       dev_priv->modeset_on_lid = 0;
++      console_lock();
++      intel_fbdev_set_suspend(dev, 0);
++      console_unlock();
+       return error;
+ }
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -330,7 +330,7 @@ extern int intel_framebuffer_init(struct
+                                 struct drm_i915_gem_object *obj);
+ extern int intel_fbdev_init(struct drm_device *dev);
+ extern void intel_fbdev_fini(struct drm_device *dev);
+-
++extern void intel_fbdev_set_suspend(struct drm_device *dev, int state);
+ extern void intel_prepare_page_flip(struct drm_device *dev, int plane);
+ extern void intel_finish_page_flip(struct drm_device *dev, int pipe);
+ extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane);
+--- a/drivers/gpu/drm/i915/intel_fb.c
++++ b/drivers/gpu/drm/i915/intel_fb.c
+@@ -257,6 +257,16 @@ void intel_fbdev_fini(struct drm_device
+       kfree(dev_priv->fbdev);
+       dev_priv->fbdev = NULL;
+ }
++
++void intel_fbdev_set_suspend(struct drm_device *dev, int state)
++{
++      drm_i915_private_t *dev_priv = dev->dev_private;
++      if (!dev_priv->fbdev)
++              return;
++
++      fb_set_suspend(dev_priv->fbdev->helper.fbdev, state);
++}
++
+ MODULE_LICENSE("GPL and additional rights");
+ void intel_fb_output_poll_changed(struct drm_device *dev)
index ca31018065a82395629de30ee667f05a46706b94..8a53a70b69d89bb6ce7dd0322791177ec1bd2640 100644 (file)
@@ -92,3 +92,4 @@ xfs-fix-oops-on-io-error-during-xlog_recover_process_iunlinks.patch
 slub-do-not-hold-slub_lock-when-calling-sysfs_slab_add.patch
 module-remove-module-size-limit.patch
 bluetooth-btusb-fix-binterval-for-high-super-speed-isochronous-endpoints.patch
+drm-i915-suspend-fbdev-device-around-suspend-hibernate.patch