All of lore.kernel.org
 help / color / mirror / Atom feed
From: Emil Velikov <emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Christoph Rudorff <chris-4cZEHNAa5IdBDgjK7y7TUQ@public.gmane.org>,
	nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: Ben Skeggs <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH] drm/nouveau/fb: fix suspend/resume fbcon
Date: Thu, 03 Oct 2013 23:50:55 +0100	[thread overview]
Message-ID: <524DF4CF.6040907@gmail.com> (raw)
In-Reply-To: <1380811312.8640.6.camel@localhost>

On 03/10/13 15:41, Christoph Rudorff wrote:
> On resume of a hibernated notebook, I get garbled virtual consoles.
> 
> fb_set_suspend(*dev, state == 0 means dev is running ...)
> 
> This patch fixes that issue for me:
> 
Ouch, nice catch Christoph :)

Seems like the following commit flipped the logic unintentionally, thus
causing the issue. Stange enough I have no problems with s2d although I
must admit it's not the most common thing I do.

commit cf41d53bf5b95d77673b185cc3b20ae3257f79e2
Author: Ben Skeggs <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Date:   Wed Nov 9 14:31:16 2011 +1000

    drm/nouveau: re-jig fbcon suspend/resume process a little

    Signed-off-by: Ben Skeggs <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

> 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
> 
> https://bugs.freedesktop.org/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=&content=PAGE_NOT_PRESENT
> 
> https://bugs.freedesktop.org/show_bug.cgi?id=58556
> https://bugs.freedesktop.org/show_bug.cgi?id=62835
> https://bugs.freedesktop.org/show_bug.cgi?id=68037
> https://bugs.freedesktop.org/show_bug.cgi?id=69029
> https://bugs.freedesktop.org/show_bug.cgi?id=69928
> ---
>  drivers/gpu/drm/nouveau/nouveau_drm.c   |    2 +-
>  drivers/gpu/drm/nouveau/nouveau_fbcon.c |    4 ++--
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
> index 383f4e6..6148758 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> @@ -544,7 +544,7 @@ nouveau_do_resume(struct drm_device *dev)
>  	nouveau_pm_resume(dev);
>  
>  	if (dev->mode_config.num_crtc) {
> -		NV_INFO(drm, "resuming display...\n");
> +		NV_INFO(drm, "resuming display and fbcon...\n");
>  		nouveau_display_resume(dev);
>  	}
>  	return 0;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> index b035317..46e37c0 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> @@ -514,10 +514,10 @@ 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);
> +		nouveau_fbcon_restore_accel(dev);
>  	fb_set_suspend(drm->fbcon->helper.fbdev, state);
>  	if (state == 1)
> -		nouveau_fbcon_restore_accel(dev);
> +		nouveau_fbcon_save_disable_accel(dev);
>  	console_unlock();
>  }
I'm not entirely sure this is correct. One needs to save and disable
accleration before suspending the fb. Please try the following

-	if (state == 0)
+	if (state == 1)
		nouveau_fbcon_save_disable_accel(dev);
	fb_set_suspend(drm->fbcon->helper.fbdev, state);
-	if (state == 1)
+	if (state == 0)
		nouveau_fbcon_restore_accel(dev);
	console_unlock();

Cheers,
Emil

  reply	other threads:[~2013-10-03 22:50 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-03 14:41 [PATCH] drm/nouveau/fb: fix suspend/resume fbcon Christoph Rudorff
2013-10-03 22:50 ` Emil Velikov [this message]
     [not found]   ` <524DF4CF.6040907-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-10-04  0:54     ` Christoph Rudorff
2013-11-16 23:22       ` Emil Velikov
     [not found]         ` <5287FE3D.7070708-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-11-17 18:30           ` Christoph Rudorff
     [not found]             ` <52890B39.30700-4cZEHNAa5IdBDgjK7y7TUQ@public.gmane.org>
2013-11-18 16:45               ` Emil Velikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=524DF4CF.6040907@gmail.com \
    --to=emil.l.velikov-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=chris-4cZEHNAa5IdBDgjK7y7TUQ@public.gmane.org \
    --cc=nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.