lkml.org 
[lkml]   [2018]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 217/293] tracing/hrtimer: Fix tracing bugs by taking all clock bases and modes into account
    Date
    From: Anna-Maria Gleixner <anna-maria@linutronix.de>

    [ Upstream commit 91633eed73a3ac37aaece5c8c1f93a18bae616a9 ]

    So far only CLOCK_MONOTONIC and CLOCK_REALTIME were taken into account as
    well as HRTIMER_MODE_ABS/REL in the hrtimer_init tracepoint. The query for
    detecting the ABS or REL timer modes is not valid anymore, it got broken
    by the introduction of HRTIMER_MODE_PINNED.

    HRTIMER_MODE_PINNED is not evaluated in the hrtimer_init() call, but for the
    sake of completeness print all given modes.

    Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: keescook@chromium.org
    Link: http://lkml.kernel.org/r/20171221104205.7269-9-anna-maria@linutronix.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    include/trace/events/timer.h | 20 ++++++++++++++++----
    1 file changed, 16 insertions(+), 4 deletions(-)

    diff --git a/include/trace/events/timer.h b/include/trace/events/timer.h
    index 28c5da6fdfac..3411da79407d 100644
    --- a/include/trace/events/timer.h
    +++ b/include/trace/events/timer.h
    @@ -125,6 +125,20 @@ DEFINE_EVENT(timer_class, timer_cancel,
    TP_ARGS(timer)
    );

    +#define decode_clockid(type) \
    + __print_symbolic(type, \
    + { CLOCK_REALTIME, "CLOCK_REALTIME" }, \
    + { CLOCK_MONOTONIC, "CLOCK_MONOTONIC" }, \
    + { CLOCK_BOOTTIME, "CLOCK_BOOTTIME" }, \
    + { CLOCK_TAI, "CLOCK_TAI" })
    +
    +#define decode_hrtimer_mode(mode) \
    + __print_symbolic(mode, \
    + { HRTIMER_MODE_ABS, "ABS" }, \
    + { HRTIMER_MODE_REL, "REL" }, \
    + { HRTIMER_MODE_ABS_PINNED, "ABS|PINNED" }, \
    + { HRTIMER_MODE_REL_PINNED, "REL|PINNED" })
    +
    /**
    * hrtimer_init - called when the hrtimer is initialized
    * @hrtimer: pointer to struct hrtimer
    @@ -151,10 +165,8 @@ TRACE_EVENT(hrtimer_init,
    ),

    TP_printk("hrtimer=%p clockid=%s mode=%s", __entry->hrtimer,
    - __entry->clockid == CLOCK_REALTIME ?
    - "CLOCK_REALTIME" : "CLOCK_MONOTONIC",
    - __entry->mode == HRTIMER_MODE_ABS ?
    - "HRTIMER_MODE_ABS" : "HRTIMER_MODE_REL")
    + decode_clockid(__entry->clockid),
    + decode_hrtimer_mode(__entry->mode))
    );

    /**
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-04-09 03:57    [W:5.348 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site