• Tony Luck's avatar
    ia64: Update fsyscall gettime to use modern vsyscall_update · d4d1fc61
    Tony Luck authored
    John Stultz provided the outline for this patch back in May 2014 here:
    
    	http://patches.linaro.org/patch/30501/
    
    but I let this sit on the shelf for too long and in the intervening
    years almost every field in "struct timekeeper" was changed. So this
    is almost completely different from his original. Though the key change
    in arch/ia64/kernel/fsys.S remains the same.
    
    The core logic change with the updated vsyscall method is that we
    preserve the base nanosecond value in shifted nanoseconds, which
    allows us to avoid truncating and rounding up to the next nanosecond
    every tick to avoid inconsistencies.
    
    Thus the logic moved from
    nsec = ((cycle_delta * mult)>>shift) + base_nsec;
    to
    nsec = ((cycle_delta * mult) + base_snsec) >> shift;
    
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: linux-ia64@vger.kernel.org
    Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
    d4d1fc61
time.c 12.2 KB