• Thomas Gleixner's avatar
    x86/vdso: Introduce and use vgtod_ts · 49116f20
    Thomas Gleixner authored
    It's desired to support more clocks in the VDSO, e.g. CLOCK_TAI. This
    results either in indirect calls due to the larger switch case, which then
    requires retpolines or when the compiler is forced to avoid jump tables it
    results in even more conditionals.
    
    To avoid both variants which are bad for performance the high resolution
    functions and the coarse grained functions will be collapsed into one for
    each. That requires to store the clock specific base time in an array.
    
    Introcude struct vgtod_ts for storage and convert the data store, the
    update function and the individual clock functions over to use it.
    
    The new storage does not longer use gtod_long_t for seconds depending on 32
    or 64 bit compile because this needs to be the full 64bit value even for
    32bit when a Y2038 function is added. No point in keeping the distinction
    alive in the internal representation.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Acked-by: default avatarAndy Lutomirski <luto@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Matt Rickard <matt@softrans.com.au>
    Cc: Stephen Boyd <sboyd@kernel.org>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Florian Weimer <fweimer@redhat.com>
    Cc: "K. Y. Srinivasan" <kys@microsoft.com>
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Cc: devel@linuxdriverproject.org
    Cc: virtualization@lists.linux-foundation.org
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Juergen Gross <jgross@suse.com>
    Link: https://lkml.kernel.org/r/20180917130707.324679401@linutronix.de
    49116f20
vgtod.h 2.16 KB