• Anton Blanchard's avatar
    [PATCH] ppc64: xtime <-> gettimeofday can get out of sync · 98489228
    Anton Blanchard authored
    I've noticed a problem where xtime and gettimeofday could get out of sync if
    interrupts are disabled for too long (eg long kernel code paths or dropping
    into the debugger for a while).
    
    We correctly replay lost jiffies but in that loop time_sync_xtime syncs the
    intermediate values of xtime up with the current value of gettimeofday.  So
    xtime jumps by a bunch and from then on it is ahead of gettimeofday and we
    never resync the two.  I guess this is to avoid xtime going backwards.
    
    The patch below creates a __do_gettimeofday where you can pass in a tb value
    and sync the intermediate values of xtime properly.
    
    Note that the time_sync_xtime check only stops the seconds from going
    backwards, the ns component still could couldnt it?  Considering this is hard
    to get right, should we switch to the time interpolator stuff?  The only
    problem there is it might be trouble for systemcfg (which exports stuff to do
    userspace gettimeofday).
    Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    98489228
time.c 23.6 KB