time: Kill off CONFIG_GENERIC_TIME
John Stultz [Wed, 14 Jul 2010 00:56:20 +0000 (17:56 -0700)]
Now that all arches have been converted over to use generic time via
clocksources or arch_gettimeoffset(), we can remove the GENERIC_TIME
config option and simplify the generic code.

Signed-off-by: John Stultz <johnstul@us.ibm.com>
LKML-Reference: <1279068988-21864-4-git-send-email-johnstul@us.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

33 files changed:
Documentation/kernel-parameters.txt
arch/alpha/Kconfig
arch/arm/Kconfig
arch/avr32/Kconfig
arch/blackfin/Kconfig
arch/cris/Kconfig
arch/frv/Kconfig
arch/h8300/Kconfig
arch/ia64/Kconfig
arch/m32r/Kconfig
arch/m68k/Kconfig
arch/m68knommu/Kconfig
arch/microblaze/Kconfig
arch/mips/Kconfig
arch/mn10300/Kconfig
arch/parisc/Kconfig
arch/powerpc/Kconfig
arch/s390/Kconfig
arch/score/Kconfig
arch/sh/Kconfig
arch/sparc/Kconfig
arch/um/Kconfig.common
arch/x86/Kconfig
arch/xtensa/Kconfig
drivers/Makefile
drivers/acpi/acpi_pad.c
drivers/acpi/processor_idle.c
drivers/misc/Kconfig
kernel/time.c
kernel/time/Kconfig
kernel/time/clocksource.c
kernel/time/timekeeping.c
kernel/trace/Kconfig

index 2b2407d..8abdfd7 100644 (file)
@@ -73,7 +73,6 @@ parameter is applicable:
        MTD     MTD (Memory Technology Device) support is enabled.
        NET     Appropriate network support is enabled.
        NUMA    NUMA support is enabled.
-       GENERIC_TIME The generic timeofday code is enabled.
        NFS     Appropriate NFS support is enabled.
        OSS     OSS sound support is enabled.
        PV_OPS  A paravirtualized kernel is enabled.
@@ -468,7 +467,7 @@ and is between 256 and 4096 characters. It is defined in the file
                        clocksource is not available, it defaults to PIT.
                        Format: { pit | tsc | cyclone | pmtmr }
 
-       clocksource=    [GENERIC_TIME] Override the default clocksource
+       clocksource=    Override the default clocksource
                        Format: <string>
                        Override the default clocksource and use the clocksource
                        with the name specified.
index 3e2e540..b9647bb 100644 (file)
@@ -47,10 +47,6 @@ config GENERIC_CALIBRATE_DELAY
        bool
        default y
 
-config GENERIC_TIME
-       bool
-       default y
-
 config GENERIC_CMOS_UPDATE
         def_bool y
 
index 98922f7..655b4ae 100644 (file)
@@ -41,10 +41,6 @@ config SYS_SUPPORTS_APM_EMULATION
 config GENERIC_GPIO
        bool
 
-config GENERIC_TIME
-       bool
-       default y
-
 config ARCH_USES_GETTIMEOFFSET
        bool
        default n
index f2b3193..f515727 100644 (file)
@@ -45,9 +45,6 @@ config GENERIC_IRQ_PROBE
 config RWSEM_GENERIC_SPINLOCK
        def_bool y
 
-config GENERIC_TIME
-       def_bool y
-
 config GENERIC_CLOCKEVENTS
        def_bool y
 
index f66294b..c88fd35 100644 (file)
@@ -614,9 +614,6 @@ comment "Kernel Timer/Scheduler"
 
 source kernel/Kconfig.hz
 
-config GENERIC_TIME
-       def_bool y
-
 config GENERIC_CLOCKEVENTS
        bool "Generic clock events"
        default y
index e25bf44..887ef85 100644 (file)
@@ -20,9 +20,6 @@ config RWSEM_GENERIC_SPINLOCK
 config RWSEM_XCHGADD_ALGORITHM
        bool
 
-config GENERIC_TIME
-       def_bool y
-
 config GENERIC_CMOS_UPDATE
        def_bool y
 
index 4b5830b..16399bd 100644 (file)
@@ -40,10 +40,6 @@ config GENERIC_HARDIRQS_NO__DO_IRQ
        bool
        default y
 
-config GENERIC_TIME
-       bool
-       default y
-
 config TIME_LOW_RES
        bool
        default y
index 53cc669..988b6ff 100644 (file)
@@ -62,10 +62,6 @@ config GENERIC_CALIBRATE_DELAY
        bool
        default y
 
-config GENERIC_TIME
-       bool
-       default y
-
 config GENERIC_BUG
         bool
         depends on BUG
index 9561082..8711d13 100644 (file)
@@ -82,10 +82,6 @@ config GENERIC_CALIBRATE_DELAY
        bool
        default y
 
-config GENERIC_TIME
-       bool
-       default y
-
 config GENERIC_TIME_VSYSCALL
        bool
        default y
index 3a9319f..836abbb 100644 (file)
@@ -44,9 +44,6 @@ config HZ
        int
        default 100
 
-config GENERIC_TIME
-       def_bool y
-
 config ARCH_USES_GETTIMEOFFSET
        def_bool y
 
index 2e3737b..8030e24 100644 (file)
@@ -59,9 +59,6 @@ config HZ
        int
        default 100
 
-config GENERIC_TIME
-       def_bool y
-
 config ARCH_USES_GETTIMEOFFSET
        def_bool y
 
index efeb603..2609c39 100644 (file)
@@ -63,10 +63,6 @@ config GENERIC_CALIBRATE_DELAY
        bool
        default y
 
-config GENERIC_TIME
-       bool
-       default y
-
 config GENERIC_CMOS_UPDATE
        bool
        default y
index 505a085..14f03ce 100644 (file)
@@ -48,9 +48,6 @@ config GENERIC_IRQ_PROBE
 config GENERIC_CALIBRATE_DELAY
        def_bool y
 
-config GENERIC_TIME
-       def_bool y
-
 config GENERIC_TIME_VSYSCALL
        def_bool n
 
index cdaae94..01c44cb 100644 (file)
@@ -733,10 +733,6 @@ config GENERIC_CLOCKEVENTS
        bool
        default y
 
-config GENERIC_TIME
-       bool
-       default y
-
 config GENERIC_CMOS_UPDATE
        bool
        default y
index 1c4565a..444b9f9 100644 (file)
@@ -46,9 +46,6 @@ config GENERIC_FIND_NEXT_BIT
 config GENERIC_HWEIGHT
        def_bool y
 
-config GENERIC_TIME
-       def_bool y
-
 config GENERIC_BUG
        def_bool y
 
index 05a366a..907417d 100644 (file)
@@ -66,10 +66,6 @@ config GENERIC_CALIBRATE_DELAY
        bool
        default y
 
-config GENERIC_TIME
-       bool
-       default y
-
 config TIME_LOW_RES
        bool
        depends on SMP
index 2031a28..25e6bf4 100644 (file)
@@ -29,9 +29,6 @@ config MMU
 config GENERIC_CMOS_UPDATE
        def_bool y
 
-config GENERIC_TIME
-       def_bool y
-
 config GENERIC_TIME_VSYSCALL
        def_bool y
 
index bee1c0f..f0777a4 100644 (file)
@@ -40,9 +40,6 @@ config ARCH_HAS_ILOG2_U64
 config GENERIC_HWEIGHT
        def_bool y
 
-config GENERIC_TIME
-       def_bool y
-
 config GENERIC_TIME_VSYSCALL
        def_bool y
 
index 55d413e..be4a155 100644 (file)
@@ -55,9 +55,6 @@ config GENERIC_CALIBRATE_DELAY
 config GENERIC_CLOCKEVENTS
        def_bool y
 
-config GENERIC_TIME
-       def_bool y
-
 config SCHED_NO_NO_OMIT_FRAME_POINTER
        def_bool y
 
index 82868fe..33990fa 100644 (file)
@@ -98,9 +98,6 @@ config GENERIC_CALIBRATE_DELAY
 config GENERIC_IOMAP
        bool
 
-config GENERIC_TIME
-       def_bool y
-
 config GENERIC_CLOCKEVENTS
        def_bool y
 
index c0015db..1cd0d9d 100644 (file)
@@ -66,9 +66,6 @@ config BITS
        default 32 if SPARC32
        default 64 if SPARC64
 
-config GENERIC_TIME
-       def_bool y
-
 config ARCH_USES_GETTIMEOFFSET
        bool
        default y if SPARC32
index 0d207e7..7c8e277 100644 (file)
@@ -55,10 +55,6 @@ config GENERIC_BUG
        default y
        depends on BUG
 
-config GENERIC_TIME
-       bool
-       default y
-
 config GENERIC_CLOCKEVENTS
        bool
        default y
index dcb0593..546b610 100644 (file)
@@ -72,9 +72,6 @@ config ARCH_DEFCONFIG
        default "arch/x86/configs/i386_defconfig" if X86_32
        default "arch/x86/configs/x86_64_defconfig" if X86_64
 
-config GENERIC_TIME
-       def_bool y
-
 config GENERIC_CMOS_UPDATE
        def_bool y
 
@@ -2046,7 +2043,7 @@ config SCx200
 
 config SCx200HR_TIMER
        tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
-       depends on SCx200 && GENERIC_TIME
+       depends on SCx200
        default y
        ---help---
          This driver provides a clocksource built upon the on-chip
index ebe228d..0859bfd 100644 (file)
@@ -48,9 +48,6 @@ config HZ
        int
        default 100
 
-config GENERIC_TIME
-       def_bool y
-
 source "init/Kconfig"
 source "kernel/Kconfig.freezer"
 
index 91874e0..ae47344 100644 (file)
@@ -101,7 +101,9 @@ obj-y                               += firmware/
 obj-$(CONFIG_CRYPTO)           += crypto/
 obj-$(CONFIG_SUPERH)           += sh/
 obj-$(CONFIG_ARCH_SHMOBILE)    += sh/
-obj-$(CONFIG_GENERIC_TIME)     += clocksource/
+ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
+obj-y                          += clocksource/
+endif
 obj-$(CONFIG_DMA_ENGINE)       += dma/
 obj-$(CONFIG_DCA)              += dca/
 obj-$(CONFIG_HID)              += hid/
index 446aced..b76848c 100644 (file)
@@ -77,7 +77,7 @@ static void power_saving_mwait_init(void)
        power_saving_mwait_eax = (highest_cstate << MWAIT_SUBSTATE_SIZE) |
                (highest_subcstate - 1);
 
-#if defined(CONFIG_GENERIC_TIME) && defined(CONFIG_X86)
+#if defined(CONFIG_X86)
        switch (boot_cpu_data.x86_vendor) {
        case X86_VENDOR_AMD:
        case X86_VENDOR_INTEL:
index e9a8026..294e10b 100644 (file)
@@ -264,7 +264,7 @@ int acpi_processor_resume(struct acpi_device * device)
        return 0;
 }
 
-#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
+#if defined(CONFIG_X86)
 static void tsc_check_state(int state)
 {
        switch (boot_cpu_data.x86_vendor) {
index 26386a9..5b9ba48 100644 (file)
@@ -72,7 +72,7 @@ config ATMEL_TCLIB
 
 config ATMEL_TCB_CLKSRC
        bool "TC Block Clocksource"
-       depends on ATMEL_TCLIB && GENERIC_TIME
+       depends on ATMEL_TCLIB
        default y
        help
          Select this to get a high precision clocksource based on a
@@ -240,7 +240,7 @@ config CS5535_MFGPT_DEFAULT_IRQ
 
 config CS5535_CLOCK_EVENT_SRC
        tristate "CS5535/CS5536 high-res timer (MFGPT) events"
-       depends on GENERIC_TIME && GENERIC_CLOCKEVENTS && CS5535_MFGPT
+       depends on GENERIC_CLOCKEVENTS && CS5535_MFGPT
        help
          This driver provides a clock event source based on the MFGPT
          timer(s) in the CS5535 and CS5536 companion chips.
index 848b1c2..ba9b338 100644 (file)
@@ -300,22 +300,6 @@ struct timespec timespec_trunc(struct timespec t, unsigned gran)
 }
 EXPORT_SYMBOL(timespec_trunc);
 
-#ifndef CONFIG_GENERIC_TIME
-/*
- * Simulate gettimeofday using do_gettimeofday which only allows a timeval
- * and therefore only yields usec accuracy
- */
-void getnstimeofday(struct timespec *tv)
-{
-       struct timeval x;
-
-       do_gettimeofday(&x);
-       tv->tv_sec = x.tv_sec;
-       tv->tv_nsec = x.tv_usec * NSEC_PER_USEC;
-}
-EXPORT_SYMBOL_GPL(getnstimeofday);
-#endif
-
 /* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
  * Assumes input in normal date format, i.e. 1980-12-31 23:59:59
  * => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
index 95ed429..f06a8a3 100644 (file)
@@ -6,7 +6,7 @@ config TICK_ONESHOT
 
 config NO_HZ
        bool "Tickless System (Dynamic Ticks)"
-       depends on GENERIC_TIME && GENERIC_CLOCKEVENTS
+       depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
        select TICK_ONESHOT
        help
          This option enables a tickless system: timer interrupts will
@@ -15,7 +15,7 @@ config NO_HZ
 
 config HIGH_RES_TIMERS
        bool "High Resolution Timer Support"
-       depends on GENERIC_TIME && GENERIC_CLOCKEVENTS
+       depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
        select TICK_ONESHOT
        help
          This option enables high resolution timer support. If your
index f08e99c..c543d21 100644 (file)
@@ -531,7 +531,7 @@ static u64 clocksource_max_deferment(struct clocksource *cs)
        return max_nsecs - (max_nsecs >> 5);
 }
 
-#ifdef CONFIG_GENERIC_TIME
+#ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
 
 /**
  * clocksource_select - Select the best clocksource available
@@ -577,7 +577,7 @@ static void clocksource_select(void)
        }
 }
 
-#else /* CONFIG_GENERIC_TIME */
+#else /* !CONFIG_ARCH_USES_GETTIMEOFFSET */
 
 static inline void clocksource_select(void) { }
 
index 623fe3d..73edd40 100644 (file)
@@ -173,8 +173,6 @@ void timekeeping_leap_insert(int leapsecond)
        update_vsyscall(&xtime, timekeeper.clock, timekeeper.mult);
 }
 
-#ifdef CONFIG_GENERIC_TIME
-
 /**
  * timekeeping_forward_now - update clock to the current time
  *
@@ -376,52 +374,6 @@ void timekeeping_notify(struct clocksource *clock)
        tick_clock_notify();
 }
 
-#else /* GENERIC_TIME */
-
-static inline void timekeeping_forward_now(void) { }
-
-/**
- * ktime_get - get the monotonic time in ktime_t format
- *
- * returns the time in ktime_t format
- */
-ktime_t ktime_get(void)
-{
-       struct timespec now;
-
-       ktime_get_ts(&now);
-
-       return timespec_to_ktime(now);
-}
-EXPORT_SYMBOL_GPL(ktime_get);
-
-/**
- * ktime_get_ts - get the monotonic clock in timespec format
- * @ts:                pointer to timespec variable
- *
- * The function calculates the monotonic clock from the realtime
- * clock and the wall_to_monotonic offset and stores the result
- * in normalized timespec format in the variable pointed to by @ts.
- */
-void ktime_get_ts(struct timespec *ts)
-{
-       struct timespec tomono;
-       unsigned long seq;
-
-       do {
-               seq = read_seqbegin(&xtime_lock);
-               getnstimeofday(ts);
-               tomono = wall_to_monotonic;
-
-       } while (read_seqretry(&xtime_lock, seq));
-
-       set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec,
-                               ts->tv_nsec + tomono.tv_nsec);
-}
-EXPORT_SYMBOL_GPL(ktime_get_ts);
-
-#endif /* !GENERIC_TIME */
-
 /**
  * ktime_get_real - get the real (wall-) time in ktime_t format
  *
@@ -784,10 +736,11 @@ void update_wall_time(void)
                return;
 
        clock = timekeeper.clock;
-#ifdef CONFIG_GENERIC_TIME
-       offset = (clock->read(clock) - clock->cycle_last) & clock->mask;
-#else
+
+#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
        offset = timekeeper.cycle_interval;
+#else
+       offset = (clock->read(clock) - clock->cycle_last) & clock->mask;
 #endif
        timekeeper.xtime_nsec = (s64)xtime.tv_nsec << timekeeper.shift;
 
index 8b1797c..7531dda 100644 (file)
@@ -153,7 +153,7 @@ config IRQSOFF_TRACER
        bool "Interrupts-off Latency Tracer"
        default n
        depends on TRACE_IRQFLAGS_SUPPORT
-       depends on GENERIC_TIME
+       depends on !ARCH_USES_GETTIMEOFFSET
        select TRACE_IRQFLAGS
        select GENERIC_TRACER
        select TRACER_MAX_TRACE
@@ -175,7 +175,7 @@ config IRQSOFF_TRACER
 config PREEMPT_TRACER
        bool "Preemption-off Latency Tracer"
        default n
-       depends on GENERIC_TIME
+       depends on !ARCH_USES_GETTIMEOFFSET
        depends on PREEMPT
        select GENERIC_TRACER
        select TRACER_MAX_TRACE