Christoph Rudorff
2013-Nov-19  16:59 UTC
[Nouveau] [PATCH] drm/nouveau/fbcon: fix suspend/resume fbcon
Current code disables fbcon acceleration before fbcon is suspended,
leading to corrupted console after resume from s2disk. In a similar
fashion we must make sure that fbcon acceleration is enabled before we
revive the console.
With this patch s2disk works correctly on my MacBookPro6,2 with GT216
[GeForce GT 330M]
hibernate:
kernel: nouveau  [     DRM] suspending fbcon...
kernel: nouveau  [     DRM] suspending display...
kernel: nouveau  [     DRM] unpinning framebuffer(s)...
kernel: nouveau  [     DRM] evicting buffers...
kernel: nouveau  [     DRM] waiting for kernel channels to go idle...
kernel: nouveau  [     DRM] suspending client object trees...
kernel: nouveau  [     DRM] suspending kernel object tree...
resume:
kernel: nouveau  [     DRM] re-enabling device...
kernel: nouveau  [     DRM] resuming kernel object tree...
kernel: nouveau  [   VBIOS][0000:01:00.0] running init tables
kernel: nouveau  [     DRM] resuming client object trees...
kernel: nouveau  [     DRM] resuming display...
kernel: nouveau E[     PFB][0000:01:00.0] trapped write at 0x00007fe000 on
channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT
kernel: nouveau E[     PFB][0000:01:00.0] trapped write at 0x00007fe000 on
channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT
kernel: nouveau E[     PFB][0000:01:00.0] trapped write at 0x00007fe240 on
channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT
kernel: nouveau E[     PFB][0000:01:00.0] trapped write at 0x00007fe400 on
channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT
http://lists.freedesktop.org/archives/nouveau/2013-October/014656.html
---
 drivers/gpu/drm/nouveau/nouveau_fbcon.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
index b035317..3fa6628 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
@@ -513,11 +513,11 @@ void nouveau_fbcon_set_suspend(struct drm_device *dev, int
state)
 {
 	struct nouveau_drm *drm = nouveau_drm(dev);
 	console_lock();
-	if (state == 0)
-		nouveau_fbcon_save_disable_accel(dev);
-	fb_set_suspend(drm->fbcon->helper.fbdev, state);
-	if (state == 1)
+	if (state == FBINFO_STATE_RUNNING)
 		nouveau_fbcon_restore_accel(dev);
+	fb_set_suspend(drm->fbcon->helper.fbdev, state);
+	if (state == FBINFO_STATE_SUSPENDED)
+		nouveau_fbcon_save_disable_accel(dev);
 	console_unlock();
 }
 
-- 
1.7.10.4
Greg KH
2013-Nov-19  18:48 UTC
[Nouveau] [PATCH] drm/nouveau/fbcon: fix suspend/resume fbcon
On Tue, Nov 19, 2013 at 05:59:13PM +0100, Christoph Rudorff wrote:> Current code disables fbcon acceleration before fbcon is suspended, > leading to corrupted console after resume from s2disk. In a similar > fashion we must make sure that fbcon acceleration is enabled before we > revive the console. > > With this patch s2disk works correctly on my MacBookPro6,2 with GT216 > [GeForce GT 330M] > > hibernate: > kernel: nouveau [ DRM] suspending fbcon... > kernel: nouveau [ DRM] suspending display... > kernel: nouveau [ DRM] unpinning framebuffer(s)... > kernel: nouveau [ DRM] evicting buffers... > kernel: nouveau [ DRM] waiting for kernel channels to go idle... > kernel: nouveau [ DRM] suspending client object trees... > kernel: nouveau [ DRM] suspending kernel object tree... > resume: > kernel: nouveau [ DRM] re-enabling device... > kernel: nouveau [ DRM] resuming kernel object tree... > kernel: nouveau [ VBIOS][0000:01:00.0] running init tables > kernel: nouveau [ DRM] resuming client object trees... > kernel: nouveau [ DRM] resuming display... > kernel: nouveau E[ PFB][0000:01:00.0] trapped write at 0x00007fe000 on channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT > kernel: nouveau E[ PFB][0000:01:00.0] trapped write at 0x00007fe000 on channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT > kernel: nouveau E[ PFB][0000:01:00.0] trapped write at 0x00007fe240 on channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT > kernel: nouveau E[ PFB][0000:01:00.0] trapped write at 0x00007fe400 on channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT > > http://lists.freedesktop.org/archives/nouveau/2013-October/014656.html > --- > drivers/gpu/drm/nouveau/nouveau_fbcon.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-)<formletter> This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read Documentation/stable_kernel_rules.txt for how to do this properly. </formletter>
Christoph Rudorff
2013-Nov-19  19:23 UTC
[Nouveau] [PATCH] drm/nouveau/fbcon: fix suspend/resume fbcon
On 19.11.2013 19:48, Greg KH wrote:> On Tue, Nov 19, 2013 at 05:59:13PM +0100, Christoph Rudorff wrote: >> Current code disables fbcon acceleration before fbcon is suspended, >> leading to corrupted console after resume from s2disk. In a similar >> fashion we must make sure that fbcon acceleration is enabled before we >> revive the console. >> >> With this patch s2disk works correctly on my MacBookPro6,2 with GT216 >> [GeForce GT 330M] >> >> hibernate: >> kernel: nouveau [ DRM] suspending fbcon... >> kernel: nouveau [ DRM] suspending display... >> kernel: nouveau [ DRM] unpinning framebuffer(s)... >> kernel: nouveau [ DRM] evicting buffers... >> kernel: nouveau [ DRM] waiting for kernel channels to go idle... >> kernel: nouveau [ DRM] suspending client object trees... >> kernel: nouveau [ DRM] suspending kernel object tree... >> resume: >> kernel: nouveau [ DRM] re-enabling device... >> kernel: nouveau [ DRM] resuming kernel object tree... >> kernel: nouveau [ VBIOS][0000:01:00.0] running init tables >> kernel: nouveau [ DRM] resuming client object trees... >> kernel: nouveau [ DRM] resuming display... >> kernel: nouveau E[ PFB][0000:01:00.0] trapped write at 0x00007fe000 on channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT >> kernel: nouveau E[ PFB][0000:01:00.0] trapped write at 0x00007fe000 on channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT >> kernel: nouveau E[ PFB][0000:01:00.0] trapped write at 0x00007fe240 on channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT >> kernel: nouveau E[ PFB][0000:01:00.0] trapped write at 0x00007fe400 on channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT >> >> http://lists.freedesktop.org/archives/nouveau/2013-October/014656.html >> --- >> drivers/gpu/drm/nouveau/nouveau_fbcon.c | 8 ++++---- >> 1 file changed, 4 insertions(+), 4 deletions(-) > > <formletter> > > This is not the correct way to submit patches for inclusion in the > stable kernel tree. Please read Documentation/stable_kernel_rules.txt > for how to do this properly. > > </formletter>Sorry, I've been asked to cc it. chris