> > > Mine is a PowerBook5,5 model. I'll narrow down the list of modules
> > > interfering with suspend (I'm not happy to lose the USB mouse, for
> > > instance). There's another annoying feature of suspend - the system clock
> > Well, the mouse does work again after resume, does it?
>
> Sure. And unloading uhci_hcd is absolutely required for resume :-(

ohci_hcd is what I meant, of course. There's suspend support but that
seems broken.

> therm_adt746x won't stop on suspend, that's something that might be fixed,
> though.

The following patch fixes suspend with the thermostat driver loaded for
me. Please test on other hardware. A similar fix (adding the if
(current->flags & PF_FREEZE) refrigerator(PF_FREEZE);) should be
sufficient for the therm_windtunnel module. May require conditionalizing
on CONFIG_PM_DISK as far as the refrigerator call is concerned...


--- drivers/macintosh/therm_adt746x.c.org       2004-09-02 15:18:04.000000000 
+0200
+++ drivers/macintosh/therm_adt746x.c   2004-09-02 16:22:46.893592704 +0200
@@ -228,6 +228,18 @@
        th->last_speed[fan] = speed;
 }

+void msleep_interruptible(unsigned int msecs)
+{
+       unsigned long timeout = msecs_to_jiffies(msecs);
+
+       while (timeout) {
+               set_current_state(TASK_INTERRUPTIBLE);
+               if (current->flags & PF_FREEZE)
+                       refrigerator(PF_FREEZE);
+               timeout = schedule_timeout(timeout);
+       }
+}
+
 static int monitor_task(void *arg)
 {
        struct thermostat* th = arg;
@@ -246,7 +258,8 @@

        while(monitor_running)
        {
-               msleep(2000);
+               /* msleep waits uninterruptibly! */
+               msleep_interruptible(2000);

                /* Check status */
                /* local   : chip */

Hope I'm not missing something obvious,

        Michael

Reply via email to