clocksource: Provide clocksource_arch_init()
Architectures have extra archdata in the clocksource, e.g. for VDSO support. There are no sanity checks or general initializations for this available. Add support for that. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Andy Lutomirski <luto@kernel.org> Acked-by: John Stultz <john.stultz@linaro.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Matt Rickard <matt@softrans.com.au> Cc: Stephen Boyd <sboyd@kernel.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/20180917130706.973042587@linutronix.de
This commit is contained in:
@@ -241,6 +241,11 @@ static inline void __clocksource_update_freq_khz(struct clocksource *cs, u32 khz
|
|||||||
__clocksource_update_freq_scale(cs, 1000, khz);
|
__clocksource_update_freq_scale(cs, 1000, khz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_CLOCKSOURCE_INIT
|
||||||
|
extern void clocksource_arch_init(struct clocksource *cs);
|
||||||
|
#else
|
||||||
|
static inline void clocksource_arch_init(struct clocksource *cs) { }
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int timekeeping_notify(struct clocksource *clock);
|
extern int timekeeping_notify(struct clocksource *clock);
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ config CLOCKSOURCE_WATCHDOG
|
|||||||
config ARCH_CLOCKSOURCE_DATA
|
config ARCH_CLOCKSOURCE_DATA
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
# Architecture has extra clocksource init called from registration
|
||||||
|
config ARCH_CLOCKSOURCE_INIT
|
||||||
|
bool
|
||||||
|
|
||||||
# Clocksources require validation of the clocksource against the last
|
# Clocksources require validation of the clocksource against the last
|
||||||
# cycle update - x86/TSC misfeature
|
# cycle update - x86/TSC misfeature
|
||||||
config CLOCKSOURCE_VALIDATE_LAST_CYCLE
|
config CLOCKSOURCE_VALIDATE_LAST_CYCLE
|
||||||
|
|||||||
@@ -937,6 +937,8 @@ int __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq)
|
|||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
clocksource_arch_init(cs);
|
||||||
|
|
||||||
/* Initialize mult/shift and max_idle_ns */
|
/* Initialize mult/shift and max_idle_ns */
|
||||||
__clocksource_update_freq_scale(cs, scale, freq);
|
__clocksource_update_freq_scale(cs, scale, freq);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user