From: Jesse Barnes <jesse.barnes@intel.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Jeff Chua <jeff.chua.linux@gmail.com>,
Romano Giannetti <romano@dea.icai.upcomillas.es>,
suspend-devel List <suspend-devel@lists.sourceforge.net>,
Dave Airlie <airlied@linux.ie>, Greg KH <gregkh@suse.de>,
lkml <linux-kernel@vger.kernel.org>,
linux-acpi@vger.kernel.org
Subject: Re: [Suspend-devel] 2.6.25-rc2 System no longer powers off aftersuspend-to-disk. Screen becomes green.
Date: Thu, 21 Feb 2008 17:44:35 -0800 [thread overview]
Message-ID: <200802211744.35563.jesse.barnes@intel.com> (raw)
In-Reply-To: <200802211713.20713.jesse.barnes@intel.com>
On Thursday, February 21, 2008 5:13 pm Jesse Barnes wrote:
> On Thursday, February 21, 2008 4:54 pm Rafael J. Wysocki wrote:
> > On Friday, 22 of February 2008, Linus Torvalds wrote:
> > > On Fri, 22 Feb 2008, Rafael J. Wysocki wrote:
> > > > - if (state.event == PM_EVENT_SUSPEND) {
> > > > + if (state.event == PM_EVENT_SUSPEND && !in_hibernation_power_off())
> > > > {
> > >
> > > I don't understand why hibernation just doesn't use a
> > > PM_EVENT_HIBERNATE, and be done with it?
> > >
> > > Why should it be called PM_EVENT_SUSPEND when it isn't?
> > >
> > > Adding some external global variables is absolutely the wrong way to
> > > fix this.
> > >
> > > It's not even like there are very many drivers who actually care about
> > > "state.event" anyway: a 'git grep' returns just 35 users in the whole
> > > tree, so if this was done this ugly way just to avoid double-chcking
> > > the other cases that compare against PM_EVENT_SUSPEND, then it really
> > > wasn't worth it.
> >
> > Please relax, we're debugging the thing right now and the patch doesn't
> > even seem to help on the other affected box.
>
> Actually, looks like I forgot to reboot between tests (just rmmod'd &
> modprobed i915), your patch actually does work.
>
> However, making new PM event messages might be a good thing anyway,
> assuming Linus takes it for 2.6.25, since it should make the migration to
> ->hibernate callbacks easier.
Rafael, I'd actually prefer these changes to the i915 driver. One is to avoid
the "green screen" problem and the other is to actually save state at
hibernate time in case we don't do a POST coming out of S4 (probably not
common but hey).
Jesse
Make sure hibernation works by not shutting down the video device during
hibernation power off. This is important because later stages of the
hibernation cycle end up touching the video device, which may cause a hang if
it was disabled early on. Also make sure the restoration correctly restores
the AR registers by flipping the ARX register into index mode before doing
anything.
Depends on Rafael's patch which exports hibernation state to drivers.
Signed-off-by: Jesse Barnes <jesse.barnes@intel.com>
diff --git a/drivers/char/drm/i915_drv.c b/drivers/char/drm/i915_drv.c
index 35758a6..5e73869 100644
--- a/drivers/char/drm/i915_drv.c
+++ b/drivers/char/drm/i915_drv.c
@@ -27,6 +27,7 @@
*
*/
+#include <linux/suspend.h>
#include "drmP.h"
#include "drm.h"
#include "i915_drm.h"
@@ -222,6 +223,7 @@ static void i915_restore_vga(struct drm_device *dev)
dev_priv->saveGR[0x18]);
/* Attribute controller registers */
+ inb(st01);
for (i = 0; i < 20; i++)
i915_write_ar(st01, i, dev_priv->saveAR[i], 0);
inb(st01); /* switch back to index mode */
@@ -364,8 +366,8 @@ static int i915_suspend(struct drm_device *dev)
i915_save_vga(dev);
/* Shut down the device */
- pci_disable_device(dev->pdev);
- pci_set_power_state(dev->pdev, PCI_D3hot);
+ if (!in_hibernation_power_off())
+ pci_set_power_state(dev->pdev, PCI_D3hot);
return 0;
}
next prev parent reply other threads:[~2008-02-22 1:45 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-20 17:17 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green Jeff Chua
2008-02-20 17:19 ` Jeff Chua
2008-02-20 17:28 ` Linus Torvalds
2008-02-20 17:37 ` Jeff Chua
2008-02-20 17:52 ` Linus Torvalds
2008-02-20 18:02 ` Jeff Chua
2008-02-21 19:43 ` [Suspend-devel] 2.6.25-rc2 System no longer powers off aftersuspend-to-disk. " Romano Giannetti
2008-02-21 21:02 ` Jesse Barnes
2008-02-22 0:20 ` Jeff Chua
2008-02-22 0:23 ` Jesse Barnes
2008-02-22 0:42 ` Jeff Chua
2008-02-22 0:46 ` Jesse Barnes
2008-02-22 0:52 ` Jeff Chua
2008-02-22 1:02 ` Jesse Barnes
2008-02-22 1:27 ` Jeff Chua
2008-02-22 1:28 ` Linus Torvalds
2008-02-22 1:35 ` Jesse Barnes
2008-02-22 10:37 ` Matthew Garrett
2008-02-22 13:06 ` Ingo Molnar
2008-02-22 16:10 ` Rafael J. Wysocki
2008-02-22 16:50 ` Linus Torvalds
2008-02-22 18:01 ` Matthew Garrett
2008-02-23 11:17 ` Ingo Molnar
2008-02-22 0:31 ` Rafael J. Wysocki
2008-02-22 0:42 ` Jeff Chua
2008-02-22 1:01 ` Jeff Chua
2008-02-22 1:06 ` Rafael J. Wysocki
2008-02-22 0:46 ` Linus Torvalds
2008-02-22 0:54 ` Rafael J. Wysocki
2008-02-22 1:13 ` Jesse Barnes
2008-02-22 1:44 ` Jesse Barnes [this message]
2008-02-22 23:31 ` i915 hibernation patch (was: Re: [Suspend-devel] 2.6.25-rc2 System no longer powers off aftersuspend-to-disk. Screen becomes green.) Rafael J. Wysocki
2008-02-23 1:00 ` Linus Torvalds
2008-02-23 1:55 ` Rafael J. Wysocki
2008-02-23 2:07 ` Linus Torvalds
2008-02-23 4:36 ` Jeff Chua
2008-02-23 18:13 ` [PATCH] PM: Introduce PM_EVENT_HIBERNATE (was: Re: i915 hibernation patch (was: Re: 2.6.25-rc2 System no longer ...)) Rafael J. Wysocki
2008-02-23 18:43 ` Linus Torvalds
2008-02-24 8:29 ` Pavel Machek
2008-02-24 15:21 ` Jeff Chua
2008-02-24 4:16 ` Mirco Tischler
2008-02-24 11:11 ` Rafael J. Wysocki
2008-02-24 11:25 ` Rafael J. Wysocki
2008-02-23 11:17 ` i915 hibernation patch (was: Re: [Suspend-devel] 2.6.25-rc2 System no longer powers off aftersuspend-to-disk. Screen becomes green.) Pavel Machek
2008-02-20 17:54 ` 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green Jeff Chua
2008-02-20 18:37 ` Linus Torvalds
2008-02-18 6:31 ` [Suspend-devel] " Pavel Machek
2008-02-20 18:49 ` Jeff Chua
2008-02-20 19:25 ` Matthew Garrett
2008-02-20 18:57 ` Jesse Barnes
2008-02-20 17:50 ` Jesse Barnes
2008-02-20 18:29 ` Jeff Chua
2008-02-20 18:53 ` Jesse Barnes
2008-02-20 19:10 ` Jeff Chua
2008-02-20 19:18 ` Jesse Barnes
2008-02-20 20:09 ` Jesse Barnes
2008-02-20 20:14 ` Rafael J. Wysocki
2008-02-20 20:29 ` Linus Torvalds
2008-02-20 20:33 ` [Suspend-devel] " Pablo Sanchez
2008-02-20 20:41 ` Jesse Barnes
2008-02-20 21:13 ` Linus Torvalds
2008-02-20 21:44 ` Jesse Barnes
2008-02-20 22:22 ` Linus Torvalds
2008-02-21 8:30 ` david
2008-02-22 16:56 ` Mark Lord
2008-02-22 17:02 ` Rafael J. Wysocki
2008-02-22 17:32 ` Mark Lord
2008-02-22 17:44 ` Rafael J. Wysocki
2008-02-22 19:23 ` david
2008-02-22 23:16 ` Rafael J. Wysocki
2008-02-20 22:36 ` Rafael J. Wysocki
2008-02-20 23:13 ` Linus Torvalds
2008-02-20 23:35 ` Rafael J. Wysocki
2008-02-21 0:00 ` Linus Torvalds
2008-02-21 0:13 ` Rafael J. Wysocki
2008-02-21 0:25 ` Linus Torvalds
2008-02-21 0:59 ` Rafael J. Wysocki
2008-02-22 16:54 ` Mark Lord
2008-02-20 22:45 ` Nigel Cunningham
2008-02-21 0:13 ` Matthew Garrett
2008-02-21 0:40 ` Nigel Cunningham
2008-02-21 0:46 ` Greg KH
2008-02-21 1:17 ` Nigel Cunningham
2008-02-21 4:43 ` Greg KH
2008-02-21 6:05 ` Nigel Cunningham
2008-02-21 6:37 ` Greg KH
2008-02-21 1:10 ` Matthew Garrett
2008-02-21 1:25 ` Nigel Cunningham
2008-02-20 20:45 ` [Suspend-devel] " Rafael J. Wysocki
2008-02-20 21:26 ` Alexey Starikovskiy
2008-02-20 21:37 ` Jesse Barnes
2008-02-21 0:35 ` Jeff Chua
2008-02-21 0:39 ` Jesse Barnes
2008-02-21 1:19 ` Jeff Chua
2008-02-21 1:21 ` Jesse Barnes
2008-02-21 1:49 ` Jeff Chua
2008-02-21 2:00 ` Jeff Chua
2008-02-21 16:27 ` [Suspend-devel] " Rafael J. Wysocki
2008-02-21 18:34 ` Jesse Barnes
2008-02-21 20:30 ` Rafael J. Wysocki
2008-02-21 22:11 ` Rafael J. Wysocki
2008-02-21 23:45 ` Jesse Barnes
2008-02-22 0:28 ` Rafael J. Wysocki
2008-02-22 0:48 ` Jeff Chua
2008-02-20 22:32 ` Jesse Barnes
2008-02-20 23:03 ` Jesse Barnes
2008-02-20 23:34 ` Jesse Barnes
2008-02-20 23:49 ` Rafael J. Wysocki
2008-02-21 0:17 ` Jesse Barnes
2008-02-21 1:07 ` [Suspend-devel] " Rafael J. Wysocki
2008-02-20 18:47 ` Mark Lord
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=200802211744.35563.jesse.barnes@intel.com \
--to=jesse.barnes@intel.com \
--cc=airlied@linux.ie \
--cc=gregkh@suse.de \
--cc=jeff.chua.linux@gmail.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=romano@dea.icai.upcomillas.es \
--cc=suspend-devel@lists.sourceforge.net \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox