Commit 52da479a authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

Revert "tick/common: Make tick_periodic() check for missing ticks"



This reverts commit d441dceb due to
boot failures.

Reported-by: default avatarQian Cai <cai@lca.pw>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: Waiman Long <longman@redhat.com>
parent 2c8bd588
Loading
Loading
Loading
Loading
+3 −33
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
#include <linux/profile.h>
#include <linux/sched.h>
#include <linux/module.h>
#include <linux/sched/clock.h>
#include <trace/events/power.h>

#include <asm/irq_regs.h>
@@ -85,41 +84,12 @@ int tick_is_oneshot_available(void)
static void tick_periodic(int cpu)
{
	if (tick_do_timer_cpu == cpu) {
		/*
		 * Use running_clock() as reference to check for missing ticks.
		 */
		static ktime_t last_update;
		ktime_t now;
		int ticks = 1;

		now = ns_to_ktime(running_clock());
		write_seqlock(&jiffies_lock);

		if (last_update) {
			u64 delta = ktime_sub(now, last_update);

			/*
			 * Check for eventually missed ticks
			 *
			 * There is likely a persistent delta between
			 * last_update and tick_next_period. So they are
			 * updated separately.
			 */
			if (delta >= 2 * tick_period) {
				s64 period = ktime_to_ns(tick_period);

				ticks = ktime_divns(delta, period);
			}
			last_update = ktime_add(last_update,
						ticks * tick_period);
		} else {
			last_update = now;
		}

		/* Keep track of the next tick event */
		tick_next_period = ktime_add(tick_next_period,
					     ticks * tick_period);
		do_timer(ticks);
		tick_next_period = ktime_add(tick_next_period, tick_period);

		do_timer(1);
		write_sequnlock(&jiffies_lock);
		update_wall_time();
	}