diff options
-rw-r--r-- | arch/alpha/Kconfig | 4 | ||||
-rw-r--r-- | arch/arm/Kconfig | 20 | ||||
-rw-r--r-- | arch/avr32/Kconfig | 6 | ||||
-rw-r--r-- | arch/blackfin/Kconfig | 10 | ||||
-rw-r--r-- | arch/c6x/Kconfig | 8 | ||||
-rw-r--r-- | arch/cris/Kconfig | 7 | ||||
-rw-r--r-- | arch/h8300/Kconfig.cpu | 2 | ||||
-rw-r--r-- | arch/hexagon/Kconfig | 16 | ||||
-rw-r--r-- | arch/ia64/Kconfig | 9 | ||||
-rw-r--r-- | arch/m32r/Kconfig | 4 | ||||
-rw-r--r-- | arch/m68k/Kconfig | 11 | ||||
-rw-r--r-- | arch/microblaze/Kconfig | 9 | ||||
-rw-r--r-- | arch/mips/Kconfig | 15 | ||||
-rw-r--r-- | arch/mn10300/Kconfig | 8 | ||||
-rw-r--r-- | arch/openrisc/Kconfig | 5 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 13 | ||||
-rw-r--r-- | arch/s390/Kconfig | 14 | ||||
-rw-r--r-- | arch/score/Kconfig | 5 | ||||
-rw-r--r-- | arch/sh/Kconfig | 14 | ||||
-rw-r--r-- | arch/sparc/Kconfig | 12 | ||||
-rw-r--r-- | arch/tile/Kconfig | 6 | ||||
-rw-r--r-- | arch/um/Kconfig.common | 5 | ||||
-rw-r--r-- | arch/um/Kconfig.um | 1 | ||||
-rw-r--r-- | arch/unicore32/Kconfig | 5 | ||||
-rw-r--r-- | arch/x86/Kconfig | 33 | ||||
-rw-r--r-- | arch/x86/kernel/hpet.c | 66 | ||||
-rw-r--r-- | include/linux/time.h | 1 | ||||
-rw-r--r-- | init/Kconfig | 1 | ||||
-rw-r--r-- | kernel/time/Kconfig | 58 | ||||
-rw-r--r-- | kernel/time/ntp.c | 8 | ||||
-rw-r--r-- | kernel/time/timekeeping.c | 4 |
31 files changed, 155 insertions, 225 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 0893f023efb8..3de74c9f9610 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig | |||
@@ -16,6 +16,7 @@ config ALPHA | |||
16 | select ARCH_WANT_OPTIONAL_GPIOLIB | 16 | select ARCH_WANT_OPTIONAL_GPIOLIB |
17 | select ARCH_HAVE_NMI_SAFE_CMPXCHG | 17 | select ARCH_HAVE_NMI_SAFE_CMPXCHG |
18 | select GENERIC_SMP_IDLE_THREAD | 18 | select GENERIC_SMP_IDLE_THREAD |
19 | select GENERIC_CMOS_UPDATE | ||
19 | help | 20 | help |
20 | The Alpha is a 64-bit general-purpose processor designed and | 21 | The Alpha is a 64-bit general-purpose processor designed and |
21 | marketed by the Digital Equipment Corporation of blessed memory, | 22 | marketed by the Digital Equipment Corporation of blessed memory, |
@@ -48,9 +49,6 @@ config GENERIC_CALIBRATE_DELAY | |||
48 | bool | 49 | bool |
49 | default y | 50 | default y |
50 | 51 | ||
51 | config GENERIC_CMOS_UPDATE | ||
52 | def_bool y | ||
53 | |||
54 | config GENERIC_GPIO | 52 | config GENERIC_GPIO |
55 | bool | 53 | bool |
56 | 54 | ||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 4f4c8115d79b..312450941a1a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -40,6 +40,8 @@ config ARM | |||
40 | select GENERIC_PCI_IOMAP | 40 | select GENERIC_PCI_IOMAP |
41 | select HAVE_BPF_JIT | 41 | select HAVE_BPF_JIT |
42 | select GENERIC_SMP_IDLE_THREAD | 42 | select GENERIC_SMP_IDLE_THREAD |
43 | select KTIME_SCALAR | ||
44 | select GENERIC_CLOCKEVENTS_BROADCAST if SMP | ||
43 | help | 45 | help |
44 | The ARM series is a line of low-power-consumption RISC chip designs | 46 | The ARM series is a line of low-power-consumption RISC chip designs |
45 | licensed by ARM Ltd and targeted at embedded applications and | 47 | licensed by ARM Ltd and targeted at embedded applications and |
@@ -63,22 +65,6 @@ config SYS_SUPPORTS_APM_EMULATION | |||
63 | config GENERIC_GPIO | 65 | config GENERIC_GPIO |
64 | bool | 66 | bool |
65 | 67 | ||
66 | config ARCH_USES_GETTIMEOFFSET | ||
67 | bool | ||
68 | default n | ||
69 | |||
70 | config GENERIC_CLOCKEVENTS | ||
71 | bool | ||
72 | |||
73 | config GENERIC_CLOCKEVENTS_BROADCAST | ||
74 | bool | ||
75 | depends on GENERIC_CLOCKEVENTS | ||
76 | default y if SMP | ||
77 | |||
78 | config KTIME_SCALAR | ||
79 | bool | ||
80 | default y | ||
81 | |||
82 | config HAVE_TCM | 68 | config HAVE_TCM |
83 | bool | 69 | bool |
84 | select GENERIC_ALLOCATOR | 70 | select GENERIC_ALLOCATOR |
@@ -1438,8 +1424,6 @@ endmenu | |||
1438 | 1424 | ||
1439 | menu "Kernel Features" | 1425 | menu "Kernel Features" |
1440 | 1426 | ||
1441 | source "kernel/time/Kconfig" | ||
1442 | |||
1443 | config HAVE_SMP | 1427 | config HAVE_SMP |
1444 | bool | 1428 | bool |
1445 | help | 1429 | help |
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index 3dea7231f637..f8bc2d27d148 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig | |||
@@ -12,6 +12,7 @@ config AVR32 | |||
12 | select HARDIRQS_SW_RESEND | 12 | select HARDIRQS_SW_RESEND |
13 | select GENERIC_IRQ_SHOW | 13 | select GENERIC_IRQ_SHOW |
14 | select ARCH_HAVE_NMI_SAFE_CMPXCHG | 14 | select ARCH_HAVE_NMI_SAFE_CMPXCHG |
15 | select GENERIC_CLOCKEVENTS | ||
15 | help | 16 | help |
16 | AVR32 is a high-performance 32-bit RISC microprocessor core, | 17 | AVR32 is a high-performance 32-bit RISC microprocessor core, |
17 | designed for cost-sensitive embedded applications, with particular | 18 | designed for cost-sensitive embedded applications, with particular |
@@ -35,9 +36,6 @@ config TRACE_IRQFLAGS_SUPPORT | |||
35 | config RWSEM_GENERIC_SPINLOCK | 36 | config RWSEM_GENERIC_SPINLOCK |
36 | def_bool y | 37 | def_bool y |
37 | 38 | ||
38 | config GENERIC_CLOCKEVENTS | ||
39 | def_bool y | ||
40 | |||
41 | config RWSEM_XCHGADD_ALGORITHM | 39 | config RWSEM_XCHGADD_ALGORITHM |
42 | def_bool n | 40 | def_bool n |
43 | 41 | ||
@@ -63,8 +61,6 @@ source "kernel/Kconfig.freezer" | |||
63 | 61 | ||
64 | menu "System Type and features" | 62 | menu "System Type and features" |
65 | 63 | ||
66 | source "kernel/time/Kconfig" | ||
67 | |||
68 | config SUBARCH_AVR32B | 64 | config SUBARCH_AVR32B |
69 | bool | 65 | bool |
70 | config MMU | 66 | config MMU |
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 79cfe2614bcc..04ec0d8fbbb5 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
@@ -38,6 +38,7 @@ config BLACKFIN | |||
38 | select IRQ_PER_CPU if SMP | 38 | select IRQ_PER_CPU if SMP |
39 | select HAVE_NMI_WATCHDOG if NMI_WATCHDOG | 39 | select HAVE_NMI_WATCHDOG if NMI_WATCHDOG |
40 | select GENERIC_SMP_IDLE_THREAD | 40 | select GENERIC_SMP_IDLE_THREAD |
41 | select ARCH_USES_GETTIMEOFFSET if !GENERIC_CLOCKEVENTS | ||
41 | 42 | ||
42 | config GENERIC_CSUM | 43 | config GENERIC_CSUM |
43 | def_bool y | 44 | def_bool y |
@@ -642,9 +643,10 @@ comment "Kernel Timer/Scheduler" | |||
642 | 643 | ||
643 | source kernel/Kconfig.hz | 644 | source kernel/Kconfig.hz |
644 | 645 | ||
645 | config GENERIC_CLOCKEVENTS | 646 | config SET_GENERIC_CLOCKEVENTS |
646 | bool "Generic clock events" | 647 | bool "Generic clock events" |
647 | default y | 648 | default y |
649 | select GENERIC_CLOCKEVENTS | ||
648 | 650 | ||
649 | menu "Clock event device" | 651 | menu "Clock event device" |
650 | depends on GENERIC_CLOCKEVENTS | 652 | depends on GENERIC_CLOCKEVENTS |
@@ -678,12 +680,6 @@ config GPTMR0_CLOCKSOURCE | |||
678 | depends on !TICKSOURCE_GPTMR0 | 680 | depends on !TICKSOURCE_GPTMR0 |
679 | endmenu | 681 | endmenu |
680 | 682 | ||
681 | config ARCH_USES_GETTIMEOFFSET | ||
682 | depends on !GENERIC_CLOCKEVENTS | ||
683 | def_bool y | ||
684 | |||
685 | source kernel/time/Kconfig | ||
686 | |||
687 | comment "Misc" | 683 | comment "Misc" |
688 | 684 | ||
689 | choice | 685 | choice |
diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig index 1f15b88b537f..052f81a76239 100644 --- a/arch/c6x/Kconfig +++ b/arch/c6x/Kconfig | |||
@@ -15,6 +15,7 @@ config C6X | |||
15 | select IRQ_DOMAIN | 15 | select IRQ_DOMAIN |
16 | select OF | 16 | select OF |
17 | select OF_EARLY_FLATTREE | 17 | select OF_EARLY_FLATTREE |
18 | select GENERIC_CLOCKEVENTS | ||
18 | 19 | ||
19 | config MMU | 20 | config MMU |
20 | def_bool n | 21 | def_bool n |
@@ -31,12 +32,6 @@ config GENERIC_CALIBRATE_DELAY | |||
31 | config GENERIC_HWEIGHT | 32 | config GENERIC_HWEIGHT |
32 | def_bool y | 33 | def_bool y |
33 | 34 | ||
34 | config GENERIC_CLOCKEVENTS | ||
35 | def_bool y | ||
36 | |||
37 | config GENERIC_CLOCKEVENTS_BROADCAST | ||
38 | bool | ||
39 | |||
40 | config GENERIC_BUG | 35 | config GENERIC_BUG |
41 | def_bool y | 36 | def_bool y |
42 | 37 | ||
@@ -125,7 +120,6 @@ source "mm/Kconfig" | |||
125 | source "kernel/Kconfig.preempt" | 120 | source "kernel/Kconfig.preempt" |
126 | 121 | ||
127 | source "kernel/Kconfig.hz" | 122 | source "kernel/Kconfig.hz" |
128 | source "kernel/time/Kconfig" | ||
129 | 123 | ||
130 | endmenu | 124 | endmenu |
131 | 125 | ||
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index 2995035812ec..22d34d64cc81 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig | |||
@@ -13,12 +13,6 @@ config RWSEM_GENERIC_SPINLOCK | |||
13 | config RWSEM_XCHGADD_ALGORITHM | 13 | config RWSEM_XCHGADD_ALGORITHM |
14 | bool | 14 | bool |
15 | 15 | ||
16 | config GENERIC_CMOS_UPDATE | ||
17 | def_bool y | ||
18 | |||
19 | config ARCH_USES_GETTIMEOFFSET | ||
20 | def_bool n | ||
21 | |||
22 | config ARCH_HAS_ILOG2_U32 | 16 | config ARCH_HAS_ILOG2_U32 |
23 | bool | 17 | bool |
24 | default n | 18 | default n |
@@ -50,6 +44,7 @@ config CRIS | |||
50 | select GENERIC_IRQ_SHOW | 44 | select GENERIC_IRQ_SHOW |
51 | select GENERIC_IOMAP | 45 | select GENERIC_IOMAP |
52 | select GENERIC_SMP_IDLE_THREAD if ETRAX_ARCH_V32 | 46 | select GENERIC_SMP_IDLE_THREAD if ETRAX_ARCH_V32 |
47 | select GENERIC_CMOS_UPDATE | ||
53 | 48 | ||
54 | config HZ | 49 | config HZ |
55 | int | 50 | int |
diff --git a/arch/h8300/Kconfig.cpu b/arch/h8300/Kconfig.cpu index 15c22286ae79..321f3922728b 100644 --- a/arch/h8300/Kconfig.cpu +++ b/arch/h8300/Kconfig.cpu | |||
@@ -1,7 +1,5 @@ | |||
1 | menu "Processor type and features" | 1 | menu "Processor type and features" |
2 | 2 | ||
3 | source "kernel/time/Kconfig" | ||
4 | |||
5 | choice | 3 | choice |
6 | prompt "H8/300 platform" | 4 | prompt "H8/300 platform" |
7 | default H8300H_GENERIC | 5 | default H8300H_GENERIC |
diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig index bc979f770980..b2fdfb700f50 100644 --- a/arch/hexagon/Kconfig +++ b/arch/hexagon/Kconfig | |||
@@ -27,6 +27,9 @@ config HEXAGON | |||
27 | select GENERIC_IOMAP | 27 | select GENERIC_IOMAP |
28 | select GENERIC_SMP_IDLE_THREAD | 28 | select GENERIC_SMP_IDLE_THREAD |
29 | select STACKTRACE_SUPPORT | 29 | select STACKTRACE_SUPPORT |
30 | select KTIME_SCALAR | ||
31 | select GENERIC_CLOCKEVENTS | ||
32 | select GENERIC_CLOCKEVENTS_BROADCAST | ||
30 | ---help--- | 33 | ---help--- |
31 | Qualcomm Hexagon is a processor architecture designed for high | 34 | Qualcomm Hexagon is a processor architecture designed for high |
32 | performance and low power across a wide variety of applications. | 35 | performance and low power across a wide variety of applications. |
@@ -55,9 +58,6 @@ config PCI | |||
55 | config EARLY_PRINTK | 58 | config EARLY_PRINTK |
56 | def_bool y | 59 | def_bool y |
57 | 60 | ||
58 | config KTIME_SCALAR | ||
59 | def_bool y | ||
60 | |||
61 | config MMU | 61 | config MMU |
62 | def_bool y | 62 | def_bool y |
63 | 63 | ||
@@ -88,15 +88,6 @@ config GENERIC_FIND_NEXT_BIT | |||
88 | config GENERIC_HWEIGHT | 88 | config GENERIC_HWEIGHT |
89 | def_bool y | 89 | def_bool y |
90 | 90 | ||
91 | config GENERIC_TIME | ||
92 | def_bool y | ||
93 | |||
94 | config GENERIC_CLOCKEVENTS | ||
95 | def_bool y | ||
96 | |||
97 | config GENERIC_CLOCKEVENTS_BROADCAST | ||
98 | def_bool y | ||
99 | |||
100 | config STACKTRACE_SUPPORT | 91 | config STACKTRACE_SUPPORT |
101 | def_bool y | 92 | def_bool y |
102 | select STACKTRACE | 93 | select STACKTRACE |
@@ -179,7 +170,6 @@ endchoice | |||
179 | source "mm/Kconfig" | 170 | source "mm/Kconfig" |
180 | 171 | ||
181 | source "kernel/Kconfig.hz" | 172 | source "kernel/Kconfig.hz" |
182 | source "kernel/time/Kconfig" | ||
183 | 173 | ||
184 | config GENERIC_GPIO | 174 | config GENERIC_GPIO |
185 | def_bool n | 175 | def_bool n |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index ba667b60f32d..8186ec5ea151 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -37,6 +37,8 @@ config IA64 | |||
37 | select ARCH_INIT_TASK | 37 | select ARCH_INIT_TASK |
38 | select ARCH_TASK_STRUCT_ALLOCATOR | 38 | select ARCH_TASK_STRUCT_ALLOCATOR |
39 | select ARCH_THREAD_INFO_ALLOCATOR | 39 | select ARCH_THREAD_INFO_ALLOCATOR |
40 | select ARCH_CLOCKSOURCE_DATA | ||
41 | select GENERIC_TIME_VSYSCALL | ||
40 | default y | 42 | default y |
41 | help | 43 | help |
42 | The Itanium Processor Family is Intel's 64-bit successor to | 44 | The Itanium Processor Family is Intel's 64-bit successor to |
@@ -92,10 +94,6 @@ config GENERIC_CALIBRATE_DELAY | |||
92 | bool | 94 | bool |
93 | default y | 95 | default y |
94 | 96 | ||
95 | config GENERIC_TIME_VSYSCALL | ||
96 | bool | ||
97 | default y | ||
98 | |||
99 | config HAVE_SETUP_PER_CPU_AREA | 97 | config HAVE_SETUP_PER_CPU_AREA |
100 | def_bool y | 98 | def_bool y |
101 | 99 | ||
@@ -110,9 +108,6 @@ config EFI | |||
110 | bool | 108 | bool |
111 | default y | 109 | default y |
112 | 110 | ||
113 | config ARCH_CLOCKSOURCE_DATA | ||
114 | def_bool y | ||
115 | |||
116 | config SCHED_OMIT_FRAME_POINTER | 111 | config SCHED_OMIT_FRAME_POINTER |
117 | bool | 112 | bool |
118 | default y | 113 | default y |
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig index ef80a6546ff2..b638d5bfa14d 100644 --- a/arch/m32r/Kconfig +++ b/arch/m32r/Kconfig | |||
@@ -11,6 +11,7 @@ config M32R | |||
11 | select GENERIC_IRQ_PROBE | 11 | select GENERIC_IRQ_PROBE |
12 | select GENERIC_IRQ_SHOW | 12 | select GENERIC_IRQ_SHOW |
13 | select GENERIC_ATOMIC64 | 13 | select GENERIC_ATOMIC64 |
14 | select ARCH_USES_GETTIMEOFFSET | ||
14 | 15 | ||
15 | config SBUS | 16 | config SBUS |
16 | bool | 17 | bool |
@@ -33,9 +34,6 @@ config HZ | |||
33 | int | 34 | int |
34 | default 100 | 35 | default 100 |
35 | 36 | ||
36 | config ARCH_USES_GETTIMEOFFSET | ||
37 | def_bool y | ||
38 | |||
39 | source "init/Kconfig" | 37 | source "init/Kconfig" |
40 | 38 | ||
41 | source "kernel/Kconfig.freezer" | 39 | source "kernel/Kconfig.freezer" |
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index d318c606c888..cac5b6be572a 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig | |||
@@ -8,6 +8,7 @@ config M68K | |||
8 | select ARCH_HAVE_NMI_SAFE_CMPXCHG if RMW_INSNS | 8 | select ARCH_HAVE_NMI_SAFE_CMPXCHG if RMW_INSNS |
9 | select GENERIC_CPU_DEVICES | 9 | select GENERIC_CPU_DEVICES |
10 | select FPU if MMU | 10 | select FPU if MMU |
11 | select ARCH_USES_GETTIMEOFFSET if MMU && !COLDFIRE | ||
11 | 12 | ||
12 | config RWSEM_GENERIC_SPINLOCK | 13 | config RWSEM_GENERIC_SPINLOCK |
13 | bool | 14 | bool |
@@ -22,9 +23,6 @@ config ARCH_HAS_ILOG2_U32 | |||
22 | config ARCH_HAS_ILOG2_U64 | 23 | config ARCH_HAS_ILOG2_U64 |
23 | bool | 24 | bool |
24 | 25 | ||
25 | config GENERIC_CLOCKEVENTS | ||
26 | bool | ||
27 | |||
28 | config GENERIC_GPIO | 26 | config GENERIC_GPIO |
29 | bool | 27 | bool |
30 | 28 | ||
@@ -43,9 +41,6 @@ config TIME_LOW_RES | |||
43 | bool | 41 | bool |
44 | default y | 42 | default y |
45 | 43 | ||
46 | config ARCH_USES_GETTIMEOFFSET | ||
47 | def_bool MMU && !COLDFIRE | ||
48 | |||
49 | config NO_IOPORT | 44 | config NO_IOPORT |
50 | def_bool y | 45 | def_bool y |
51 | 46 | ||
@@ -111,10 +106,6 @@ if COLDFIRE | |||
111 | source "kernel/Kconfig.preempt" | 106 | source "kernel/Kconfig.preempt" |
112 | endif | 107 | endif |
113 | 108 | ||
114 | if !MMU || COLDFIRE | ||
115 | source "kernel/time/Kconfig" | ||
116 | endif | ||
117 | |||
118 | source "mm/Kconfig" | 109 | source "mm/Kconfig" |
119 | 110 | ||
120 | endmenu | 111 | endmenu |
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index ac22dc7f4cab..83460468998d 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig | |||
@@ -22,6 +22,7 @@ config MICROBLAZE | |||
22 | select GENERIC_PCI_IOMAP | 22 | select GENERIC_PCI_IOMAP |
23 | select GENERIC_CPU_DEVICES | 23 | select GENERIC_CPU_DEVICES |
24 | select GENERIC_ATOMIC64 | 24 | select GENERIC_ATOMIC64 |
25 | select GENERIC_CLOCKEVENTS | ||
25 | 26 | ||
26 | config SWAP | 27 | config SWAP |
27 | def_bool n | 28 | def_bool n |
@@ -50,12 +51,6 @@ config GENERIC_HWEIGHT | |||
50 | config GENERIC_CALIBRATE_DELAY | 51 | config GENERIC_CALIBRATE_DELAY |
51 | def_bool y | 52 | def_bool y |
52 | 53 | ||
53 | config GENERIC_TIME_VSYSCALL | ||
54 | def_bool n | ||
55 | |||
56 | config GENERIC_CLOCKEVENTS | ||
57 | def_bool y | ||
58 | |||
59 | config GENERIC_GPIO | 54 | config GENERIC_GPIO |
60 | def_bool y | 55 | def_bool y |
61 | 56 | ||
@@ -79,8 +74,6 @@ source "arch/microblaze/platform/Kconfig.platform" | |||
79 | 74 | ||
80 | menu "Processor type and features" | 75 | menu "Processor type and features" |
81 | 76 | ||
82 | source "kernel/time/Kconfig" | ||
83 | |||
84 | source "kernel/Kconfig.preempt" | 77 | source "kernel/Kconfig.preempt" |
85 | 78 | ||
86 | source "kernel/Kconfig.hz" | 79 | source "kernel/Kconfig.hz" |
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 85aad0321397..3aa826bcbf96 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -31,6 +31,8 @@ config MIPS | |||
31 | select ARCH_DISCARD_MEMBLOCK | 31 | select ARCH_DISCARD_MEMBLOCK |
32 | select GENERIC_SMP_IDLE_THREAD | 32 | select GENERIC_SMP_IDLE_THREAD |
33 | select BUILDTIME_EXTABLE_SORT | 33 | select BUILDTIME_EXTABLE_SORT |
34 | select GENERIC_CLOCKEVENTS | ||
35 | select GENERIC_CMOS_UPDATE | ||
34 | 36 | ||
35 | menu "Machine selection" | 37 | menu "Machine selection" |
36 | 38 | ||
@@ -858,14 +860,6 @@ config GENERIC_CALIBRATE_DELAY | |||
858 | bool | 860 | bool |
859 | default y | 861 | default y |
860 | 862 | ||
861 | config GENERIC_CLOCKEVENTS | ||
862 | bool | ||
863 | default y | ||
864 | |||
865 | config GENERIC_CMOS_UPDATE | ||
866 | bool | ||
867 | default y | ||
868 | |||
869 | config SCHED_OMIT_FRAME_POINTER | 863 | config SCHED_OMIT_FRAME_POINTER |
870 | bool | 864 | bool |
871 | default y | 865 | default y |
@@ -2052,9 +2046,6 @@ config CPU_HAS_SYNC | |||
2052 | depends on !CPU_R3000 | 2046 | depends on !CPU_R3000 |
2053 | default y | 2047 | default y |
2054 | 2048 | ||
2055 | config GENERIC_CLOCKEVENTS_BROADCAST | ||
2056 | bool | ||
2057 | |||
2058 | # | 2049 | # |
2059 | # CPU non-features | 2050 | # CPU non-features |
2060 | # | 2051 | # |
@@ -2216,8 +2207,6 @@ config NR_CPUS | |||
2216 | performance should round up your number of processors to the next | 2207 | performance should round up your number of processors to the next |
2217 | power of two. | 2208 | power of two. |
2218 | 2209 | ||
2219 | source "kernel/time/Kconfig" | ||
2220 | |||
2221 | # | 2210 | # |
2222 | # Timer Interrupt Frequency Configuration | 2211 | # Timer Interrupt Frequency Configuration |
2223 | # | 2212 | # |
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig index 3aa3de017159..687f9b4a2ed6 100644 --- a/arch/mn10300/Kconfig +++ b/arch/mn10300/Kconfig | |||
@@ -6,6 +6,7 @@ config MN10300 | |||
6 | select HAVE_ARCH_TRACEHOOK | 6 | select HAVE_ARCH_TRACEHOOK |
7 | select HAVE_ARCH_KGDB | 7 | select HAVE_ARCH_KGDB |
8 | select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER | 8 | select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER |
9 | select GENERIC_CLOCKEVENTS | ||
9 | 10 | ||
10 | config AM33_2 | 11 | config AM33_2 |
11 | def_bool n | 12 | def_bool n |
@@ -42,15 +43,9 @@ config RWSEM_XCHGADD_ALGORITHM | |||
42 | config GENERIC_CALIBRATE_DELAY | 43 | config GENERIC_CALIBRATE_DELAY |
43 | def_bool y | 44 | def_bool y |
44 | 45 | ||
45 | config GENERIC_CMOS_UPDATE | ||
46 | def_bool n | ||
47 | |||
48 | config GENERIC_HWEIGHT | 46 | config GENERIC_HWEIGHT |
49 | def_bool y | 47 | def_bool y |
50 | 48 | ||
51 | config GENERIC_CLOCKEVENTS | ||
52 | def_bool y | ||
53 | |||
54 | config GENERIC_BUG | 49 | config GENERIC_BUG |
55 | def_bool y | 50 | def_bool y |
56 | 51 | ||
@@ -231,7 +226,6 @@ config MN10300_USING_JTAG | |||
231 | single-stepping, which are taken over completely by the JTAG unit. | 226 | single-stepping, which are taken over completely by the JTAG unit. |
232 | 227 | ||
233 | source "kernel/Kconfig.hz" | 228 | source "kernel/Kconfig.hz" |
234 | source "kernel/time/Kconfig" | ||
235 | 229 | ||
236 | config MN10300_RTC | 230 | config MN10300_RTC |
237 | bool "Using MN10300 RTC" | 231 | bool "Using MN10300 RTC" |
diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig index 297bd38f7c5d..4932247d078a 100644 --- a/arch/openrisc/Kconfig +++ b/arch/openrisc/Kconfig | |||
@@ -18,6 +18,7 @@ config OPENRISC | |||
18 | select GENERIC_IOMAP | 18 | select GENERIC_IOMAP |
19 | select GENERIC_CPU_DEVICES | 19 | select GENERIC_CPU_DEVICES |
20 | select GENERIC_ATOMIC64 | 20 | select GENERIC_ATOMIC64 |
21 | select GENERIC_CLOCKEVENTS | ||
21 | 22 | ||
22 | config MMU | 23 | config MMU |
23 | def_bool y | 24 | def_bool y |
@@ -47,9 +48,6 @@ config NO_IOPORT | |||
47 | config GENERIC_GPIO | 48 | config GENERIC_GPIO |
48 | def_bool y | 49 | def_bool y |
49 | 50 | ||
50 | config GENERIC_CLOCKEVENTS | ||
51 | def_bool y | ||
52 | |||
53 | config TRACE_IRQFLAGS_SUPPORT | 51 | config TRACE_IRQFLAGS_SUPPORT |
54 | def_bool y | 52 | def_bool y |
55 | 53 | ||
@@ -109,7 +107,6 @@ config OPENRISC_HAVE_INST_DIV | |||
109 | endmenu | 107 | endmenu |
110 | 108 | ||
111 | 109 | ||
112 | source "kernel/time/Kconfig" | ||
113 | source kernel/Kconfig.hz | 110 | source kernel/Kconfig.hz |
114 | source kernel/Kconfig.preempt | 111 | source kernel/Kconfig.preempt |
115 | source "mm/Kconfig" | 112 | source "mm/Kconfig" |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 0a947bd9c076..00b9874e2240 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -27,15 +27,6 @@ config MMU | |||
27 | bool | 27 | bool |
28 | default y | 28 | default y |
29 | 29 | ||
30 | config GENERIC_CMOS_UPDATE | ||
31 | def_bool y | ||
32 | |||
33 | config GENERIC_TIME_VSYSCALL | ||
34 | def_bool y | ||
35 | |||
36 | config GENERIC_CLOCKEVENTS | ||
37 | def_bool y | ||
38 | |||
39 | config HAVE_SETUP_PER_CPU_AREA | 30 | config HAVE_SETUP_PER_CPU_AREA |
40 | def_bool PPC64 | 31 | def_bool PPC64 |
41 | 32 | ||
@@ -141,6 +132,9 @@ config PPC | |||
141 | select HAVE_ARCH_JUMP_LABEL | 132 | select HAVE_ARCH_JUMP_LABEL |
142 | select ARCH_HAVE_NMI_SAFE_CMPXCHG | 133 | select ARCH_HAVE_NMI_SAFE_CMPXCHG |
143 | select GENERIC_SMP_IDLE_THREAD | 134 | select GENERIC_SMP_IDLE_THREAD |
135 | select GENERIC_CMOS_UPDATE | ||
136 | select GENERIC_TIME_VSYSCALL | ||
137 | select GENERIC_CLOCKEVENTS | ||
144 | 138 | ||
145 | config EARLY_PRINTK | 139 | config EARLY_PRINTK |
146 | bool | 140 | bool |
@@ -281,7 +275,6 @@ config HIGHMEM | |||
281 | bool "High memory support" | 275 | bool "High memory support" |
282 | depends on PPC32 | 276 | depends on PPC32 |
283 | 277 | ||
284 | source kernel/time/Kconfig | ||
285 | source kernel/Kconfig.hz | 278 | source kernel/Kconfig.hz |
286 | source kernel/Kconfig.preempt | 279 | source kernel/Kconfig.preempt |
287 | source "fs/Kconfig.binfmt" | 280 | source "fs/Kconfig.binfmt" |
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index e16390c0bca8..b403c533432c 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -28,12 +28,6 @@ config ARCH_HAS_ILOG2_U64 | |||
28 | config GENERIC_HWEIGHT | 28 | config GENERIC_HWEIGHT |
29 | def_bool y | 29 | def_bool y |
30 | 30 | ||
31 | config GENERIC_TIME_VSYSCALL | ||
32 | def_bool y | ||
33 | |||
34 | config GENERIC_CLOCKEVENTS | ||
35 | def_bool y | ||
36 | |||
37 | config GENERIC_BUG | 31 | config GENERIC_BUG |
38 | def_bool y if BUG | 32 | def_bool y if BUG |
39 | 33 | ||
@@ -123,6 +117,9 @@ config S390 | |||
123 | select ARCH_INLINE_WRITE_UNLOCK_IRQ | 117 | select ARCH_INLINE_WRITE_UNLOCK_IRQ |
124 | select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE | 118 | select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE |
125 | select GENERIC_SMP_IDLE_THREAD | 119 | select GENERIC_SMP_IDLE_THREAD |
120 | select GENERIC_TIME_VSYSCALL | ||
121 | select GENERIC_CLOCKEVENTS | ||
122 | select KTIME_SCALAR if 32BIT | ||
126 | 123 | ||
127 | config SCHED_OMIT_FRAME_POINTER | 124 | config SCHED_OMIT_FRAME_POINTER |
128 | def_bool y | 125 | def_bool y |
@@ -135,8 +132,6 @@ menu "Base setup" | |||
135 | 132 | ||
136 | comment "Processor type and features" | 133 | comment "Processor type and features" |
137 | 134 | ||
138 | source "kernel/time/Kconfig" | ||
139 | |||
140 | config 64BIT | 135 | config 64BIT |
141 | def_bool y | 136 | def_bool y |
142 | prompt "64 bit kernel" | 137 | prompt "64 bit kernel" |
@@ -147,9 +142,6 @@ config 64BIT | |||
147 | config 32BIT | 142 | config 32BIT |
148 | def_bool y if !64BIT | 143 | def_bool y if !64BIT |
149 | 144 | ||
150 | config KTIME_SCALAR | ||
151 | def_bool 32BIT | ||
152 | |||
153 | config SMP | 145 | config SMP |
154 | def_bool y | 146 | def_bool y |
155 | prompt "Symmetric multi-processing support" | 147 | prompt "Symmetric multi-processing support" |
diff --git a/arch/score/Kconfig b/arch/score/Kconfig index 4b285779ac05..ba0f412920be 100644 --- a/arch/score/Kconfig +++ b/arch/score/Kconfig | |||
@@ -9,6 +9,7 @@ config SCORE | |||
9 | select HAVE_MEMBLOCK_NODE_MAP | 9 | select HAVE_MEMBLOCK_NODE_MAP |
10 | select ARCH_DISCARD_MEMBLOCK | 10 | select ARCH_DISCARD_MEMBLOCK |
11 | select GENERIC_CPU_DEVICES | 11 | select GENERIC_CPU_DEVICES |
12 | select GENERIC_CLOCKEVENTS | ||
12 | 13 | ||
13 | choice | 14 | choice |
14 | prompt "System type" | 15 | prompt "System type" |
@@ -51,9 +52,6 @@ config GENERIC_HWEIGHT | |||
51 | config GENERIC_CALIBRATE_DELAY | 52 | config GENERIC_CALIBRATE_DELAY |
52 | def_bool y | 53 | def_bool y |
53 | 54 | ||
54 | config GENERIC_CLOCKEVENTS | ||
55 | def_bool y | ||
56 | |||
57 | menu "Kernel type" | 55 | menu "Kernel type" |
58 | 56 | ||
59 | config 32BIT | 57 | config 32BIT |
@@ -68,7 +66,6 @@ config MEMORY_START | |||
68 | hex | 66 | hex |
69 | default 0xa0000000 | 67 | default 0xa0000000 |
70 | 68 | ||
71 | source "kernel/time/Kconfig" | ||
72 | source "kernel/Kconfig.hz" | 69 | source "kernel/Kconfig.hz" |
73 | source "kernel/Kconfig.preempt" | 70 | source "kernel/Kconfig.preempt" |
74 | 71 | ||
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 3e723aaa5e18..5e05c0b445bb 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -29,6 +29,8 @@ config SUPERH | |||
29 | select GENERIC_ATOMIC64 | 29 | select GENERIC_ATOMIC64 |
30 | select GENERIC_IRQ_SHOW | 30 | select GENERIC_IRQ_SHOW |
31 | select GENERIC_SMP_IDLE_THREAD | 31 | select GENERIC_SMP_IDLE_THREAD |
32 | select GENERIC_CLOCKEVENTS | ||
33 | select GENERIC_CMOS_UPDATE if SH_SH03 || SH_DREAMCAST | ||
32 | help | 34 | help |
33 | The SuperH is a RISC processor targeted for use in embedded systems | 35 | The SuperH is a RISC processor targeted for use in embedded systems |
34 | and consumer electronics; it was also used in the Sega Dreamcast | 36 | and consumer electronics; it was also used in the Sega Dreamcast |
@@ -87,16 +89,6 @@ config GENERIC_GPIO | |||
87 | config GENERIC_CALIBRATE_DELAY | 89 | config GENERIC_CALIBRATE_DELAY |
88 | bool | 90 | bool |
89 | 91 | ||
90 | config GENERIC_CLOCKEVENTS | ||
91 | def_bool y | ||
92 | |||
93 | config GENERIC_CLOCKEVENTS_BROADCAST | ||
94 | bool | ||
95 | |||
96 | config GENERIC_CMOS_UPDATE | ||
97 | def_bool y | ||
98 | depends on SH_SH03 || SH_DREAMCAST | ||
99 | |||
100 | config GENERIC_LOCKBREAK | 92 | config GENERIC_LOCKBREAK |
101 | def_bool y | 93 | def_bool y |
102 | depends on SMP && PREEMPT | 94 | depends on SMP && PREEMPT |
@@ -611,8 +603,6 @@ config SH_CLK_CPG_LEGACY | |||
611 | !CPU_SUBTYPE_SH7734 && !CPU_SUBTYPE_SH7264 && \ | 603 | !CPU_SUBTYPE_SH7734 && !CPU_SUBTYPE_SH7264 && \ |
612 | !CPU_SUBTYPE_SH7269 | 604 | !CPU_SUBTYPE_SH7269 |
613 | 605 | ||
614 | source "kernel/time/Kconfig" | ||
615 | |||
616 | endmenu | 606 | endmenu |
617 | 607 | ||
618 | menu "CPU Frequency scaling" | 608 | menu "CPU Frequency scaling" |
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 1ea3fd954756..2d493a3bdfe1 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
@@ -32,12 +32,15 @@ config SPARC | |||
32 | select HAVE_NMI_WATCHDOG if SPARC64 | 32 | select HAVE_NMI_WATCHDOG if SPARC64 |
33 | select HAVE_BPF_JIT | 33 | select HAVE_BPF_JIT |
34 | select GENERIC_SMP_IDLE_THREAD | 34 | select GENERIC_SMP_IDLE_THREAD |
35 | select GENERIC_CMOS_UPDATE | ||
36 | select GENERIC_CLOCKEVENTS | ||
35 | 37 | ||
36 | config SPARC32 | 38 | config SPARC32 |
37 | def_bool !64BIT | 39 | def_bool !64BIT |
38 | select GENERIC_ATOMIC64 | 40 | select GENERIC_ATOMIC64 |
39 | select CLZ_TAB | 41 | select CLZ_TAB |
40 | select ARCH_THREAD_INFO_ALLOCATOR | 42 | select ARCH_THREAD_INFO_ALLOCATOR |
43 | select ARCH_USES_GETTIMEOFFSET | ||
41 | 44 | ||
42 | config SPARC64 | 45 | config SPARC64 |
43 | def_bool 64BIT | 46 | def_bool 64BIT |
@@ -77,13 +80,6 @@ config BITS | |||
77 | default 32 if SPARC32 | 80 | default 32 if SPARC32 |
78 | default 64 if SPARC64 | 81 | default 64 if SPARC64 |
79 | 82 | ||
80 | config GENERIC_CMOS_UPDATE | ||
81 | bool | ||
82 | default y | ||
83 | |||
84 | config GENERIC_CLOCKEVENTS | ||
85 | def_bool y | ||
86 | |||
87 | config IOMMU_HELPER | 83 | config IOMMU_HELPER |
88 | bool | 84 | bool |
89 | default y if SPARC64 | 85 | default y if SPARC64 |
@@ -274,8 +270,6 @@ config HOTPLUG_CPU | |||
274 | can be controlled through /sys/devices/system/cpu/cpu#. | 270 | can be controlled through /sys/devices/system/cpu/cpu#. |
275 | Say N if you want to disable CPU hotplug. | 271 | Say N if you want to disable CPU hotplug. |
276 | 272 | ||
277 | source "kernel/time/Kconfig" | ||
278 | |||
279 | if SPARC64 | 273 | if SPARC64 |
280 | source "drivers/cpufreq/Kconfig" | 274 | source "drivers/cpufreq/Kconfig" |
281 | 275 | ||
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig index 74239dd77e06..6ad6219fc47e 100644 --- a/arch/tile/Kconfig +++ b/arch/tile/Kconfig | |||
@@ -14,6 +14,7 @@ config TILE | |||
14 | select HAVE_SYSCALL_WRAPPERS if TILEGX | 14 | select HAVE_SYSCALL_WRAPPERS if TILEGX |
15 | select SYS_HYPERVISOR | 15 | select SYS_HYPERVISOR |
16 | select ARCH_HAVE_NMI_SAFE_CMPXCHG | 16 | select ARCH_HAVE_NMI_SAFE_CMPXCHG |
17 | select GENERIC_CLOCKEVENTS | ||
17 | 18 | ||
18 | # FIXME: investigate whether we need/want these options. | 19 | # FIXME: investigate whether we need/want these options. |
19 | # select HAVE_IOREMAP_PROT | 20 | # select HAVE_IOREMAP_PROT |
@@ -47,9 +48,6 @@ config NEED_PER_CPU_PAGE_FIRST_CHUNK | |||
47 | config SYS_SUPPORTS_HUGETLBFS | 48 | config SYS_SUPPORTS_HUGETLBFS |
48 | def_bool y | 49 | def_bool y |
49 | 50 | ||
50 | config GENERIC_CLOCKEVENTS | ||
51 | def_bool y | ||
52 | |||
53 | # FIXME: tilegx can implement a more efficient rwsem. | 51 | # FIXME: tilegx can implement a more efficient rwsem. |
54 | config RWSEM_GENERIC_SPINLOCK | 52 | config RWSEM_GENERIC_SPINLOCK |
55 | def_bool y | 53 | def_bool y |
@@ -139,8 +137,6 @@ config NR_CPUS | |||
139 | smaller kernel memory footprint results from using a smaller | 137 | smaller kernel memory footprint results from using a smaller |
140 | value on chips with fewer tiles. | 138 | value on chips with fewer tiles. |
141 | 139 | ||
142 | source "kernel/time/Kconfig" | ||
143 | |||
144 | source "kernel/Kconfig.hz" | 140 | source "kernel/Kconfig.hz" |
145 | 141 | ||
146 | config KEXEC | 142 | config KEXEC |
diff --git a/arch/um/Kconfig.common b/arch/um/Kconfig.common index 43ef890d292c..cb837c223922 100644 --- a/arch/um/Kconfig.common +++ b/arch/um/Kconfig.common | |||
@@ -10,6 +10,7 @@ config UML | |||
10 | select GENERIC_IRQ_SHOW | 10 | select GENERIC_IRQ_SHOW |
11 | select GENERIC_CPU_DEVICES | 11 | select GENERIC_CPU_DEVICES |
12 | select GENERIC_IO | 12 | select GENERIC_IO |
13 | select GENERIC_CLOCKEVENTS | ||
13 | 14 | ||
14 | config MMU | 15 | config MMU |
15 | bool | 16 | bool |
@@ -52,10 +53,6 @@ config GENERIC_BUG | |||
52 | default y | 53 | default y |
53 | depends on BUG | 54 | depends on BUG |
54 | 55 | ||
55 | config GENERIC_CLOCKEVENTS | ||
56 | bool | ||
57 | default y | ||
58 | |||
59 | config HZ | 56 | config HZ |
60 | int | 57 | int |
61 | default 100 | 58 | default 100 |
diff --git a/arch/um/Kconfig.um b/arch/um/Kconfig.um index 70fd690964e4..bf87f25eb2de 100644 --- a/arch/um/Kconfig.um +++ b/arch/um/Kconfig.um | |||
@@ -10,7 +10,6 @@ config STATIC_LINK | |||
10 | 2.75G) for UML. | 10 | 2.75G) for UML. |
11 | 11 | ||
12 | source "mm/Kconfig" | 12 | source "mm/Kconfig" |
13 | source "kernel/time/Kconfig" | ||
14 | 13 | ||
15 | config LD_SCRIPT_STATIC | 14 | config LD_SCRIPT_STATIC |
16 | bool | 15 | bool |
diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig index eeb8054c7cd8..47ad5210606f 100644 --- a/arch/unicore32/Kconfig +++ b/arch/unicore32/Kconfig | |||
@@ -25,9 +25,6 @@ config HAVE_PWM | |||
25 | config GENERIC_GPIO | 25 | config GENERIC_GPIO |
26 | def_bool y | 26 | def_bool y |
27 | 27 | ||
28 | config GENERIC_CLOCKEVENTS | ||
29 | bool | ||
30 | |||
31 | config GENERIC_CSUM | 28 | config GENERIC_CSUM |
32 | def_bool y | 29 | def_bool y |
33 | 30 | ||
@@ -146,8 +143,6 @@ endmenu | |||
146 | 143 | ||
147 | menu "Kernel Features" | 144 | menu "Kernel Features" |
148 | 145 | ||
149 | source "kernel/time/Kconfig" | ||
150 | |||
151 | source "kernel/Kconfig.preempt" | 146 | source "kernel/Kconfig.preempt" |
152 | 147 | ||
153 | source "kernel/Kconfig.hz" | 148 | source "kernel/Kconfig.hz" |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 0b2d5f24c946..66cc380bebf0 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -85,6 +85,13 @@ config X86 | |||
85 | select GENERIC_SMP_IDLE_THREAD | 85 | select GENERIC_SMP_IDLE_THREAD |
86 | select HAVE_ARCH_SECCOMP_FILTER | 86 | select HAVE_ARCH_SECCOMP_FILTER |
87 | select BUILDTIME_EXTABLE_SORT | 87 | select BUILDTIME_EXTABLE_SORT |
88 | select GENERIC_CMOS_UPDATE | ||
89 | select CLOCKSOURCE_WATCHDOG | ||
90 | select GENERIC_CLOCKEVENTS | ||
91 | select ARCH_CLOCKSOURCE_DATA if X86_64 | ||
92 | select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC) | ||
93 | select GENERIC_TIME_VSYSCALL if X86_64 | ||
94 | select KTIME_SCALAR if X86_32 | ||
88 | 95 | ||
89 | config INSTRUCTION_DECODER | 96 | config INSTRUCTION_DECODER |
90 | def_bool (KPROBES || PERF_EVENTS || UPROBES) | 97 | def_bool (KPROBES || PERF_EVENTS || UPROBES) |
@@ -99,23 +106,6 @@ config ARCH_DEFCONFIG | |||
99 | default "arch/x86/configs/i386_defconfig" if X86_32 | 106 | default "arch/x86/configs/i386_defconfig" if X86_32 |
100 | default "arch/x86/configs/x86_64_defconfig" if X86_64 | 107 | default "arch/x86/configs/x86_64_defconfig" if X86_64 |
101 | 108 | ||
102 | config GENERIC_CMOS_UPDATE | ||
103 | def_bool y | ||
104 | |||
105 | config CLOCKSOURCE_WATCHDOG | ||
106 | def_bool y | ||
107 | |||
108 | config GENERIC_CLOCKEVENTS | ||
109 | def_bool y | ||
110 | |||
111 | config ARCH_CLOCKSOURCE_DATA | ||
112 | def_bool y | ||
113 | depends on X86_64 | ||
114 | |||
115 | config GENERIC_CLOCKEVENTS_BROADCAST | ||
116 | def_bool y | ||
117 | depends on X86_64 || (X86_32 && X86_LOCAL_APIC) | ||
118 | |||
119 | config LOCKDEP_SUPPORT | 109 | config LOCKDEP_SUPPORT |
120 | def_bool y | 110 | def_bool y |
121 | 111 | ||
@@ -166,10 +156,6 @@ config RWSEM_XCHGADD_ALGORITHM | |||
166 | config GENERIC_CALIBRATE_DELAY | 156 | config GENERIC_CALIBRATE_DELAY |
167 | def_bool y | 157 | def_bool y |
168 | 158 | ||
169 | config GENERIC_TIME_VSYSCALL | ||
170 | bool | ||
171 | default X86_64 | ||
172 | |||
173 | config ARCH_HAS_CPU_RELAX | 159 | config ARCH_HAS_CPU_RELAX |
174 | def_bool y | 160 | def_bool y |
175 | 161 | ||
@@ -236,9 +222,6 @@ config ARCH_HWEIGHT_CFLAGS | |||
236 | default "-fcall-saved-ecx -fcall-saved-edx" if X86_32 | 222 | default "-fcall-saved-ecx -fcall-saved-edx" if X86_32 |
237 | default "-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" if X86_64 | 223 | default "-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" if X86_64 |
238 | 224 | ||
239 | config KTIME_SCALAR | ||
240 | def_bool X86_32 | ||
241 | |||
242 | config ARCH_CPU_PROBE_RELEASE | 225 | config ARCH_CPU_PROBE_RELEASE |
243 | def_bool y | 226 | def_bool y |
244 | depends on HOTPLUG_CPU | 227 | depends on HOTPLUG_CPU |
@@ -261,8 +244,6 @@ config ZONE_DMA | |||
261 | 244 | ||
262 | If unsure, say Y. | 245 | If unsure, say Y. |
263 | 246 | ||
264 | source "kernel/time/Kconfig" | ||
265 | |||
266 | config SMP | 247 | config SMP |
267 | bool "Symmetric multi-processing support" | 248 | bool "Symmetric multi-processing support" |
268 | ---help--- | 249 | ---help--- |
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index ad0de0c2714e..9cc7b4392f7c 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c | |||
@@ -94,13 +94,18 @@ static int hpet_verbose; | |||
94 | 94 | ||
95 | static int __init hpet_setup(char *str) | 95 | static int __init hpet_setup(char *str) |
96 | { | 96 | { |
97 | if (str) { | 97 | while (str) { |
98 | char *next = strchr(str, ','); | ||
99 | |||
100 | if (next) | ||
101 | *next++ = 0; | ||
98 | if (!strncmp("disable", str, 7)) | 102 | if (!strncmp("disable", str, 7)) |
99 | boot_hpet_disable = 1; | 103 | boot_hpet_disable = 1; |
100 | if (!strncmp("force", str, 5)) | 104 | if (!strncmp("force", str, 5)) |
101 | hpet_force_user = 1; | 105 | hpet_force_user = 1; |
102 | if (!strncmp("verbose", str, 7)) | 106 | if (!strncmp("verbose", str, 7)) |
103 | hpet_verbose = 1; | 107 | hpet_verbose = 1; |
108 | str = next; | ||
104 | } | 109 | } |
105 | return 1; | 110 | return 1; |
106 | } | 111 | } |
@@ -319,8 +324,6 @@ static void hpet_set_mode(enum clock_event_mode mode, | |||
319 | now = hpet_readl(HPET_COUNTER); | 324 | now = hpet_readl(HPET_COUNTER); |
320 | cmp = now + (unsigned int) delta; | 325 | cmp = now + (unsigned int) delta; |
321 | cfg = hpet_readl(HPET_Tn_CFG(timer)); | 326 | cfg = hpet_readl(HPET_Tn_CFG(timer)); |
322 | /* Make sure we use edge triggered interrupts */ | ||
323 | cfg &= ~HPET_TN_LEVEL; | ||
324 | cfg |= HPET_TN_ENABLE | HPET_TN_PERIODIC | | 327 | cfg |= HPET_TN_ENABLE | HPET_TN_PERIODIC | |
325 | HPET_TN_SETVAL | HPET_TN_32BIT; | 328 | HPET_TN_SETVAL | HPET_TN_32BIT; |
326 | hpet_writel(cfg, HPET_Tn_CFG(timer)); | 329 | hpet_writel(cfg, HPET_Tn_CFG(timer)); |
@@ -787,15 +790,16 @@ static int hpet_clocksource_register(void) | |||
787 | return 0; | 790 | return 0; |
788 | } | 791 | } |
789 | 792 | ||
793 | static u32 *hpet_boot_cfg; | ||
794 | |||
790 | /** | 795 | /** |
791 | * hpet_enable - Try to setup the HPET timer. Returns 1 on success. | 796 | * hpet_enable - Try to setup the HPET timer. Returns 1 on success. |
792 | */ | 797 | */ |
793 | int __init hpet_enable(void) | 798 | int __init hpet_enable(void) |
794 | { | 799 | { |
795 | unsigned long hpet_period; | 800 | u32 hpet_period, cfg, id; |
796 | unsigned int id; | ||
797 | u64 freq; | 801 | u64 freq; |
798 | int i; | 802 | unsigned int i, last; |
799 | 803 | ||
800 | if (!is_hpet_capable()) | 804 | if (!is_hpet_capable()) |
801 | return 0; | 805 | return 0; |
@@ -847,15 +851,45 @@ int __init hpet_enable(void) | |||
847 | id = hpet_readl(HPET_ID); | 851 | id = hpet_readl(HPET_ID); |
848 | hpet_print_config(); | 852 | hpet_print_config(); |
849 | 853 | ||
854 | last = (id & HPET_ID_NUMBER) >> HPET_ID_NUMBER_SHIFT; | ||
855 | |||
850 | #ifdef CONFIG_HPET_EMULATE_RTC | 856 | #ifdef CONFIG_HPET_EMULATE_RTC |
851 | /* | 857 | /* |
852 | * The legacy routing mode needs at least two channels, tick timer | 858 | * The legacy routing mode needs at least two channels, tick timer |
853 | * and the rtc emulation channel. | 859 | * and the rtc emulation channel. |
854 | */ | 860 | */ |
855 | if (!(id & HPET_ID_NUMBER)) | 861 | if (!last) |
856 | goto out_nohpet; | 862 | goto out_nohpet; |
857 | #endif | 863 | #endif |
858 | 864 | ||
865 | cfg = hpet_readl(HPET_CFG); | ||
866 | hpet_boot_cfg = kmalloc((last + 2) * sizeof(*hpet_boot_cfg), | ||
867 | GFP_KERNEL); | ||
868 | if (hpet_boot_cfg) | ||
869 | *hpet_boot_cfg = cfg; | ||
870 | else | ||
871 | pr_warn("HPET initial state will not be saved\n"); | ||
872 | cfg &= ~(HPET_CFG_ENABLE | HPET_CFG_LEGACY); | ||
873 | hpet_writel(cfg, HPET_Tn_CFG(i)); | ||
874 | if (cfg) | ||
875 | pr_warn("HPET: Unrecognized bits %#x set in global cfg\n", | ||
876 | cfg); | ||
877 | |||
878 | for (i = 0; i <= last; ++i) { | ||
879 | cfg = hpet_readl(HPET_Tn_CFG(i)); | ||
880 | if (hpet_boot_cfg) | ||
881 | hpet_boot_cfg[i + 1] = cfg; | ||
882 | cfg &= ~(HPET_TN_ENABLE | HPET_TN_LEVEL | HPET_TN_FSB); | ||
883 | hpet_writel(cfg, HPET_Tn_CFG(i)); | ||
884 | cfg &= ~(HPET_TN_PERIODIC | HPET_TN_PERIODIC_CAP | ||
885 | | HPET_TN_64BIT_CAP | HPET_TN_32BIT | HPET_TN_ROUTE | ||
886 | | HPET_TN_FSB | HPET_TN_FSB_CAP); | ||
887 | if (cfg) | ||
888 | pr_warn("HPET: Unrecognized bits %#x set in cfg#%u\n", | ||
889 | cfg, i); | ||
890 | } | ||
891 | hpet_print_config(); | ||
892 | |||
859 | if (hpet_clocksource_register()) | 893 | if (hpet_clocksource_register()) |
860 | goto out_nohpet; | 894 | goto out_nohpet; |
861 | 895 | ||
@@ -923,14 +957,28 @@ fs_initcall(hpet_late_init); | |||
923 | void hpet_disable(void) | 957 | void hpet_disable(void) |
924 | { | 958 | { |
925 | if (is_hpet_capable() && hpet_virt_address) { | 959 | if (is_hpet_capable() && hpet_virt_address) { |
926 | unsigned int cfg = hpet_readl(HPET_CFG); | 960 | unsigned int cfg = hpet_readl(HPET_CFG), id, last; |
927 | 961 | ||
928 | if (hpet_legacy_int_enabled) { | 962 | if (hpet_boot_cfg) |
963 | cfg = *hpet_boot_cfg; | ||
964 | else if (hpet_legacy_int_enabled) { | ||
929 | cfg &= ~HPET_CFG_LEGACY; | 965 | cfg &= ~HPET_CFG_LEGACY; |
930 | hpet_legacy_int_enabled = 0; | 966 | hpet_legacy_int_enabled = 0; |
931 | } | 967 | } |
932 | cfg &= ~HPET_CFG_ENABLE; | 968 | cfg &= ~HPET_CFG_ENABLE; |
933 | hpet_writel(cfg, HPET_CFG); | 969 | hpet_writel(cfg, HPET_CFG); |
970 | |||
971 | if (!hpet_boot_cfg) | ||
972 | return; | ||
973 | |||
974 | id = hpet_readl(HPET_ID); | ||
975 | last = ((id & HPET_ID_NUMBER) >> HPET_ID_NUMBER_SHIFT); | ||
976 | |||
977 | for (id = 0; id <= last; ++id) | ||
978 | hpet_writel(hpet_boot_cfg[id + 1], HPET_Tn_CFG(id)); | ||
979 | |||
980 | if (*hpet_boot_cfg & HPET_CFG_ENABLE) | ||
981 | hpet_writel(*hpet_boot_cfg, HPET_CFG); | ||
934 | } | 982 | } |
935 | } | 983 | } |
936 | 984 | ||
diff --git a/include/linux/time.h b/include/linux/time.h index 33a92ead4d88..179f4d6755fc 100644 --- a/include/linux/time.h +++ b/include/linux/time.h | |||
@@ -167,7 +167,6 @@ extern void get_monotonic_boottime(struct timespec *ts); | |||
167 | extern struct timespec timespec_trunc(struct timespec t, unsigned gran); | 167 | extern struct timespec timespec_trunc(struct timespec t, unsigned gran); |
168 | extern int timekeeping_valid_for_hres(void); | 168 | extern int timekeeping_valid_for_hres(void); |
169 | extern u64 timekeeping_max_deferment(void); | 169 | extern u64 timekeeping_max_deferment(void); |
170 | extern void timekeeping_leap_insert(int leapsecond); | ||
171 | extern int timekeeping_inject_offset(struct timespec *ts); | 170 | extern int timekeeping_inject_offset(struct timespec *ts); |
172 | 171 | ||
173 | struct tms; | 172 | struct tms; |
diff --git a/init/Kconfig b/init/Kconfig index ccb5248474c2..81816b82860b 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -390,6 +390,7 @@ config AUDIT_LOGINUID_IMMUTABLE | |||
390 | but may not be backwards compatible with older init systems. | 390 | but may not be backwards compatible with older init systems. |
391 | 391 | ||
392 | source "kernel/irq/Kconfig" | 392 | source "kernel/irq/Kconfig" |
393 | source "kernel/time/Kconfig" | ||
393 | 394 | ||
394 | menu "RCU Subsystem" | 395 | menu "RCU Subsystem" |
395 | 396 | ||
diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig index a20dc8a3c949..fd42bd452b75 100644 --- a/kernel/time/Kconfig +++ b/kernel/time/Kconfig | |||
@@ -2,6 +2,55 @@ | |||
2 | # Timer subsystem related configuration options | 2 | # Timer subsystem related configuration options |
3 | # | 3 | # |
4 | 4 | ||
5 | # Options selectable by arch Kconfig | ||
6 | |||
7 | # Watchdog function for clocksources to detect instabilities | ||
8 | config CLOCKSOURCE_WATCHDOG | ||
9 | bool | ||
10 | |||
11 | # Architecture has extra clocksource data | ||
12 | config ARCH_CLOCKSOURCE_DATA | ||
13 | bool | ||
14 | |||
15 | # Timekeeping vsyscall support | ||
16 | config GENERIC_TIME_VSYSCALL | ||
17 | bool | ||
18 | |||
19 | # ktime_t scalar 64bit nsec representation | ||
20 | config KTIME_SCALAR | ||
21 | bool | ||
22 | |||
23 | # Old style timekeeping | ||
24 | config ARCH_USES_GETTIMEOFFSET | ||
25 | bool | ||
26 | |||
27 | # The generic clock events infrastructure | ||
28 | config GENERIC_CLOCKEVENTS | ||
29 | bool | ||
30 | |||
31 | # Migration helper. Builds, but does not invoke | ||
32 | config GENERIC_CLOCKEVENTS_BUILD | ||
33 | bool | ||
34 | default y | ||
35 | depends on GENERIC_CLOCKEVENTS | ||
36 | |||
37 | # Clockevents broadcasting infrastructure | ||
38 | config GENERIC_CLOCKEVENTS_BROADCAST | ||
39 | bool | ||
40 | depends on GENERIC_CLOCKEVENTS | ||
41 | |||
42 | # Automatically adjust the min. reprogramming time for | ||
43 | # clock event device | ||
44 | config GENERIC_CLOCKEVENTS_MIN_ADJUST | ||
45 | bool | ||
46 | |||
47 | # Generic update of CMOS clock | ||
48 | config GENERIC_CMOS_UPDATE | ||
49 | bool | ||
50 | |||
51 | if GENERIC_CLOCKEVENTS | ||
52 | menu "Timers subsystem" | ||
53 | |||
5 | # Core internal switch. Selected by NO_HZ / HIGH_RES_TIMERS. This is | 54 | # Core internal switch. Selected by NO_HZ / HIGH_RES_TIMERS. This is |
6 | # only related to the tick functionality. Oneshot clockevent devices | 55 | # only related to the tick functionality. Oneshot clockevent devices |
7 | # are supported independ of this. | 56 | # are supported independ of this. |
@@ -26,10 +75,5 @@ config HIGH_RES_TIMERS | |||
26 | hardware is not capable then this option only increases | 75 | hardware is not capable then this option only increases |
27 | the size of the kernel image. | 76 | the size of the kernel image. |
28 | 77 | ||
29 | config GENERIC_CLOCKEVENTS_BUILD | 78 | endmenu |
30 | bool | 79 | endif |
31 | default y | ||
32 | depends on GENERIC_CLOCKEVENTS | ||
33 | |||
34 | config GENERIC_CLOCKEVENTS_MIN_ADJUST | ||
35 | bool | ||
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index f03fd83b170b..70b33abcc7bb 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c | |||
@@ -412,6 +412,7 @@ int second_overflow(unsigned long secs) | |||
412 | if (secs % 86400 == 0) { | 412 | if (secs % 86400 == 0) { |
413 | leap = -1; | 413 | leap = -1; |
414 | time_state = TIME_OOP; | 414 | time_state = TIME_OOP; |
415 | time_tai++; | ||
415 | printk(KERN_NOTICE | 416 | printk(KERN_NOTICE |
416 | "Clock: inserting leap second 23:59:60 UTC\n"); | 417 | "Clock: inserting leap second 23:59:60 UTC\n"); |
417 | } | 418 | } |
@@ -426,7 +427,6 @@ int second_overflow(unsigned long secs) | |||
426 | } | 427 | } |
427 | break; | 428 | break; |
428 | case TIME_OOP: | 429 | case TIME_OOP: |
429 | time_tai++; | ||
430 | time_state = TIME_WAIT; | 430 | time_state = TIME_WAIT; |
431 | break; | 431 | break; |
432 | 432 | ||
@@ -473,8 +473,6 @@ int second_overflow(unsigned long secs) | |||
473 | << NTP_SCALE_SHIFT; | 473 | << NTP_SCALE_SHIFT; |
474 | time_adjust = 0; | 474 | time_adjust = 0; |
475 | 475 | ||
476 | |||
477 | |||
478 | out: | 476 | out: |
479 | spin_unlock_irqrestore(&ntp_lock, flags); | 477 | spin_unlock_irqrestore(&ntp_lock, flags); |
480 | 478 | ||
@@ -559,10 +557,10 @@ static inline void process_adj_status(struct timex *txc, struct timespec *ts) | |||
559 | /* only set allowed bits */ | 557 | /* only set allowed bits */ |
560 | time_status &= STA_RONLY; | 558 | time_status &= STA_RONLY; |
561 | time_status |= txc->status & ~STA_RONLY; | 559 | time_status |= txc->status & ~STA_RONLY; |
562 | |||
563 | } | 560 | } |
561 | |||
564 | /* | 562 | /* |
565 | * Called with the xtime lock held, so we can access and modify | 563 | * Called with ntp_lock held, so we can access and modify |
566 | * all the global NTP state: | 564 | * all the global NTP state: |
567 | */ | 565 | */ |
568 | static inline void process_adjtimex_modes(struct timex *txc, struct timespec *ts) | 566 | static inline void process_adjtimex_modes(struct timex *txc, struct timespec *ts) |
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index d66b21308f7c..6e46cacf5969 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c | |||
@@ -240,7 +240,6 @@ void getnstimeofday(struct timespec *ts) | |||
240 | 240 | ||
241 | timespec_add_ns(ts, nsecs); | 241 | timespec_add_ns(ts, nsecs); |
242 | } | 242 | } |
243 | |||
244 | EXPORT_SYMBOL(getnstimeofday); | 243 | EXPORT_SYMBOL(getnstimeofday); |
245 | 244 | ||
246 | ktime_t ktime_get(void) | 245 | ktime_t ktime_get(void) |
@@ -357,8 +356,8 @@ void do_gettimeofday(struct timeval *tv) | |||
357 | tv->tv_sec = now.tv_sec; | 356 | tv->tv_sec = now.tv_sec; |
358 | tv->tv_usec = now.tv_nsec/1000; | 357 | tv->tv_usec = now.tv_nsec/1000; |
359 | } | 358 | } |
360 | |||
361 | EXPORT_SYMBOL(do_gettimeofday); | 359 | EXPORT_SYMBOL(do_gettimeofday); |
360 | |||
362 | /** | 361 | /** |
363 | * do_settimeofday - Sets the time of day | 362 | * do_settimeofday - Sets the time of day |
364 | * @tv: pointer to the timespec variable containing the new time | 363 | * @tv: pointer to the timespec variable containing the new time |
@@ -392,7 +391,6 @@ int do_settimeofday(const struct timespec *tv) | |||
392 | 391 | ||
393 | return 0; | 392 | return 0; |
394 | } | 393 | } |
395 | |||
396 | EXPORT_SYMBOL(do_settimeofday); | 394 | EXPORT_SYMBOL(do_settimeofday); |
397 | 395 | ||
398 | 396 | ||