On Wed, Feb 16, 2011 at 2:04 PM, Andre [debian] <debian...@gmail.com> wrote: > Hi, > > I've got a clean install of debian 6.0 squeeze, and am trying to get > sleep/hibernate (suspend to ram/disk) to work. I'll document what I > have working first (to help anyone else searching for answers), and > hopefully someone can help me past where I'm currently stuck... > > I'm writing this up at work, so can't quite remember all the details. > ??? are bits I can't quite remember. > > I started with a new system: > - Gigabyte H55M-USB3 + i3-540 > - 20TB WD20EARS (Incidentally, the drive suffers from this problem > [http://wdc.custhelp.com/app/answers/detail/a_id/5357]. I did > disable the head parking using the wdidle3 tool provided by WD.) > - SATA DVD drive > - 2x2GB RAM > - generic USB keyboard, PS/2 mouse > and performed a netinstall of Debian Squeeze 6.0. > > Without doing anything else, I attempted to put the system to sleep: > # pm-sleep > The screen blanked off the X session to a terminal window where I see > [xxxxx] pm_op(): usb_dev_freeze+0x0/0x20 returns -2 > [xxxxx] PM: Device usb3 failed to quiesce: error -2 > [xxxxx] PM: ??? > It isn't always usb3, but some random usb port as far as I can tell. > > Some research led me to the xhci driver. It does not respond well to > suspend commands, and the easiest workaround is to add a script which > unloads it prior to suspend and reloads it afterward: > /etc/pm/sleep.d/05_xhci > > #!/bin/sh > # Fix USB3 suspend and hibernate problems > case $1 in > hibernate) > modprobe -r xhci > ;; > suspend) > modprobe -r xhci > ;; > thaw) > modprobe xhci > ;; > resume) > modprobe xhci > ;; > *) echo "USB3 fix script: wrong argument!" > ;; > esac > Change the script to mode 755. The errors go away and sleep works fine. > (Reference: http://disi.unitn.it/~ferro/index.php/linux) > > Next, I attempted to hibernate the system: > # pm-hibernate > It showed this error: > ata3: softreset failed (???) > but then the machine proceeded to (as far as I can tell) swap out memory > and shut itself down. Powering the machine back on resulted in a normal > boot (not a resume). > > It turns out I had not told the kernel about the resume partition. This > can be done through grub by editing /etc/defaults/grub: > GRUB_CMDLINE_LINUX="resume=UUID=<partition_id>" > where <partition_id> is the UUID of the swap partition from /etc/fstab. > Run update-grub: > # update-grub > In my case, I have a 4GB swap partition (as created by the installer), > and I don't remember offhand where I saw this, but I believe that there > is enough swap space for the memory. > > Now pm-hibernate still shows > ata3: softreset failed (???) > and the shutdown appears as it was before. But now powering up results > in swapping in of memory before I get: > [xxxxx] pm_op(): usb_dev_freeze+0x0/0x20 returns -2 > [xxxxx] PM: Device usb3 failed to quiesce: error -2 > [xxxxx] PM: Resume failed > The machine hangs for a few minutes before displaying a stack trace. > (Sorry, I don't have the details now; I can check when I get home.) > > /var/log/pm-suspend.log does not show anything obviously wrong (to me). > I can post that when I get home. > > I don't understand why devices need to quiesce on resume. Are drivers > loaded first, then need to make room for the drivers that were in the > suspended image? > > Does anyone have any idea why I am unable to resume from a hibernation > state? Or is there something wrong with the suspend to disk in the > first place? Is the ata3 error meaningful?
I was on the right track with the thinking that drivers are loaded at first, but then xhci can't unload when the resume happens. The solution was to blacklist xhci. Edit /etc/modprobe.d/xhci.conf: blacklist xhci Then update initrd.img: # update-initramfs -u That's it, now suspend to ram and suspend to disk work! Andre -- To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/aanlktimtzyod-2mgmumkwhu5ujgpjdfqem5b5jvoy...@mail.gmail.com