Commit 157d29e1 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

tick: Sched: Restructure code



Get rid of one indentation level. Preparatory patch for a major
rework. No functional change.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
Cc: Preeti U Murthy <preeti@linux.vnet.ibm.com>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Link: http://lkml.kernel.org/r/20150414203502.101563235@linutronix.de


Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 0ff53d09
Loading
Loading
Loading
Loading
+81 −90
Original line number Diff line number Diff line
@@ -611,28 +611,26 @@ static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts,
		}
	}

	/*
	 * Do not stop the tick, if we are only one off (or less)
	 * or if the cpu is required for RCU:
	 */
	if (!ts->tick_stopped && delta_jiffies <= 1)
	if ((long)delta_jiffies <= 1) {
		if (!ts->tick_stopped)
			goto out;

	/* Schedule the tick, if we are at least one jiffie off */
	if ((long)delta_jiffies >= 1) {
		if (delta_jiffies == 0) {
			/* Tick is stopped, but required now. Enforce it */
			tick_nohz_restart(ts, now);
			goto out;
		}
	}

	/*
		 * If this cpu is the one which updates jiffies, then
		 * give up the assignment and let it be taken by the
		 * cpu which runs the tick timer next, which might be
		 * this cpu as well. If we don't drop this here the
		 * jiffies might be stale and do_timer() never
		 * invoked. Keep track of the fact that it was the one
		 * which had the do_timer() duty last. If this cpu is
		 * the one which had the do_timer() duty last, we
		 * limit the sleep time to the timekeeping
		 * max_deferement value which we retrieved
		 * above. Otherwise we can sleep as long as we want.
	 * If this cpu is the one which updates jiffies, then give up
	 * the assignment and let it be taken by the cpu which runs
	 * the tick timer next, which might be this cpu as well. If we
	 * don't drop this here the jiffies might be stale and
	 * do_timer() never invoked. Keep track of the fact that it
	 * was the one which had the do_timer() duty last. If this cpu
	 * is the one which had the do_timer() duty last, we limit the
	 * sleep time to the timekeeping max_deferement value which we
	 * retrieved above. Otherwise we can sleep as long as we want.
	 */
	if (cpu == tick_do_timer_cpu) {
		tick_do_timer_cpu = TICK_DO_TIMER_NONE;
@@ -645,18 +643,16 @@ static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts,
	}

#ifdef CONFIG_NO_HZ_FULL
		if (!ts->inidle) {
			time_delta = min(time_delta,
					 scheduler_tick_max_deferment());
		}
	if (!ts->inidle)
		time_delta = min(time_delta, scheduler_tick_max_deferment());
#endif

	/*
	 * calculate the expiry time for the next timer wheel
		 * timer. delta_jiffies >= NEXT_TIMER_MAX_DELTA signals
		 * that there is no timer pending or at least extremely
		 * far into the future (12 days for HZ=1000). In this
		 * case we set the expiry to the end of time.
	 * timer. delta_jiffies >= NEXT_TIMER_MAX_DELTA signals that
	 * there is no timer pending or at least extremely far into
	 * the future (12 days for HZ=1000). In this case we set the
	 * expiry to the end of time.
	 */
	if (likely(delta_jiffies < NEXT_TIMER_MAX_DELTA)) {
		/*
@@ -712,11 +708,6 @@ static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts,
			      HRTIMER_MODE_ABS_PINNED);
	else
		tick_program_event(expires, 1);
	} else {
		/* Tick is stopped, but required now. Enforce it */
		tick_nohz_restart(ts, now);
	}

out:
	ts->next_jiffies = next_jiffies;
	ts->last_jiffies = last_jiffies;