Revert "tick/common: Make tick_periodic() check for missing ticks"
authorThomas Gleixner <tglx@linutronix.de>
Thu, 19 Mar 2020 18:47:06 +0000 (19:47 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 19 Mar 2020 18:47:48 +0000 (19:47 +0100)
This reverts commit d441dceb5dce71150f28add80d36d91bbfccba99 due to
boot failures.

Reported-by: Qian Cai <cai@lca.pw>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Waiman Long <longman@redhat.com>
kernel/time/tick-common.c

index cce4ed1..7e5d352 100644 (file)
@@ -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();
        }