All of lore.kernel.org
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: tglx@linutronix.de
Cc: linaro-kernel@lists.linaro.org, linux-kernel@vger.kernel.org,
	fweisbec@gmail.com, Arvind.Chauhan@arm.com,
	linaro-networking@linaro.org,
	Viresh Kumar <viresh.kumar@linaro.org>
Subject: [PATCH 27/38] tick-sched: remove 'regs' parameter of tick_sched_handle()
Date: Mon, 14 Apr 2014 21:53:49 +0530	[thread overview]
Message-ID: <4e9e4b7fe0a9417777ab1b7543209da5999d7414.1397492345.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1397492345.git.viresh.kumar@linaro.org>
In-Reply-To: <cover.1397492345.git.viresh.kumar@linaro.org>

tick_sched_handle() is called from two places and both pass 'regs' to it almost
same way. This patch removes this parameter to tick_sched_handle() and updates
tick_sched_handle() to get that by itself.

The only point of difference in the way this routine was called from its callers
was, don't call it from process context. To make sure the nohz path doesn't
suffer from an additional branch instruction, add unlikely to the if()
statement.

Though I still don't understand when will we run tick_sched_timer() from process
context. I couldn't see a single instance of that happening on my test machine
for normal boot followed by some userspace operations.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 kernel/time/tick-sched.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index bff7f97..ee0768b 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -129,8 +129,17 @@ static void tick_sched_do_timer(ktime_t now)
 		tick_do_update_jiffies64(now);
 }
 
-static void tick_sched_handle(struct tick_sched *ts, struct pt_regs *regs)
+static void tick_sched_handle(struct tick_sched *ts)
 {
+	struct pt_regs *regs = get_irq_regs();
+
+	/*
+	 * Do not call, when we are not in irq context and have
+	 * no valid regs pointer
+	 */
+	if (unlikely(!regs))
+		return;
+
 #ifdef CONFIG_NO_HZ_COMMON
 	/*
 	 * When we are idle and the tick is stopped, we have to touch
@@ -942,13 +951,12 @@ static int tick_nohz_reprogram(struct tick_sched *ts, ktime_t now)
 static void tick_nohz_handler(struct clock_event_device *dev)
 {
 	struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched);
-	struct pt_regs *regs = get_irq_regs();
 	ktime_t now = ktime_get();
 
 	dev->next_event.tv64 = KTIME_MAX;
 
 	tick_sched_do_timer(now);
-	tick_sched_handle(ts, regs);
+	tick_sched_handle(ts);
 
 	while (tick_nohz_reprogram(ts, now)) {
 		now = ktime_get();
@@ -1065,17 +1073,10 @@ static enum hrtimer_restart tick_sched_timer(struct hrtimer *timer)
 {
 	struct tick_sched *ts =
 		container_of(timer, struct tick_sched, sched_timer);
-	struct pt_regs *regs = get_irq_regs();
 	ktime_t now = ktime_get();
 
 	tick_sched_do_timer(now);
-
-	/*
-	 * Do not call, when we are not in irq context and have
-	 * no valid regs pointer
-	 */
-	if (regs)
-		tick_sched_handle(ts, regs);
+	tick_sched_handle(ts);
 
 	hrtimer_forward(timer, now, tick_period);
 
-- 
1.7.12.rc2.18.g61b472e


  parent reply	other threads:[~2014-04-14 16:35 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-14 16:23 [PATCH 00/38] tick cleanups and bugfixes Viresh Kumar
2014-04-14 16:23 ` [PATCH 01/38] tick: align to Coding Guidelines Viresh Kumar
2014-04-14 16:23 ` [PATCH 02/38] tick: update doc comments for struct tick_sched Viresh Kumar
2014-04-14 16:23 ` [PATCH 03/38] tick: rearrange members of 'struct tick_sched' Viresh Kumar
2014-04-14 16:23 ` [PATCH 04/38] tick: move declaration of tick_cpu_device to tick.h Viresh Kumar
2014-04-14 16:23 ` [PATCH 05/38] tick: move definition of tick_get_device() " Viresh Kumar
2014-04-14 16:23 ` [PATCH 06/38] tick: create tick_get_cpu_device() to get tick_cpu_device on this cpu Viresh Kumar
2014-04-14 16:23 ` [PATCH 07/38] tick-oneshot: drop local_irq_save/restore from tick_switch_to_oneshot() Viresh Kumar
2014-04-14 16:23 ` [PATCH 08/38] tick-oneshot: move tick_is_oneshot_available() to tick-oneshot.c Viresh Kumar
2014-04-14 16:23 ` [PATCH 09/38] tick-oneshot: remove tick_resume_oneshot() Viresh Kumar
2014-04-14 16:23 ` [PATCH 10/38] tick-common: remove extra checks from tick_check_new_device() Viresh Kumar
2014-04-14 16:23 ` [PATCH 11/38] tick-common: fix wrong check in tick_check_replacement() Viresh Kumar
2014-04-14 16:23 ` [PATCH 12/38] tick-common: call tick_check_percpu() from tick_check_preferred() Viresh Kumar
2014-04-14 16:23 ` [PATCH 13/38] tick-common: don't check tick_oneshot_mode_active() " Viresh Kumar
2014-04-14 16:23 ` [PATCH 14/38] tick-common: do additional checks in tick_check_preferred() Viresh Kumar
2014-04-14 16:23 ` [PATCH 15/38] tick-common: remove tick_check_replacement() Viresh Kumar
2014-04-14 16:23 ` [PATCH 16/38] tick-common: don't pass cpumask to tick_setup_device() Viresh Kumar
2014-04-14 16:23 ` [PATCH 17/38] tick-common: call tick_install_replacement() from tick_check_new_device() Viresh Kumar
2014-04-14 16:23 ` [PATCH 18/38] tick-common: don't set mode to CLOCK_EVT_MODE_UNUSED in tick_shutdown() Viresh Kumar
2014-04-14 19:38   ` Stephen Boyd
2014-04-15  3:45     ` Viresh Kumar
2014-04-14 16:23 ` [PATCH 19/38] tick-common: remove local variable 'broadcast' from tick_resume() Viresh Kumar
2014-04-14 16:23 ` [PATCH 20/38] tick-sched: initialize 'cpu' while defining it in tick_nohz_full_setup() Viresh Kumar
2014-04-14 16:23 ` [PATCH 21/38] tick-sched: no need to rewrite '1' to tick_nohz_enabled Viresh Kumar
2014-04-14 16:23 ` [PATCH 22/38] tick-sched: no need to recheck cpu_online() in can_stop_idle_tick() Viresh Kumar
2014-04-14 19:52   ` Stephen Boyd
2014-04-15  3:55     ` Viresh Kumar
2014-04-14 16:23 ` [PATCH 23/38] tick-sched: invert parameter of tick_check_oneshot_change() Viresh Kumar
2014-04-14 16:23 ` [PATCH 24/38] tick-sched: don't check tick_nohz_full_cpu() in __tick_nohz_task_switch() Viresh Kumar
2014-04-14 23:08   ` Frederic Weisbecker
2014-04-14 16:23 ` [PATCH 25/38] tick-sched: don't call local_softirq_pending() thrice in can_stop_idle_tick() Viresh Kumar
2014-04-14 16:23 ` [PATCH 26/38] tick-sched: don't call update_wall_time() when delta is lesser than tick_period Viresh Kumar
2014-04-14 16:23 ` Viresh Kumar [this message]
2014-04-14 16:23 ` [PATCH 28/38] tick-sched: remove parameters to {__}tick_nohz_task_switch() routines Viresh Kumar
2014-04-14 23:14   ` Frederic Weisbecker
2014-04-14 16:23 ` [PATCH 29/38] tick-sched: remove wrapper around __tick_nohz_task_switch() Viresh Kumar
2014-04-14 23:22   ` Frederic Weisbecker
2014-04-15  4:45     ` Viresh Kumar
2014-04-15  9:13       ` Frederic Weisbecker
2014-04-15  9:53         ` Viresh Kumar
2014-04-15 12:44           ` Frederic Weisbecker
2014-04-16  5:43             ` Viresh Kumar
2014-04-14 16:23 ` [PATCH 30/38] tick-sched: move nohz_full_buf[] inside tick_nohz_init() Viresh Kumar
2014-04-14 23:28   ` Frederic Weisbecker
2014-04-15  4:01     ` Viresh Kumar
2014-04-14 16:23 ` [PATCH 31/38] tick-sched: initialize 'ts' during its definition __tick_nohz_idle_enter() Viresh Kumar
2014-04-14 16:23 ` [PATCH 32/38] tick-sched: add comment about 'idle_active' in tick_nohz_idle_exit() Viresh Kumar
2014-04-14 16:23 ` [PATCH 34/38] tick-sched: remove local variable 'now' from tick_setup_sched_timer() Viresh Kumar
2014-04-14 16:23 ` [PATCH 35/38] tick-broadcast: do checks before taking locks in tick_do_broadcast_on_off() Viresh Kumar
2014-04-14 16:23 ` [PATCH 36/38] tick-broadcast: get rid of extra comparison " Viresh Kumar
2014-04-14 16:23 ` [PATCH 37/38] tick-broadcast: merge tick_do_broadcast_on_off() into tick_broadcast_on_off() Viresh Kumar
2014-04-14 16:24 ` [PATCH 38/38] clockevents: set event_handler to clockevents_handle_noop() in clockevents_exchange_device() Viresh Kumar
2014-04-14 23:38 ` [PATCH 00/38] tick cleanups and bugfixes Thomas Gleixner
2014-04-15  4:28   ` Viresh Kumar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4e9e4b7fe0a9417777ab1b7543209da5999d7414.1397492345.git.viresh.kumar@linaro.org \
    --to=viresh.kumar@linaro.org \
    --cc=Arvind.Chauhan@arm.com \
    --cc=fweisbec@gmail.com \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linaro-networking@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.