|
@@ -533,12 +533,13 @@ static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts,
|
|
|
struct clock_event_device *dev = __get_cpu_var(tick_cpu_device).evtdev;
|
|
|
u64 time_delta;
|
|
|
|
|
|
+ time_delta = timekeeping_max_deferment();
|
|
|
+
|
|
|
/* Read jiffies and the time when jiffies were updated last */
|
|
|
do {
|
|
|
seq = read_seqbegin(&jiffies_lock);
|
|
|
last_update = last_jiffies_update;
|
|
|
last_jiffies = jiffies;
|
|
|
- time_delta = timekeeping_max_deferment();
|
|
|
} while (read_seqretry(&jiffies_lock, seq));
|
|
|
|
|
|
if (rcu_needs_cpu(cpu, &rcu_delta_jiffies) ||
|
|
@@ -678,18 +679,18 @@ out:
|
|
|
static void tick_nohz_full_stop_tick(struct tick_sched *ts)
|
|
|
{
|
|
|
#ifdef CONFIG_NO_HZ_FULL
|
|
|
- int cpu = smp_processor_id();
|
|
|
+ int cpu = smp_processor_id();
|
|
|
|
|
|
- if (!tick_nohz_full_cpu(cpu) || is_idle_task(current))
|
|
|
- return;
|
|
|
+ if (!tick_nohz_full_cpu(cpu) || is_idle_task(current))
|
|
|
+ return;
|
|
|
|
|
|
- if (!ts->tick_stopped && ts->nohz_mode == NOHZ_MODE_INACTIVE)
|
|
|
- return;
|
|
|
+ if (!ts->tick_stopped && ts->nohz_mode == NOHZ_MODE_INACTIVE)
|
|
|
+ return;
|
|
|
|
|
|
- if (!can_stop_full_tick())
|
|
|
- return;
|
|
|
+ if (!can_stop_full_tick())
|
|
|
+ return;
|
|
|
|
|
|
- tick_nohz_stop_sched_tick(ts, ktime_get(), cpu);
|
|
|
+ tick_nohz_stop_sched_tick(ts, ktime_get(), cpu);
|
|
|
#endif
|
|
|
}
|
|
|
|
|
@@ -1023,7 +1024,7 @@ static void tick_nohz_kick_tick(struct tick_sched *ts, ktime_t now)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-static inline void tick_check_nohz_this_cpu(void)
|
|
|
+static inline void tick_nohz_irq_enter(void)
|
|
|
{
|
|
|
struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched);
|
|
|
ktime_t now;
|
|
@@ -1042,17 +1043,17 @@ static inline void tick_check_nohz_this_cpu(void)
|
|
|
#else
|
|
|
|
|
|
static inline void tick_nohz_switch_to_nohz(void) { }
|
|
|
-static inline void tick_check_nohz_this_cpu(void) { }
|
|
|
+static inline void tick_nohz_irq_enter(void) { }
|
|
|
|
|
|
#endif /* CONFIG_NO_HZ_COMMON */
|
|
|
|
|
|
/*
|
|
|
* Called from irq_enter to notify about the possible interruption of idle()
|
|
|
*/
|
|
|
-void tick_check_idle(void)
|
|
|
+void tick_irq_enter(void)
|
|
|
{
|
|
|
tick_check_oneshot_broadcast_this_cpu();
|
|
|
- tick_check_nohz_this_cpu();
|
|
|
+ tick_nohz_irq_enter();
|
|
|
}
|
|
|
|
|
|
/*
|