timekeeping: remove arch_gettimeoffset
authorArnd Bergmann <arnd@arndb.de>
Thu, 24 Sep 2020 10:30:50 +0000 (12:30 +0200)
committerArnd Bergmann <arnd@arndb.de>
Fri, 30 Oct 2020 20:57:04 +0000 (21:57 +0100)
With Arm EBSA110 gone, nothing uses it any more, so the corresponding
code and the Kconfig option can be removed.

Acked-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Documentation/features/time/modern-timekeeping/arch-support.txt [deleted file]
drivers/Makefile
drivers/clocksource/Kconfig
include/linux/time.h
kernel/time/Kconfig
kernel/time/clocksource.c
kernel/time/timekeeping.c
kernel/trace/Kconfig

diff --git a/Documentation/features/time/modern-timekeeping/arch-support.txt b/Documentation/features/time/modern-timekeeping/arch-support.txt
deleted file mode 100644 (file)
index a84c3b9..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Feature name:          modern-timekeeping
-#         Kconfig:       !ARCH_USES_GETTIMEOFFSET
-#         description:   arch does not use arch_gettimeoffset() anymore
-#
-    -----------------------
-    |         arch |status|
-    -----------------------
-    |       alpha: |  ok  |
-    |         arc: |  ok  |
-    |         arm: | TODO |
-    |       arm64: |  ok  |
-    |         c6x: |  ok  |
-    |        csky: |  ok  |
-    |       h8300: |  ok  |
-    |     hexagon: |  ok  |
-    |        ia64: |  ok  |
-    |        m68k: |  ok  |
-    |  microblaze: |  ok  |
-    |        mips: |  ok  |
-    |       nds32: |  ok  |
-    |       nios2: |  ok  |
-    |    openrisc: |  ok  |
-    |      parisc: |  ok  |
-    |     powerpc: |  ok  |
-    |       riscv: |  ok  |
-    |        s390: |  ok  |
-    |          sh: |  ok  |
-    |       sparc: |  ok  |
-    |          um: |  ok  |
-    |         x86: |  ok  |
-    |      xtensa: |  ok  |
-    -----------------------
index c0cd1b9075e3d265598f08e15cd6e439017e3697..4ff1e44595129ec5564f6c3b109ef23c5386aa38 100644 (file)
@@ -135,9 +135,7 @@ obj-$(CONFIG_INFINIBAND)    += infiniband/
 obj-y                          += firmware/
 obj-$(CONFIG_CRYPTO)           += crypto/
 obj-$(CONFIG_SUPERH)           += sh/
-ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
 obj-y                          += clocksource/
-endif
 obj-$(CONFIG_DCA)              += dca/
 obj-$(CONFIG_HID)              += hid/
 obj-$(CONFIG_PPC_PS3)          += ps3/
index 68b087bff59cc168e8b5366d89844ccf26f4a628..764936bfcb2cc7098f6e3dd2bf7fb4cafdf5f746 100644 (file)
@@ -563,7 +563,7 @@ config CLKSRC_QCOM
 
 config CLKSRC_VERSATILE
        bool "ARM Versatile (Express) reference platforms clock source" if COMPILE_TEST
-       depends on GENERIC_SCHED_CLOCK && !ARCH_USES_GETTIMEOFFSET
+       depends on GENERIC_SCHED_CLOCK
        select TIMER_OF
        default y if (ARCH_VEXPRESS || ARCH_VERSATILE) && ARM
        help
index b142cb5f5a5331a4dad3be8f2776435d18a66d5b..16cf4522d6f338176f1fa753360e8bdec2c7bc8d 100644 (file)
@@ -21,19 +21,6 @@ extern time64_t mktime64(const unsigned int year, const unsigned int mon,
                        const unsigned int day, const unsigned int hour,
                        const unsigned int min, const unsigned int sec);
 
-/* Some architectures do not supply their own clocksource.
- * This is mainly the case in architectures that get their
- * inter-tick times by reading the counter on their interval
- * timer. Since these timers wrap every tick, they're not really
- * useful as clocksources. Wrapping them to act like one is possible
- * but not very efficient. So we provide a callout these arches
- * can implement for use with the jiffies clocksource to provide
- * finer then tick granular time.
- */
-#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
-extern u32 (*arch_gettimeoffset)(void);
-#endif
-
 #ifdef CONFIG_POSIX_TIMERS
 extern void clear_itimer(void);
 #else
index a09b1d61df6a55608ed5c952523b7d7b516e7c46..51d298ccbe05be776e1b5f2b8341e73a1d8b7bd7 100644 (file)
@@ -26,10 +26,6 @@ config CLOCKSOURCE_VALIDATE_LAST_CYCLE
 config GENERIC_TIME_VSYSCALL
        bool
 
-# Old style timekeeping
-config ARCH_USES_GETTIMEOFFSET
-       bool
-
 # The generic clock events infrastructure
 config GENERIC_CLOCKEVENTS
        bool
@@ -72,7 +68,6 @@ config TICK_ONESHOT
 
 config NO_HZ_COMMON
        bool
-       depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
        select TICK_ONESHOT
 
 choice
@@ -87,7 +82,6 @@ config HZ_PERIODIC
 
 config NO_HZ_IDLE
        bool "Idle dynticks system (tickless idle)"
-       depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
        select NO_HZ_COMMON
        help
          This option enables a tickless idle system: timer interrupts
@@ -99,7 +93,6 @@ config NO_HZ_IDLE
 config NO_HZ_FULL
        bool "Full dynticks system (tickless)"
        # NO_HZ_COMMON dependency
-       depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
        # We need at least one periodic CPU for timekeeping
        depends on SMP
        depends on HAVE_CONTEXT_TRACKING
@@ -158,7 +151,6 @@ config CONTEXT_TRACKING_FORCE
 
 config NO_HZ
        bool "Old Idle dynticks config"
-       depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
        help
          This is the old config entry that enables dynticks idle.
          We keep it around for a little while to enforce backward
@@ -166,7 +158,6 @@ config NO_HZ
 
 config HIGH_RES_TIMERS
        bool "High Resolution Timer Support"
-       depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
        select TICK_ONESHOT
        help
          This option enables high resolution timer support. If your
index 02441ead3c3bb05d3a2828e567775e0d374df5b6..cce484a2cc7ca4b710622435c5fb065d0ef2c61d 100644 (file)
@@ -705,8 +705,6 @@ static inline void clocksource_update_max_deferment(struct clocksource *cs)
                                                &cs->max_cycles);
 }
 
-#ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
-
 static struct clocksource *clocksource_find_best(bool oneshot, bool skipcur)
 {
        struct clocksource *cs;
@@ -798,12 +796,6 @@ static void clocksource_select_fallback(void)
        __clocksource_select(true);
 }
 
-#else /* !CONFIG_ARCH_USES_GETTIMEOFFSET */
-static inline void clocksource_select(void) { }
-static inline void clocksource_select_fallback(void) { }
-
-#endif
-
 /*
  * clocksource_done_booting - Called near the end of core bootup
  *
index 6858a31364b6456f036bbf38da4d0eca89ec3aaf..52fff7e9edcd75f0ea4636e2fc4823dfdd62937c 100644 (file)
@@ -369,13 +369,6 @@ static void tk_setup_internals(struct timekeeper *tk, struct clocksource *clock)
 
 /* Timekeeper helper functions. */
 
-#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
-static u32 default_arch_gettimeoffset(void) { return 0; }
-u32 (*arch_gettimeoffset)(void) = default_arch_gettimeoffset;
-#else
-static inline u32 arch_gettimeoffset(void) { return 0; }
-#endif
-
 static inline u64 timekeeping_delta_to_ns(const struct tk_read_base *tkr, u64 delta)
 {
        u64 nsec;
@@ -383,8 +376,7 @@ static inline u64 timekeeping_delta_to_ns(const struct tk_read_base *tkr, u64 de
        nsec = delta * tkr->mult + tkr->xtime_nsec;
        nsec >>= tkr->shift;
 
-       /* If arch requires, add in get_arch_timeoffset() */
-       return nsec + arch_gettimeoffset();
+       return nsec;
 }
 
 static inline u64 timekeeping_get_ns(const struct tk_read_base *tkr)
@@ -778,16 +770,8 @@ static void timekeeping_forward_now(struct timekeeper *tk)
        tk->tkr_raw.cycle_last  = cycle_now;
 
        tk->tkr_mono.xtime_nsec += delta * tk->tkr_mono.mult;
-
-       /* If arch requires, add in get_arch_timeoffset() */
-       tk->tkr_mono.xtime_nsec += (u64)arch_gettimeoffset() << tk->tkr_mono.shift;
-
-
        tk->tkr_raw.xtime_nsec += delta * tk->tkr_raw.mult;
 
-       /* If arch requires, add in get_arch_timeoffset() */
-       tk->tkr_raw.xtime_nsec += (u64)arch_gettimeoffset() << tk->tkr_raw.shift;
-
        tk_normalize_xtime(tk);
 }
 
@@ -2133,19 +2117,12 @@ static void timekeeping_advance(enum timekeeping_adv_mode mode)
        if (unlikely(timekeeping_suspended))
                goto out;
 
-#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
-       offset = real_tk->cycle_interval;
-
-       if (mode != TK_ADV_TICK)
-               goto out;
-#else
        offset = clocksource_delta(tk_clock_read(&tk->tkr_mono),
                                   tk->tkr_mono.cycle_last, tk->tkr_mono.mask);
 
        /* Check if there's really nothing to do */
        if (offset < real_tk->cycle_interval && mode == TK_ADV_TICK)
                goto out;
-#endif
 
        /* Do some additional sanity checking */
        timekeeping_check_update(tk, offset);
index a4020c0b4508c9977702dd71823a1c9756217872..b74099f990bfafedd4c1dc463f2ae660736306f3 100644 (file)
@@ -253,7 +253,6 @@ config IRQSOFF_TRACER
        bool "Interrupts-off Latency Tracer"
        default n
        depends on TRACE_IRQFLAGS_SUPPORT
-       depends on !ARCH_USES_GETTIMEOFFSET
        select TRACE_IRQFLAGS
        select GENERIC_TRACER
        select TRACER_MAX_TRACE
@@ -277,7 +276,6 @@ config IRQSOFF_TRACER
 config PREEMPT_TRACER
        bool "Preemption-off Latency Tracer"
        default n
-       depends on !ARCH_USES_GETTIMEOFFSET
        depends on PREEMPTION
        select GENERIC_TRACER
        select TRACER_MAX_TRACE