Re: 2.6.11-rc3-mm1: softlockup and suspend/resume [update]

From: Rafael J. Wysocki
Date: Wed Feb 09 2005 - 19:22:25 EST


On Wednesday, 9 of February 2005 17:35, Rafael J. Wysocki wrote:
> On Tuesday, 8 of February 2005 12:04, Ingo Molnar wrote:
> >
> > * Rafael J. Wysocki <rjw@xxxxxxx> wrote:
> >
> > > The warning is printed right after the image is restored (ie somewhere
> > > around the local_irq_enable() above, but it goes before the "PM: Image
> > > restored successfully." message that is printed as soon as the return
> > > is executed). Definitely, less than 1 s passes between the resoring
> > > of the image and the warining.
> > >
> > > BTW, I've also tried to put touch_softlockup_watchdog() before
> > > device_power_up(), but it didn't change much.
> >
> > this is a single-CPU box, right?
>
> Yes.
>
> OK, I think I've sorted it out. The solution is to use your patch and the
> following change against swsusp.c:

Well, I was to quick with this, sorry.

> --- linux-2.6.11-rc3-mm1-orig/kernel/power/swsusp.c 2005-02-08 18:16:34.000000000 +0100
> +++ new/kernel/power/swsusp.c 2005-02-09 17:31:16.000000000 +0100
> @@ -870,7 +870,9 @@
> /* Restore control flow magically appears here */
> restore_processor_state();
> restore_highmem();
> + touch_softlockup_watchdog();
> device_power_up();
> + touch_softlockup_watchdog();
> local_irq_enable();
> return error;
> }

The following patch (instead of the above) seems to work much better:

--- linux-2.6.11-rc3-mm1-orig/kernel/power/swsusp.c 2005-02-08 18:16:34.000000000 +0100
+++ new/kernel/power/swsusp.c 2005-02-10 00:45:45.000000000 +0100
@@ -870,6 +870,7 @@
/* Restore control flow magically appears here */
restore_processor_state();
restore_highmem();
+ touch_softlockup_watchdog();
device_power_up();
local_irq_enable();
return error;
--- linux-2.6.11-rc3-mm1-orig/arch/x86_64/kernel/time.c 2005-02-05 20:49:26.000000000 +0100
+++ new/arch/x86_64/kernel/time.c 2005-02-10 00:46:48.000000000 +0100
@@ -988,6 +988,7 @@
write_sequnlock_irqrestore(&xtime_lock,flags);
jiffies += sleep_length;
wall_jiffies += sleep_length;
+ touch_softlockup_watchdog();
return 0;
}

--- linux-2.6.11-rc3-mm1-orig/arch/i386/kernel/time.c 2005-02-05 20:49:26.000000000 +0100
+++ new/arch/i386/kernel/time.c 2005-02-10 00:47:03.000000000 +0100
@@ -378,6 +378,7 @@
write_sequnlock_irqrestore(&xtime_lock, flags);
jiffies += sleep_length;
wall_jiffies += sleep_length;
+ touch_softlockup_watchdog();
return 0;
}


I tested it only on x86-64, so the change for i386 is a guess, albeit
educated. ;-)

Greets,
Rafael


--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
-
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/