Messages in this thread Patch in this message | | | From | Viresh Kumar <> | Subject | [RFC 1/7] hrtimer: Warn if hrtimer_start*() failed to enqueue hrtimer | Date | Wed, 9 Jul 2014 12:25:33 +0530 |
| |
hrtimer_start*() family never fails to enqueue a hrtimer to a clock-base. The only special case is when the hrtimer was in past. If it is getting enqueued to local CPUs's clock-base, we raise a softirq and exit, else we handle that on next interrupt on remote CPU.
At several places in kernel we check if hrtimer is enqueued properly with hrtimer_active(). This isn't required and can be dropped.
Before fixing that, lets make sure hrtimer is always enqueued properly by adding
WARN_ON_ONCE(!hrtimer_active(timer));
towards the end of __hrtimer_start_range_ns().
Suggested-by: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- kernel/hrtimer.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 3ab2899..cf40209 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c @@ -1037,6 +1037,8 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, unlock_hrtimer_base(timer, &flags); + /* Make sure timer is enqueued */ + WARN_ON_ONCE(!hrtimer_active(timer)); return ret; } EXPORT_SYMBOL_GPL(__hrtimer_start_range_ns); -- 2.0.0.rc2
| |