Comment 25 for bug 417599

Revision history for this message
James Keating (jkeating) wrote :

I had one solution before, to edit /usr/lib/hal/scripts/linux/hal-system-power-suspend-linux and change the quirks line to:
QUIRKS="--quirk-s3-bios --quirk-s3-mode --quirk-dpms-on --quirk-vbe-post --quirk-vbestate-restore"
(This needed to be redone after each update, since the file got overwritten.)

That stopped working in Karmic (9.10). Now I have found another solution, using one other person's suggestion and one idea of my own inspired by Manuel Siggen's suggestion.

Now the first time I suspend, resume works for a moment and then goes into hibernation. After coming out of hibernation, resuming works from the second time on. I think this is peculiar to my machine, but don't be surprised if it happens.

1. In /boot/grub/menu.lst, add i915.modeset=0 nomodeset to the defoptions line. This disables the new kernel mode-setting (KMS):
## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash i915.modeset=0 nomodeset

1b) save and run the command update-grub (as root).

2. In /usr/lib/pm-utils/sleep.d/, I deleted the lines in the Intel section removing the quirks I need: --quirk-dpms-on --quirk-vbe-post --quirk-vbestate-restore. (Two others, --quirk-s3-bios and --quirk-s3-mode, weren't in the list.)

The Intel section of the file now reads:

have_smart_intel()
{
    # currently, intel kernel modesetting is not quite smart enough
    # we still need acpi s3 kernel modesetting hooks, so don't remove those
    # options if they were passed.
    [ -d /sys/module/i915 ] || return 1
    local kernel_rev="$(uname -r |awk -F '[_-]' '{print $1}')"
    [ "$kernel_rev" \> "2.6.26" -o "$kernel_rev" = "2.6.26" ] || return 1
    remove_parameters --quirk-dpms-suspend \
 --quirk-vga-mode3 \
 --quirk-vbemode-restore \
 --quirk-reset-brightness \
 --quirk-radeon-off \
 --quirk-no-fb \
 --quirk-pci-save
}

3) Reboot.

To find the particular quirks you may need, look at the man page for pm-suspend, and testing suspend from the command line (pm-suspend plus a series of quirk options). Try combining everything that looks likely, then removing some. Be patient.