Messages in this thread | | | Date | Tue, 24 Mar 2015 14:23:17 -0700 | Subject | Re: [PATCH 1/2] time: Fix a bug in timekeeping_suspend() with no persistent clock | From | John Stultz <> |
| |
On Wed, Mar 18, 2015 at 7:42 PM, Xunlei Pang <xlpang@126.com> wrote: > From: Xunlei Pang <pang.xunlei@linaro.org> > > When there's no persistent clock, normally timekeeping_suspend_time > should always be zero, but this can break in timekeeping_suspend(). > > At T1, there was a system suspend, so old_delta was assigned T1. > After some time, one time adjustment happened, and xtime got the > value of T1-dt(0s<dt<2s). Then, there comes another system suspend > soon after this adjustment, obviously we will get a small negative > delta_delta, resulting in a negative timekeeping_suspend_time. > > This is problematic, when doing timekeeping_resume() if there is > no nonstop clocksource for example, it will hit the else leg and > inject the improper sleeptime which is the wrong logic. > > So, we can solve this problem by only doing delta related code when > the persistent clock is existent. Actually the code only makes sense > for persistent clock cases. > > Signed-off-by: Xunlei Pang <pang.xunlei@linaro.org>
Thanks for resending this with the changes, Xunlei. I've queued these two patches for 4.1
thanks -john
| |