Re: 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green.



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/



Relevant Pages

  • Re: 2.6.25-rc2 System no longer powers off after suspend-to-disk. Screen becomes green.
    ... is there anyway to prevent the device shutdown in the hibernate ... Given the way the PM core works, do we need to set a flag like this? ... * If we're doing a suspend to disk, we don't want to power off the device. ...
    (Linux-Kernel)
  • Re: system was powered off or it was crashed (Blue Screen)
    ... I there a way to find in next reboot that the system was powered off or it was crashed. ... shutdown' flag in your driver's registry key. ... Of course you have to clear the flag when you read it on reboot. ... On newer systems this should do a OS-managed system power down to either shutdown/suspend/hibernate. ...
    (microsoft.public.development.device.drivers)
  • Re: Turn Off computer not working
    ... MS has fixed shutdown and power down problems before. ... > is an APM tab, make sure the Enable Advanced Power Management ... MS came out with updates specifically for shutdown/power down ...
    (microsoft.public.windowsxp.general)
  • Re: Turn Off computer not working
    ... MS has fixed shutdown and power down problems before. ... updates. ... You could uncheck them all, reboot, test and then start putting them ...
    (microsoft.public.windowsxp.general)
  • Re: Disable shutdown confirmation
    ... I guess if you make a service that installs its own HandlerRoutine, ... You can also try and lower the shutdown range for your current app with SetProcessShutdownParameters API so it get time to process ... Sometimes pushing the power button causes the program to get killed immediately ... > not fail as this would be logged at the console so I'm not sure why the notification doesn't ...
    (microsoft.public.windowsxp.embedded)

Loading