• Kurt Kanzenbach's avatar
    timekeeping: Introduce fast accessor to clock tai · 3dc6ffae
    Kurt Kanzenbach authored
    Introduce fast/NMI safe accessor to clock tai for tracing. The Linux kernel
    tracing infrastructure has support for using different clocks to generate
    timestamps for trace events. Especially in TSN networks it's useful to have TAI
    as trace clock, because the application scheduling is done in accordance to the
    network time, which is based on TAI. With a tai trace_clock in place, it becomes
    very convenient to correlate network activity with Linux kernel application
    traces.
    
    Use the same implementation as ktime_get_boot_fast_ns() does by reading the
    monotonic time and adding the TAI offset. The same limitations as for the fast
    boot implementation apply. The TAI offset may change at run time e.g., by
    setting the time or using adjtimex() with an offset. However, these kind of
    offset changes are rare events. Nevertheless, the user has to be aware and deal
    with it in post processing.
    
    An alternative approach would be to use the same implementation as
    ktime_get_real_fast_ns() does. However, this requires to add an additional u64
    member to the tk_read_base struct. This struct together with a seqcount is
    designed to fit into a single cache line on 64 bit architectures. Adding a new
    member would violate this constraint.
    Signed-off-by: Kurt Kanzenbach's avatarKurt Kanzenbach <kurt@linutronix.de>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Link: https://lore.kernel.org/r/20220414091805.89667-2-kurt@linutronix.de
    3dc6ffae
timekeeping.rst 7.23 KB