lkml.org 
[lkml]   [2017]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 09/36] tracing/hrtimer: Print hrtimer mode in hrtimer_start tracepoint
    Date
    The hrtimer_start tracepoint lacks the mode information. The mode is
    important because consecutive starts can switch from ABS to REL or from
    PINNED to non PINNED.

    Add the mode information.

    Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
    ---
    include/trace/events/timer.h | 13 ++++++++-----
    kernel/time/hrtimer.c | 16 +++++++++-------
    2 files changed, 17 insertions(+), 12 deletions(-)

    diff --git a/include/trace/events/timer.h b/include/trace/events/timer.h
    index c6f728037c53..744b4310b24b 100644
    --- a/include/trace/events/timer.h
    +++ b/include/trace/events/timer.h
    @@ -186,15 +186,16 @@ TRACE_EVENT(hrtimer_init,
    */
    TRACE_EVENT(hrtimer_start,

    - TP_PROTO(struct hrtimer *hrtimer),
    + TP_PROTO(struct hrtimer *hrtimer, enum hrtimer_mode mode),

    - TP_ARGS(hrtimer),
    + TP_ARGS(hrtimer, mode),

    TP_STRUCT__entry(
    __field( void *, hrtimer )
    __field( void *, function )
    __field( s64, expires )
    __field( s64, softexpires )
    + __field( enum hrtimer_mode, mode )
    ),

    TP_fast_assign(
    @@ -202,12 +203,14 @@ TRACE_EVENT(hrtimer_start,
    __entry->function = hrtimer->function;
    __entry->expires = hrtimer_get_expires(hrtimer);
    __entry->softexpires = hrtimer_get_softexpires(hrtimer);
    + __entry->mode = mode;
    ),

    - TP_printk("hrtimer=%p function=%pf expires=%llu softexpires=%llu",
    - __entry->hrtimer, __entry->function,
    + TP_printk("hrtimer=%p function=%pf expires=%llu softexpires=%llu "
    + "mode=%s", __entry->hrtimer, __entry->function,
    (unsigned long long) __entry->expires,
    - (unsigned long long) __entry->softexpires)
    + (unsigned long long) __entry->softexpires,
    + decode_hrtimer_mode(__entry->mode))
    );

    /**
    diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
    index 9945ea6b0e5c..0e000b58f0d3 100644
    --- a/kernel/time/hrtimer.c
    +++ b/kernel/time/hrtimer.c
    @@ -435,10 +435,11 @@ debug_init(struct hrtimer *timer, clockid_t clockid,
    trace_hrtimer_init(timer, clockid, mode);
    }

    -static inline void debug_activate(struct hrtimer *timer)
    +static inline void debug_activate(struct hrtimer *timer,
    + enum hrtimer_mode mode)
    {
    debug_hrtimer_activate(timer);
    - trace_hrtimer_start(timer);
    + trace_hrtimer_start(timer, mode);
    }

    static inline void debug_deactivate(struct hrtimer *timer)
    @@ -828,9 +829,10 @@ EXPORT_SYMBOL_GPL(hrtimer_forward);
    * Returns 1 when the new timer is the leftmost timer in the tree.
    */
    static int enqueue_hrtimer(struct hrtimer *timer,
    - struct hrtimer_clock_base *base)
    + struct hrtimer_clock_base *base,
    + enum hrtimer_mode mode)
    {
    - debug_activate(timer);
    + debug_activate(timer, mode);

    base->cpu_base->active_bases |= 1 << base->index;

    @@ -953,7 +955,7 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
    /* Switch the timer base, if necessary: */
    new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED);

    - leftmost = enqueue_hrtimer(timer, new_base);
    + leftmost = enqueue_hrtimer(timer, new_base, mode);
    if (!leftmost)
    goto unlock;

    @@ -1222,7 +1224,7 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base,
    */
    if (restart != HRTIMER_NORESTART &&
    !(timer->state & HRTIMER_STATE_ENQUEUED))
    - enqueue_hrtimer(timer, base);
    + enqueue_hrtimer(timer, base, HRTIMER_MODE_ABS);

    /*
    * Separate the ->running assignment from the ->state assignment.
    @@ -1621,7 +1623,7 @@ static void migrate_hrtimer_list(struct hrtimer_clock_base *old_base,
    * sort out already expired timers and reprogram the
    * event device.
    */
    - enqueue_hrtimer(timer, new_base);
    + enqueue_hrtimer(timer, new_base, HRTIMER_MODE_ABS);
    }
    }

    --
    2.11.0
    \
     
     \ /
      Last update: 2017-12-21 11:52    [W:4.401 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site