diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 81aa7c5a14d6..a0c5bcd97a01 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -1050,7 +1050,8 @@ static void timekeeping_adjust(s64 offset) * * Returns the unconsumed cycles. */ -static cycle_t logarithmic_accumulation(cycle_t offset, int shift) +static cycle_t logarithmic_accumulation(cycle_t offset, int shift, + unsigned int *clock_set) { u64 nsecps = (u64)NSEC_PER_SEC << timekeeper.shift; u64 raw_nsecs; @@ -1072,7 +1073,7 @@ static cycle_t logarithmic_accumulation(cycle_t offset, int shift) timekeeper.xtime.tv_sec += leap; timekeeper.wall_to_monotonic.tv_sec -= leap; if (leap) - clock_was_set_delayed(); + *clock_set = 1; } /* Accumulate raw time */ @@ -1104,6 +1105,7 @@ static void update_wall_time(void) struct clocksource *clock; cycle_t offset; int shift = 0, maxshift; + unsigned int clock_set = 0; unsigned long flags; write_seqlock_irqsave(&timekeeper.lock, flags); @@ -1139,7 +1141,7 @@ static void update_wall_time(void) maxshift = (64 - (ilog2(ntp_tick_length())+1)) - 1; shift = min(shift, maxshift); while (offset >= timekeeper.cycle_interval) { - offset = logarithmic_accumulation(offset, shift); + offset = logarithmic_accumulation(offset, shift, &clock_set); if(offset < timekeeper.cycle_interval<