/* Forward the timer expiry so it will expire in the future. Returns the number of overruns.  */
u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval)
/* Forward the timer expiry so it will expire in the future. Returns the number of overruns.  */
u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval)
{
	u64 orun = 1;
	ktime_t delta;
	delta = ktime_sub(now, hrtimer_get_expires(timer));
	if (delta.tv64 < 0)
		return 0;
	if (interval.tv64 < timer->base->resolution.tv64)
		interval.tv64 = timer->base->resolution.tv64;
	if (unlikely(delta.tv64 >= interval.tv64)) {
		s64 incr = ktime_to_ns(interval);
		orun = ktime_divns(delta, incr);
		hrtimer_add_expires_ns(timer, incr * orun);
		if (hrtimer_get_expires_tv64(timer) > now.tv64)
			return orun;
		orun++;
	}
	hrtimer_add_expires(timer, interval);
	return orun;
}