mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] hrtimer:do not start hrtimer on other cpu if it is the leftmost timer.
@ 2014-04-30  8:43 Leon Ma
  2014-04-30 10:35 ` Viresh Kumar
  2014-04-30 10:37 ` [tip:timers/urgent] hrtimer: Prevent remote enqueue of leftmost timers tip-bot for Leon Ma
  0 siblings, 2 replies; 4+ messages in thread
From: Leon Ma @ 2014-04-30  8:43 UTC (permalink / raw)
  To: tglx, linux-kernel; +Cc: Leon Ma

On SMP system, if cpuX is idle and it starts an hrtimer, the timer
will be started on cpuY. But it can not reprogram the event source
on cpuY. The timer is inserted into rb tree of cpuY, if it is the
leftmost timer on cpuY and it is a very short timer, following hrtimers
started on cpuY will also not set the event source. As a result,
the timers on cpuY will expire later than expected.

When this case is detected, we should start the timer on cpuX and
program event source properly.

Signed-off-by: Leon Ma <xindong.ma@intel.com>
---
 kernel/hrtimer.c |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index d55092c..68becbc 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -234,6 +234,11 @@ again:
 			goto again;
 		}
 		timer->base = new_base;
+	} else {
+		if (cpu != this_cpu && hrtimer_check_target(timer, new_base)) {
+			cpu = this_cpu;
+			goto again;
+		}
 	}
 	return new_base;
 }
-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-04-30 12:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-30  8:43 [PATCH] hrtimer:do not start hrtimer on other cpu if it is the leftmost timer Leon Ma
2014-04-30 10:35 ` Viresh Kumar
2014-04-30 12:29   ` Ma, Xindong
2014-04-30 10:37 ` [tip:timers/urgent] hrtimer: Prevent remote enqueue of leftmost timers tip-bot for Leon Ma

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®