Эх сурвалжийг харах

time: Kill off CONFIG_GENERIC_TIME

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>
John Stultz 15 жил өмнө
parent
commit
592913ecb8

+ 1 - 2
Documentation/kernel-parameters.txt

@@ -73,7 +73,6 @@ parameter is applicable:
 	MTD	MTD (Memory Technology Device) support is enabled.
 	MTD	MTD (Memory Technology Device) support is enabled.
 	NET	Appropriate network support is enabled.
 	NET	Appropriate network support is enabled.
 	NUMA	NUMA support is enabled.
 	NUMA	NUMA support is enabled.
-	GENERIC_TIME The generic timeofday code is enabled.
 	NFS	Appropriate NFS support is enabled.
 	NFS	Appropriate NFS support is enabled.
 	OSS	OSS sound support is enabled.
 	OSS	OSS sound support is enabled.
 	PV_OPS	A paravirtualized kernel 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.
 			clocksource is not available, it defaults to PIT.
 			Format: { pit | tsc | cyclone | pmtmr }
 			Format: { pit | tsc | cyclone | pmtmr }
 
 
-	clocksource=	[GENERIC_TIME] Override the default clocksource
+	clocksource=	Override the default clocksource
 			Format: <string>
 			Format: <string>
 			Override the default clocksource and use the clocksource
 			Override the default clocksource and use the clocksource
 			with the name specified.
 			with the name specified.

+ 0 - 4
arch/alpha/Kconfig

@@ -47,10 +47,6 @@ config GENERIC_CALIBRATE_DELAY
 	bool
 	bool
 	default y
 	default y
 
 
-config GENERIC_TIME
-	bool
-	default y
-
 config GENERIC_CMOS_UPDATE
 config GENERIC_CMOS_UPDATE
         def_bool y
         def_bool y
 
 

+ 0 - 4
arch/arm/Kconfig

@@ -41,10 +41,6 @@ config SYS_SUPPORTS_APM_EMULATION
 config GENERIC_GPIO
 config GENERIC_GPIO
 	bool
 	bool
 
 
-config GENERIC_TIME
-	bool
-	default y
-
 config ARCH_USES_GETTIMEOFFSET
 config ARCH_USES_GETTIMEOFFSET
 	bool
 	bool
 	default n
 	default n

+ 0 - 3
arch/avr32/Kconfig

@@ -45,9 +45,6 @@ config GENERIC_IRQ_PROBE
 config RWSEM_GENERIC_SPINLOCK
 config RWSEM_GENERIC_SPINLOCK
 	def_bool y
 	def_bool y
 
 
-config GENERIC_TIME
-	def_bool y
-
 config GENERIC_CLOCKEVENTS
 config GENERIC_CLOCKEVENTS
 	def_bool y
 	def_bool y
 
 

+ 0 - 3
arch/blackfin/Kconfig

@@ -614,9 +614,6 @@ comment "Kernel Timer/Scheduler"
 
 
 source kernel/Kconfig.hz
 source kernel/Kconfig.hz
 
 
-config GENERIC_TIME
-	def_bool y
-
 config GENERIC_CLOCKEVENTS
 config GENERIC_CLOCKEVENTS
 	bool "Generic clock events"
 	bool "Generic clock events"
 	default y
 	default y

+ 0 - 3
arch/cris/Kconfig

@@ -20,9 +20,6 @@ config RWSEM_GENERIC_SPINLOCK
 config RWSEM_XCHGADD_ALGORITHM
 config RWSEM_XCHGADD_ALGORITHM
 	bool
 	bool
 
 
-config GENERIC_TIME
-	def_bool y
-
 config GENERIC_CMOS_UPDATE
 config GENERIC_CMOS_UPDATE
 	def_bool y
 	def_bool y
 
 

+ 0 - 4
arch/frv/Kconfig

@@ -40,10 +40,6 @@ config GENERIC_HARDIRQS_NO__DO_IRQ
 	bool
 	bool
 	default y
 	default y
 
 
-config GENERIC_TIME
-	bool
-	default y
-
 config TIME_LOW_RES
 config TIME_LOW_RES
 	bool
 	bool
 	default y
 	default y

+ 0 - 4
arch/h8300/Kconfig

@@ -62,10 +62,6 @@ config GENERIC_CALIBRATE_DELAY
 	bool
 	bool
 	default y
 	default y
 
 
-config GENERIC_TIME
-	bool
-	default y
-
 config GENERIC_BUG
 config GENERIC_BUG
         bool
         bool
         depends on BUG
         depends on BUG

+ 0 - 4
arch/ia64/Kconfig

@@ -82,10 +82,6 @@ config GENERIC_CALIBRATE_DELAY
 	bool
 	bool
 	default y
 	default y
 
 
-config GENERIC_TIME
-	bool
-	default y
-
 config GENERIC_TIME_VSYSCALL
 config GENERIC_TIME_VSYSCALL
 	bool
 	bool
 	default y
 	default y

+ 0 - 3
arch/m32r/Kconfig

@@ -44,9 +44,6 @@ config HZ
 	int
 	int
 	default 100
 	default 100
 
 
-config GENERIC_TIME
-	def_bool y
-
 config ARCH_USES_GETTIMEOFFSET
 config ARCH_USES_GETTIMEOFFSET
 	def_bool y
 	def_bool y
 
 

+ 0 - 3
arch/m68k/Kconfig

@@ -59,9 +59,6 @@ config HZ
 	int
 	int
 	default 100
 	default 100
 
 
-config GENERIC_TIME
-	def_bool y
-
 config ARCH_USES_GETTIMEOFFSET
 config ARCH_USES_GETTIMEOFFSET
 	def_bool y
 	def_bool y
 
 

+ 0 - 4
arch/m68knommu/Kconfig

@@ -63,10 +63,6 @@ config GENERIC_CALIBRATE_DELAY
 	bool
 	bool
 	default y
 	default y
 
 
-config GENERIC_TIME
-	bool
-	default y
-
 config GENERIC_CMOS_UPDATE
 config GENERIC_CMOS_UPDATE
 	bool
 	bool
 	default y
 	default y

+ 0 - 3
arch/microblaze/Kconfig

@@ -48,9 +48,6 @@ config GENERIC_IRQ_PROBE
 config GENERIC_CALIBRATE_DELAY
 config GENERIC_CALIBRATE_DELAY
 	def_bool y
 	def_bool y
 
 
-config GENERIC_TIME
-	def_bool y
-
 config GENERIC_TIME_VSYSCALL
 config GENERIC_TIME_VSYSCALL
 	def_bool n
 	def_bool n
 
 

+ 0 - 4
arch/mips/Kconfig

@@ -733,10 +733,6 @@ config GENERIC_CLOCKEVENTS
 	bool
 	bool
 	default y
 	default y
 
 
-config GENERIC_TIME
-	bool
-	default y
-
 config GENERIC_CMOS_UPDATE
 config GENERIC_CMOS_UPDATE
 	bool
 	bool
 	default y
 	default y

+ 0 - 3
arch/mn10300/Kconfig

@@ -46,9 +46,6 @@ config GENERIC_FIND_NEXT_BIT
 config GENERIC_HWEIGHT
 config GENERIC_HWEIGHT
 	def_bool y
 	def_bool y
 
 
-config GENERIC_TIME
-	def_bool y
-
 config GENERIC_BUG
 config GENERIC_BUG
 	def_bool y
 	def_bool y
 
 

+ 0 - 4
arch/parisc/Kconfig

@@ -66,10 +66,6 @@ config GENERIC_CALIBRATE_DELAY
 	bool
 	bool
 	default y
 	default y
 
 
-config GENERIC_TIME
-	bool
-	default y
-
 config TIME_LOW_RES
 config TIME_LOW_RES
 	bool
 	bool
 	depends on SMP
 	depends on SMP

+ 0 - 3
arch/powerpc/Kconfig

@@ -29,9 +29,6 @@ config MMU
 config GENERIC_CMOS_UPDATE
 config GENERIC_CMOS_UPDATE
 	def_bool y
 	def_bool y
 
 
-config GENERIC_TIME
-	def_bool y
-
 config GENERIC_TIME_VSYSCALL
 config GENERIC_TIME_VSYSCALL
 	def_bool y
 	def_bool y
 
 

+ 0 - 3
arch/s390/Kconfig

@@ -40,9 +40,6 @@ config ARCH_HAS_ILOG2_U64
 config GENERIC_HWEIGHT
 config GENERIC_HWEIGHT
 	def_bool y
 	def_bool y
 
 
-config GENERIC_TIME
-	def_bool y
-
 config GENERIC_TIME_VSYSCALL
 config GENERIC_TIME_VSYSCALL
 	def_bool y
 	def_bool y
 
 

+ 0 - 3
arch/score/Kconfig

@@ -55,9 +55,6 @@ config GENERIC_CALIBRATE_DELAY
 config GENERIC_CLOCKEVENTS
 config GENERIC_CLOCKEVENTS
 	def_bool y
 	def_bool y
 
 
-config GENERIC_TIME
-	def_bool y
-
 config SCHED_NO_NO_OMIT_FRAME_POINTER
 config SCHED_NO_NO_OMIT_FRAME_POINTER
 	def_bool y
 	def_bool y
 
 

+ 0 - 3
arch/sh/Kconfig

@@ -98,9 +98,6 @@ config GENERIC_CALIBRATE_DELAY
 config GENERIC_IOMAP
 config GENERIC_IOMAP
 	bool
 	bool
 
 
-config GENERIC_TIME
-	def_bool y
-
 config GENERIC_CLOCKEVENTS
 config GENERIC_CLOCKEVENTS
 	def_bool y
 	def_bool y
 
 

+ 0 - 3
arch/sparc/Kconfig

@@ -66,9 +66,6 @@ config BITS
 	default 32 if SPARC32
 	default 32 if SPARC32
 	default 64 if SPARC64
 	default 64 if SPARC64
 
 
-config GENERIC_TIME
-	def_bool y
-
 config ARCH_USES_GETTIMEOFFSET
 config ARCH_USES_GETTIMEOFFSET
 	bool
 	bool
 	default y if SPARC32
 	default y if SPARC32

+ 0 - 4
arch/um/Kconfig.common

@@ -55,10 +55,6 @@ config GENERIC_BUG
 	default y
 	default y
 	depends on BUG
 	depends on BUG
 
 
-config GENERIC_TIME
-	bool
-	default y
-
 config GENERIC_CLOCKEVENTS
 config GENERIC_CLOCKEVENTS
 	bool
 	bool
 	default y
 	default y

+ 1 - 4
arch/x86/Kconfig

@@ -72,9 +72,6 @@ config ARCH_DEFCONFIG
 	default "arch/x86/configs/i386_defconfig" if X86_32
 	default "arch/x86/configs/i386_defconfig" if X86_32
 	default "arch/x86/configs/x86_64_defconfig" if X86_64
 	default "arch/x86/configs/x86_64_defconfig" if X86_64
 
 
-config GENERIC_TIME
-	def_bool y
-
 config GENERIC_CMOS_UPDATE
 config GENERIC_CMOS_UPDATE
 	def_bool y
 	def_bool y
 
 
@@ -2046,7 +2043,7 @@ config SCx200
 
 
 config SCx200HR_TIMER
 config SCx200HR_TIMER
 	tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
 	tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
-	depends on SCx200 && GENERIC_TIME
+	depends on SCx200
 	default y
 	default y
 	---help---
 	---help---
 	  This driver provides a clocksource built upon the on-chip
 	  This driver provides a clocksource built upon the on-chip

+ 0 - 3
arch/xtensa/Kconfig

@@ -48,9 +48,6 @@ config HZ
 	int
 	int
 	default 100
 	default 100
 
 
-config GENERIC_TIME
-	def_bool y
-
 source "init/Kconfig"
 source "init/Kconfig"
 source "kernel/Kconfig.freezer"
 source "kernel/Kconfig.freezer"
 
 

+ 3 - 1
drivers/Makefile

@@ -101,7 +101,9 @@ obj-y				+= firmware/
 obj-$(CONFIG_CRYPTO)		+= crypto/
 obj-$(CONFIG_CRYPTO)		+= crypto/
 obj-$(CONFIG_SUPERH)		+= sh/
 obj-$(CONFIG_SUPERH)		+= sh/
 obj-$(CONFIG_ARCH_SHMOBILE)	+= 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_DMA_ENGINE)	+= dma/
 obj-$(CONFIG_DCA)		+= dca/
 obj-$(CONFIG_DCA)		+= dca/
 obj-$(CONFIG_HID)		+= hid/
 obj-$(CONFIG_HID)		+= hid/

+ 1 - 1
drivers/acpi/acpi_pad.c

@@ -77,7 +77,7 @@ static void power_saving_mwait_init(void)
 	power_saving_mwait_eax = (highest_cstate << MWAIT_SUBSTATE_SIZE) |
 	power_saving_mwait_eax = (highest_cstate << MWAIT_SUBSTATE_SIZE) |
 		(highest_subcstate - 1);
 		(highest_subcstate - 1);
 
 
-#if defined(CONFIG_GENERIC_TIME) && defined(CONFIG_X86)
+#if defined(CONFIG_X86)
 	switch (boot_cpu_data.x86_vendor) {
 	switch (boot_cpu_data.x86_vendor) {
 	case X86_VENDOR_AMD:
 	case X86_VENDOR_AMD:
 	case X86_VENDOR_INTEL:
 	case X86_VENDOR_INTEL:

+ 1 - 1
drivers/acpi/processor_idle.c

@@ -264,7 +264,7 @@ int acpi_processor_resume(struct acpi_device * device)
 	return 0;
 	return 0;
 }
 }
 
 
-#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
+#if defined(CONFIG_X86)
 static void tsc_check_state(int state)
 static void tsc_check_state(int state)
 {
 {
 	switch (boot_cpu_data.x86_vendor) {
 	switch (boot_cpu_data.x86_vendor) {

+ 2 - 2
drivers/misc/Kconfig

@@ -72,7 +72,7 @@ config ATMEL_TCLIB
 
 
 config ATMEL_TCB_CLKSRC
 config ATMEL_TCB_CLKSRC
 	bool "TC Block Clocksource"
 	bool "TC Block Clocksource"
-	depends on ATMEL_TCLIB && GENERIC_TIME
+	depends on ATMEL_TCLIB
 	default y
 	default y
 	help
 	help
 	  Select this to get a high precision clocksource based on a
 	  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
 config CS5535_CLOCK_EVENT_SRC
 	tristate "CS5535/CS5536 high-res timer (MFGPT) events"
 	tristate "CS5535/CS5536 high-res timer (MFGPT) events"
-	depends on GENERIC_TIME && GENERIC_CLOCKEVENTS && CS5535_MFGPT
+	depends on GENERIC_CLOCKEVENTS && CS5535_MFGPT
 	help
 	help
 	  This driver provides a clock event source based on the MFGPT
 	  This driver provides a clock event source based on the MFGPT
 	  timer(s) in the CS5535 and CS5536 companion chips.
 	  timer(s) in the CS5535 and CS5536 companion chips.

+ 0 - 16
kernel/time.c

@@ -300,22 +300,6 @@ struct timespec timespec_trunc(struct timespec t, unsigned gran)
 }
 }
 EXPORT_SYMBOL(timespec_trunc);
 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.
 /* 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
  * 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.
  * => year=1980, mon=12, day=31, hour=23, min=59, sec=59.

+ 2 - 2
kernel/time/Kconfig

@@ -6,7 +6,7 @@ config TICK_ONESHOT
 
 
 config NO_HZ
 config NO_HZ
 	bool "Tickless System (Dynamic Ticks)"
 	bool "Tickless System (Dynamic Ticks)"
-	depends on GENERIC_TIME && GENERIC_CLOCKEVENTS
+	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
 	select TICK_ONESHOT
 	select TICK_ONESHOT
 	help
 	help
 	  This option enables a tickless system: timer interrupts will
 	  This option enables a tickless system: timer interrupts will
@@ -15,7 +15,7 @@ config NO_HZ
 
 
 config HIGH_RES_TIMERS
 config HIGH_RES_TIMERS
 	bool "High Resolution Timer Support"
 	bool "High Resolution Timer Support"
-	depends on GENERIC_TIME && GENERIC_CLOCKEVENTS
+	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
 	select TICK_ONESHOT
 	select TICK_ONESHOT
 	help
 	help
 	  This option enables high resolution timer support. If your
 	  This option enables high resolution timer support. If your

+ 2 - 2
kernel/time/clocksource.c

@@ -531,7 +531,7 @@ static u64 clocksource_max_deferment(struct clocksource *cs)
 	return max_nsecs - (max_nsecs >> 5);
 	return max_nsecs - (max_nsecs >> 5);
 }
 }
 
 
-#ifdef CONFIG_GENERIC_TIME
+#ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
 
 
 /**
 /**
  * clocksource_select - Select the best clocksource available
  * 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) { }
 static inline void clocksource_select(void) { }
 
 

+ 4 - 51
kernel/time/timekeeping.c

@@ -173,8 +173,6 @@ void timekeeping_leap_insert(int leapsecond)
 	update_vsyscall(&xtime, timekeeper.clock, timekeeper.mult);
 	update_vsyscall(&xtime, timekeeper.clock, timekeeper.mult);
 }
 }
 
 
-#ifdef CONFIG_GENERIC_TIME
-
 /**
 /**
  * timekeeping_forward_now - update clock to the current time
  * timekeeping_forward_now - update clock to the current time
  *
  *
@@ -376,52 +374,6 @@ void timekeeping_notify(struct clocksource *clock)
 	tick_clock_notify();
 	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
  * ktime_get_real - get the real (wall-) time in ktime_t format
  *
  *
@@ -784,10 +736,11 @@ void update_wall_time(void)
 		return;
 		return;
 
 
 	clock = timekeeper.clock;
 	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;
 	offset = timekeeper.cycle_interval;
+#else
+	offset = (clock->read(clock) - clock->cycle_last) & clock->mask;
 #endif
 #endif
 	timekeeper.xtime_nsec = (s64)xtime.tv_nsec << timekeeper.shift;
 	timekeeper.xtime_nsec = (s64)xtime.tv_nsec << timekeeper.shift;
 
 

+ 2 - 2
kernel/trace/Kconfig

@@ -153,7 +153,7 @@ config IRQSOFF_TRACER
 	bool "Interrupts-off Latency Tracer"
 	bool "Interrupts-off Latency Tracer"
 	default n
 	default n
 	depends on TRACE_IRQFLAGS_SUPPORT
 	depends on TRACE_IRQFLAGS_SUPPORT
-	depends on GENERIC_TIME
+	depends on !ARCH_USES_GETTIMEOFFSET
 	select TRACE_IRQFLAGS
 	select TRACE_IRQFLAGS
 	select GENERIC_TRACER
 	select GENERIC_TRACER
 	select TRACER_MAX_TRACE
 	select TRACER_MAX_TRACE
@@ -175,7 +175,7 @@ config IRQSOFF_TRACER
 config PREEMPT_TRACER
 config PREEMPT_TRACER
 	bool "Preemption-off Latency Tracer"
 	bool "Preemption-off Latency Tracer"
 	default n
 	default n
-	depends on GENERIC_TIME
+	depends on !ARCH_USES_GETTIMEOFFSET
 	depends on PREEMPT
 	depends on PREEMPT
 	select GENERIC_TRACER
 	select GENERIC_TRACER
 	select TRACER_MAX_TRACE
 	select TRACER_MAX_TRACE