Re: 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green.
- From: "Rafael J. Wysocki" <rjw@xxxxxxx>
- Date: Wed, 20 Feb 2008 21:14:42 +0100
On Wednesday, 20 of February 2008, Jesse Barnes wrote:
On Wednesday, February 20, 2008 11:18 am Jesse Barnes wrote:
On Wednesday, February 20, 2008 11:10 am Jeff Chua wrote:
On Feb 21, 2008 2:53 AM, Jesse Barnes <jesse.barnes@xxxxxxxxx> wrote:
So, next I'll try "shutdown" to see if it work. I was using
"platform".
Ok, that would be good to try.
"shutdown" does power down properly. But still green on resume.
Ok, so Linus' theory about something later in the resume path trying to
touch video is looking good.
Rafael, is there anyway to prevent the device shutdown in the hibernate
path?
Given the way the PM core works, do we need to set a flag like this? I really
hope there's a better way of doing this...
I think we should export the target sleep state somehow.
diff --git a/drivers/char/drm/i915_drv.c b/drivers/char/drm/i915_drv.c
index 4048f39..a2d6242 100644
--- a/drivers/char/drm/i915_drv.c
+++ b/drivers/char/drm/i915_drv.c
@@ -238,6 +238,13 @@ static void i915_restore_vga(struct drm_device *dev)
}
+/*
+ * If we're doing a suspend to disk, we don't want to power off the device.
+ * Unfortunately, the PM core doesn't tell us if we're headed for a regular
+ * S3 state or that it's about to shut down the machine, so we use this flag.
+ */
+static int i915_hibernate;
+
static int i915_suspend(struct drm_device *dev, pm_message_t state)
{
struct drm_i915_private *dev_priv = dev->dev_private;
@@ -252,6 +259,9 @@ static int i915_suspend(struct drm_device *dev,
pm_message_t state)
if (state.event == PM_EVENT_PRETHAW)
return 0;
+ if (state.event == PM_EVENT_FREEZE)
+ i915_hibernate = 1;
+
pci_save_state(dev->pdev);
pci_read_config_byte(dev->pdev, LBB, &dev_priv->saveLBB);
@@ -366,7 +376,7 @@ static int i915_suspend(struct drm_device *dev,
pm_message_t state)
i915_save_vga(dev);
- if (state.event == PM_EVENT_SUSPEND) {
+ if (!i915_hibernate) {
/* Shut down the device */
pci_disable_device(dev->pdev);
pci_set_power_state(dev->pdev, PCI_D3hot);
@@ -385,6 +395,8 @@ static int i915_resume(struct drm_device *dev)
if (pci_enable_device(dev->pdev))
return -1;
+ i915_hibernate = 0;
+
pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB);
/* Pipe & plane A info */
Then, the .resume() called after the image creation will clear the flag and I
don't think it's safe to allow it to survive i915_resume() ...
Thanks,
Rafael
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- References:
- Re: 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green.
- From: Jeff Chua
- Re: 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green.
- From: Jesse Barnes
- Re: 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green.
- From: Jesse Barnes
- Re: 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green.
- Prev by Date: Re: [linux-kernel] Re: [PATCH] x86: use explicit timing delay for pit accesses in kernel and pcspkr driver
- Next by Date: [PATCH 1/2] ide: fix enabling DMA on it821x in "smart" mode
- Previous by thread: Re: 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green.
- Next by thread: Re: 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green.
- Index(es):
Relevant Pages
|
Loading