Message ID | 503288ED.10306@linaro.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
John Stultz <john.stultz@linaro.org> writes: > I'm not very familiar w/ the iBook hardware, but does it use a > clocksource, or does it use arch_gettimeoffset()? clocksource: timebase mult[3640e38e] shift[24] registered > I suspect that the casting has avoided clipping some strange values from > the persistent clock. That's my guess as well. > Could you try with the following patch against Linus' HEAD? I suspect it > will let the box resume (although it will seem as though no time was > spent in resume) and then let me know what the JDB lines print out? JDB: suspend_time: 1345491706:0 resume_time: 1345491737:0 JDB: Trying to add: 31:0 (Looks reasonable.) Andreas.
On 08/20/2012 12:45 PM, Andreas Schwab wrote: > John Stultz <john.stultz@linaro.org> writes: > >> I'm not very familiar w/ the iBook hardware, but does it use a >> clocksource, or does it use arch_gettimeoffset()? > clocksource: timebase mult[3640e38e] shift[24] registered > >> I suspect that the casting has avoided clipping some strange values from >> the persistent clock. > That's my guess as well. > >> Could you try with the following patch against Linus' HEAD? I suspect it >> will let the box resume (although it will seem as though no time was >> spent in resume) and then let me know what the JDB lines print out? > JDB: suspend_time: 1345491706:0 resume_time: 1345491737:0 > JDB: Trying to add: 31:0 > > (Looks reasonable.) Huh. Yea, that looks fine. And without the __timekeeping_inject_sleeptime() call, the system resumed ok? Thanks for the testing! I'll keep looking here. -john
John Stultz <john.stultz@linaro.org> writes: > Huh. Yea, that looks fine. And without the > __timekeeping_inject_sleeptime() call, the system resumed ok? Yes, it does. Andreas.
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index e16af19..03f5a82 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -753,10 +753,14 @@ static void timekeeping_resume(void) clocksource_resume(); write_seqlock_irqsave(&tk->lock, flags); + printk("JDB: suspend_time: %ld:%ld resume_time: %ld:%ld\n", + timekeeping_suspend_time.tv_sec, timekeeping_suspend_time.tv_nsec, + ts.tv_sec, ts.tv_nsec); if (timespec_compare(&ts, &timekeeping_suspend_time) > 0) { ts = timespec_sub(ts, timekeeping_suspend_time); - __timekeeping_inject_sleeptime(tk, &ts); + printk("JDB: Trying to add: %ld:%ld\n", ts.tv_sec, ts.tv_nsec); + //__timekeeping_inject_sleeptime(tk, &ts); } /* re-base the last cycle value */ tk->clock->cycle_last = tk->clock->read(tk->clock);