Re: 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 19:42:18 +0200
Newsgroups gmane.linux.swsusp.devel,gmane.linux.swsusp.general
Message-ID <[email protected]>
Am Montag, 16. Juli 2012 schrieb Martin Steigerwald:
> Am Montag, 16. Juli 2012 schrieb Martin Steigerwald:
> > Hi!
> > 
> > I am first testing this with plain vanilla. If it works I will try
> > TuxOnIce tree again.
> 
> Fix works with plain vanilla. Now compiling TuxOnIce with this as well.

Confirmed to work with TuxOnIce 3.5-rc7 as well.


> Thanks,
> Martin
> 
> > 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