lkml.org 
[lkml]   [2014]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC 1/7] hrtimer: Warn if hrtimer_start*() failed to enqueue hrtimer
    On Wed, Jul 09, 2014 at 12:25:33PM +0530, Viresh Kumar wrote:
    > 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));

    Hmm, after reading Thomas reply, I think it's possible that the hrtimer expires
    right after we unlock it and, if we are unlucky enough, before the hrtimer_active()
    check.

    In this case we might hit a false positive.

    > return ret;
    > }
    > EXPORT_SYMBOL_GPL(__hrtimer_start_range_ns);
    > --
    > 2.0.0.rc2
    >


    \
     
     \ /
      Last update: 2014-07-11 15:21    [W:4.107 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site