Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-03-29 12:46:40 +0200
committerTakashi Iwai <tiwai@suse.de>2012-03-29 12:46:40 +0200
commitb0f31e30b79a6247920231984c8617045668993f (patch)
tree9f8b2ad753ed687bcaeedf09c1d869de2e95764d
parentbf346a7d8a8d953882f2e62ff391b137ddaf5b7b (diff)
- patches.drivers/drm-i915-suspend-fbdev-device-around-suspend-hiberna:
drm/i915: suspend fbdev device around suspend/hibernate (bnc#732908).
-rw-r--r--kernel-source.changes7
-rw-r--r--patches.drivers/drm-i915-suspend-fbdev-device-around-suspend-hiberna88
-rw-r--r--series.conf1
3 files changed, 96 insertions, 0 deletions
diff --git a/kernel-source.changes b/kernel-source.changes
index 42012d3fdf..48be132e1b 100644
--- a/kernel-source.changes
+++ b/kernel-source.changes
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Thu Mar 29 12:46:34 CEST 2012 - tiwai@suse.de
+
+- patches.drivers/drm-i915-suspend-fbdev-device-around-suspend-hiberna:
+ drm/i915: suspend fbdev device around suspend/hibernate
+ (bnc#732908).
+
+-------------------------------------------------------------------
Thu Mar 29 11:56:30 CEST 2012 - dsterba@suse.cz
- patches.suse/btrfs-8059-handle-errors-when-excluding-super-extents.patch:
diff --git a/patches.drivers/drm-i915-suspend-fbdev-device-around-suspend-hiberna b/patches.drivers/drm-i915-suspend-fbdev-device-around-suspend-hiberna
new file mode 100644
index 0000000000..ab0bac4c0a
--- /dev/null
+++ b/patches.drivers/drm-i915-suspend-fbdev-device-around-suspend-hiberna
@@ -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: [PATCH] drm/i915: suspend fbdev device around suspend/hibernate
+Git-commit: 3fa016a0b5c5237e9c387fc3249592b2cb5391c6
+Patch-mainline: to be in 3.4-rc1
+References: bnc#732908
+
+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>
+Cc: stable@vger.kernel.org
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ 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
+@@ -415,6 +415,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;
+ }
+
+@@ -487,6 +491,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
+@@ -363,7 +363,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)
diff --git a/series.conf b/series.conf
index dc29f247b5..400411499f 100644
--- a/series.conf
+++ b/series.conf
@@ -1771,6 +1771,7 @@
patches.drivers/drm-i915-Check-VBIOS-value-for-determining-LVDS-dual
patches.drivers/drm-i915-Add-lvds_channel-module-option
patches.drivers/drm-i915-Sanitize-BIOS-debugging-bits
+ patches.drivers/drm-i915-suspend-fbdev-device-around-suspend-hiberna
patches.kabi/drm-i915-ILK-VT-d-workaround-kABI-fix
patches.drivers/drm-radeon-fix-panic-on-unload.patch