Fix for timekeeping based hang on resume with 3.5-rc7 (was: Fwd: Re: Linux 3.5-rc7)

Martin Steigerwald <[email protected]> Mon, 16 Jul 2012 18:44:53 +0200
Newsgroups gmane.linux.swsusp.general,gmane.linux.swsusp.devel
Message-ID <[email protected]>
Hi!

I am first testing this with plain vanilla. If it works I will try TuxOnIce 
tree again.

Thanks,
Martin

----------  Weitergeleitete Nachricht  ----------

Subject: Re: Linux 3.5-rc7
Date: Montag, 16. Juli 2012
From: Linus Torvalds <[email protected]>
To: Martin Steigerwald <[email protected]>

On Mon, Jul 16, 2012 at 9:28 AM, Martin Steigerwald <[email protected]> 
wrote:
>
> Regresses badly on resume from in-kernel hibernation. I.e. hangs with 
some
> red graphics artifacts on the tty. The same artifacts appear for a short
> time with rc6 + some commits as well, but there then X.org is available
> again.

There's a one-liner fix for this bouncing around.

Appended is a white-space damaged cut-and-paste version of the fix, so
you'll need to either find the original patch (search the kernel
mailing list for "Excessive delay or hang during resume from system
suspend due to a hrtimer commit"), or just edit in the one-liner by
hand.

This should fix it (there's apparently a question on whether the
"false" should be "true", but that's an independent detail, it's worth
verifying in this form regardless).

               Linus
---
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 269b1fe..3447cfa 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -717,6 +717,7 @@ static void timekeeping_resume(void)
        timekeeper.clock->cycle_last = timekeeper.clock-
>read(timekeeper.clock);
        timekeeper.ntp_error = 0;
        timekeeping_suspended = 0;
+       timekeeping_update(false);
        write_sequnlock_irqrestore(&timekeeper.lock, flags);

        touch_softlockup_watchdog();

-------------------------------------------------------

-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7