From 396e2c6fed4ff13b53ce0e573105531cf53b0cad Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 2 Apr 2012 15:15:55 +0100 Subject: x86: Clear HPET configuration registers on startup While Linux itself has been calling hpet_disable() for quite a while, having e.g. a secondary (kexec) kernel depend on such behavior of the primary (crashed) environment is fragile. It particularly broke until very recently when the primary environment was Xen based, as that hypervisor did not clear any of the HPET settings it may have used. Rather than blindly (and incompletely) clearing certain HPET settings in hpet_disable(), latch the config register settings during boot and restore then here. (Note on the hpet_set_mode() change: Now that we're clearing the level bit upon initialization, there's no need anymore to do so here.) Signed-off-by: Jan Beulich Link: http://lkml.kernel.org/r/4F79D0BB020000780007C02D@nat28.tlf.novell.com Signed-off-by: Ingo Molnar diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index ad0de0c..70bce5d 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c @@ -319,8 +319,6 @@ static void hpet_set_mode(enum clock_event_mode mode, now = hpet_readl(HPET_COUNTER); cmp = now + (unsigned int) delta; cfg = hpet_readl(HPET_Tn_CFG(timer)); - /* Make sure we use edge triggered interrupts */ - cfg &= ~HPET_TN_LEVEL; cfg |= HPET_TN_ENABLE | HPET_TN_PERIODIC | HPET_TN_SETVAL | HPET_TN_32BIT; hpet_writel(cfg, HPET_Tn_CFG(timer)); @@ -787,15 +785,16 @@ static int hpet_clocksource_register(void) return 0; } +static u32 *hpet_boot_cfg; + /** * hpet_enable - Try to setup the HPET timer. Returns 1 on success. */ int __init hpet_enable(void) { - unsigned long hpet_period; - unsigned int id; + u32 hpet_period, cfg, id; u64 freq; - int i; + unsigned int i, last; if (!is_hpet_capable()) return 0; @@ -847,15 +846,45 @@ int __init hpet_enable(void) id = hpet_readl(HPET_ID); hpet_print_config(); + last = (id & HPET_ID_NUMBER) >> HPET_ID_NUMBER_SHIFT; + #ifdef CONFIG_HPET_EMULATE_RTC /* * The legacy routing mode needs at least two channels, tick timer * and the rtc emulation channel. */ - if (!(id & HPET_ID_NUMBER)) + if (!last) goto out_nohpet; #endif + cfg = hpet_readl(HPET_CFG); + hpet_boot_cfg = kmalloc((last + 2) * sizeof(*hpet_boot_cfg), + GFP_KERNEL); + if (hpet_boot_cfg) + *hpet_boot_cfg = cfg; + else + pr_warn("HPET initial state will not be saved\n"); + cfg &= ~(HPET_CFG_ENABLE | HPET_CFG_LEGACY); + hpet_writel(cfg, HPET_Tn_CFG(i)); + if (cfg) + pr_warn("HPET: Unrecognized bits %#x set in global cfg\n", + cfg); + + for (i = 0; i <= last; ++i) { + cfg = hpet_readl(HPET_Tn_CFG(i)); + if (hpet_boot_cfg) + hpet_boot_cfg[i + 1] = cfg; + cfg &= ~(HPET_TN_ENABLE | HPET_TN_LEVEL | HPET_TN_FSB); + hpet_writel(cfg, HPET_Tn_CFG(i)); + cfg &= ~(HPET_TN_PERIODIC | HPET_TN_PERIODIC_CAP + | HPET_TN_64BIT_CAP | HPET_TN_32BIT | HPET_TN_ROUTE + | HPET_TN_FSB | HPET_TN_FSB_CAP); + if (cfg) + pr_warn("HPET: Unrecognized bits %#x set in cfg#%u\n", + cfg, i); + } + hpet_print_config(); + if (hpet_clocksource_register()) goto out_nohpet; @@ -923,14 +952,28 @@ fs_initcall(hpet_late_init); void hpet_disable(void) { if (is_hpet_capable() && hpet_virt_address) { - unsigned int cfg = hpet_readl(HPET_CFG); + unsigned int cfg = hpet_readl(HPET_CFG), id, last; - if (hpet_legacy_int_enabled) { + if (hpet_boot_cfg) + cfg = *hpet_boot_cfg; + else if (hpet_legacy_int_enabled) { cfg &= ~HPET_CFG_LEGACY; hpet_legacy_int_enabled = 0; } cfg &= ~HPET_CFG_ENABLE; hpet_writel(cfg, HPET_CFG); + + if (!hpet_boot_cfg) + return; + + id = hpet_readl(HPET_ID); + last = ((id & HPET_ID_NUMBER) >> HPET_ID_NUMBER_SHIFT); + + for (id = 0; id <= last; ++id) + hpet_writel(hpet_boot_cfg[id + 1], HPET_Tn_CFG(id)); + + if (*hpet_boot_cfg & HPET_CFG_ENABLE) + hpet_writel(*hpet_boot_cfg, HPET_CFG); } } -- cgit v0.10.2 From b2d6aba9657c7e3d027dd43ac7d7c405e0079d46 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 2 Apr 2012 15:17:36 +0100 Subject: x86: Allow multiple values to be specified with "hpet=" This is particularly to be able to specify "hpet=force,verbose", as "force" ought to be a primary candidate for also wanting to use "verbose". Signed-off-by: Jan Beulich Link: http://lkml.kernel.org/r/4F79D120020000780007C031@nat28.tlf.novell.com Signed-off-by: Ingo Molnar diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index 70bce5d..9cc7b43 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c @@ -94,13 +94,18 @@ static int hpet_verbose; static int __init hpet_setup(char *str) { - if (str) { + while (str) { + char *next = strchr(str, ','); + + if (next) + *next++ = 0; if (!strncmp("disable", str, 7)) boot_hpet_disable = 1; if (!strncmp("force", str, 5)) hpet_force_user = 1; if (!strncmp("verbose", str, 7)) hpet_verbose = 1; + str = next; } return 1; } -- cgit v0.10.2 From b5e498ad67863cc877fb05e6a71ce58eda4fb2ca Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 18 May 2012 09:59:57 +0200 Subject: timers: Provide generic Kconfig switches We really don't want all the arch code defining stuff over and over. [ anna-maria: Added missing GENERIC_CMOS_UPDATE switch ] Signed-off-by: Thomas Gleixner Signed-off-by: Anna-Maria Gleixner Cc: Paul Mundt Link: http://lkml.kernel.org/r/1337529587.3208.2.camel@dionysos Acked-by: Sam Ravnborg diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig index a20dc8a..f6ebc4f 100644 --- a/kernel/time/Kconfig +++ b/kernel/time/Kconfig @@ -33,3 +33,38 @@ config GENERIC_CLOCKEVENTS_BUILD config GENERIC_CLOCKEVENTS_MIN_ADJUST bool + +# Options selectable by arch Kconfig + +# Watchdog function for clocksources to detect instabilities +config CLOCKSOURCE_WATCHDOG + bool + +# Architecture has extra clocksource data +config ARCH_CLOCKSOURCE_DATA + bool + +# Timekeeping vsyscall support +config GENERIC_TIME_VSYSCALL + bool + +# ktime_t scalar 64bit nsec representation +config KTIME_SCALAR + bool + +# Old style timekeeping +config ARCH_USES_GETTIMEOFFSET + bool + +# The generic clock events infrastructure +config GENERIC_CLOCKEVENTS + bool + +# Clockevents broadcasting infrastructure +config GENERIC_CLOCKEVENTS_BROADCAST + bool + depends on GENERIC_CLOCKEVENTS + +# Generic update of CMOS clock +config GENERIC_CMOS_UPDATE + bool -- cgit v0.10.2 From 6e24f31eab6af44043e9d432bde415c1b4ca1a9e Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:56 +0000 Subject: alpha: Use generic time config Signed-off-by: Anna-Maria Gleixner Acked-by: Matt Turner Link: http://lkml.kernel.org/r/20120518163107.510619939@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 22e58a9..77ba268 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig @@ -15,6 +15,7 @@ config ALPHA select GENERIC_IRQ_SHOW select ARCH_WANT_OPTIONAL_GPIOLIB select ARCH_HAVE_NMI_SAFE_CMPXCHG + select GENERIC_CMOS_UPDATE help The Alpha is a 64-bit general-purpose processor designed and marketed by the Digital Equipment Corporation of blessed memory, @@ -47,9 +48,6 @@ config GENERIC_CALIBRATE_DELAY bool default y -config GENERIC_CMOS_UPDATE - def_bool y - config GENERIC_GPIO bool -- cgit v0.10.2 From 3d92a71a4467681ef6a47e10447d200b52c78af8 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:44 +0000 Subject: arm: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Russell King Link: http://lkml.kernel.org/r/20120518163104.760560327@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 36586dba..feccc1d 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -34,6 +34,8 @@ config ARM select CPU_PM if (SUSPEND || CPU_IDLE) select GENERIC_PCI_IOMAP select HAVE_BPF_JIT if NET + select KTIME_SCALAR + select GENERIC_CLOCKEVENTS_BROADCAST if SMP help The ARM series is a line of low-power-consumption RISC chip designs licensed by ARM Ltd and targeted at embedded applications and @@ -57,22 +59,6 @@ config SYS_SUPPORTS_APM_EMULATION config GENERIC_GPIO bool -config ARCH_USES_GETTIMEOFFSET - bool - default n - -config GENERIC_CLOCKEVENTS - bool - -config GENERIC_CLOCKEVENTS_BROADCAST - bool - depends on GENERIC_CLOCKEVENTS - default y if SMP - -config KTIME_SCALAR - bool - default y - config HAVE_TCM bool select GENERIC_ALLOCATOR -- cgit v0.10.2 From 8d6af9914cacfbb60537cf5c46f9ebfc26ff2440 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:45 +0000 Subject: avr32: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Haavard Skinnemoen Link: http://lkml.kernel.org/r/20120518163104.889514832@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index 3dea7231..0bd13ab 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig @@ -12,6 +12,7 @@ config AVR32 select HARDIRQS_SW_RESEND select GENERIC_IRQ_SHOW select ARCH_HAVE_NMI_SAFE_CMPXCHG + select GENERIC_CLOCKEVENTS help AVR32 is a high-performance 32-bit RISC microprocessor core, designed for cost-sensitive embedded applications, with particular @@ -35,9 +36,6 @@ config TRACE_IRQFLAGS_SUPPORT config RWSEM_GENERIC_SPINLOCK def_bool y -config GENERIC_CLOCKEVENTS - def_bool y - config RWSEM_XCHGADD_ALGORITHM def_bool n -- cgit v0.10.2 From dfbaec06bd80117f8ed944236efab8fb32cd4f68 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:45 +0000 Subject: blackfin: Use generic time config Use seperate selector for clockevents. Signed-off-by: Anna-Maria Gleixner Cc: Mike Frysinger Link: http://lkml.kernel.org/r/20120518163105.026597932@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 373a690..bc21de2 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig @@ -37,6 +37,7 @@ config BLACKFIN select GENERIC_IRQ_PROBE select IRQ_PER_CPU if SMP select HAVE_NMI_WATCHDOG if NMI_WATCHDOG + select ARCH_USES_GETTIMEOFFSET if !GENERIC_CLOCKEVENTS config GENERIC_CSUM def_bool y @@ -593,9 +594,10 @@ comment "Kernel Timer/Scheduler" source kernel/Kconfig.hz -config GENERIC_CLOCKEVENTS +config SET_GENERIC_CLOCKEVENTS bool "Generic clock events" default y + select GENERIC_CLOCKEVENTS menu "Clock event device" depends on GENERIC_CLOCKEVENTS @@ -629,10 +631,6 @@ config GPTMR0_CLOCKSOURCE depends on !TICKSOURCE_GPTMR0 endmenu -config ARCH_USES_GETTIMEOFFSET - depends on !GENERIC_CLOCKEVENTS - def_bool y - source kernel/time/Kconfig comment "Misc" -- cgit v0.10.2 From 6220443db41899606a8621215e0f6e99477f7152 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:46 +0000 Subject: c6x: Use generic time config Signed-off-by: Anna-Maria Gleixner Acked-by: Mark Salter Link: http://lkml.kernel.org/r/20120518163105.156595383@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig index 1c3ccd4..30c04c6 100644 --- a/arch/c6x/Kconfig +++ b/arch/c6x/Kconfig @@ -15,6 +15,7 @@ config TMS320C6X select IRQ_DOMAIN select OF select OF_EARLY_FLATTREE + select GENERIC_CLOCKEVENTS config MMU def_bool n @@ -43,12 +44,6 @@ config GENERIC_CALIBRATE_DELAY config GENERIC_HWEIGHT def_bool y -config GENERIC_CLOCKEVENTS - def_bool y - -config GENERIC_CLOCKEVENTS_BROADCAST - bool - config GENERIC_BUG def_bool y -- cgit v0.10.2 From 5227b636eca4226287e43fc1de1e09a694bcaa34 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:46 +0000 Subject: cris: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Jesper Nilsson Link: http://lkml.kernel.org/r/20120518163105.286556794@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index b3abfb0..4a63e7e 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig @@ -13,12 +13,6 @@ config RWSEM_GENERIC_SPINLOCK config RWSEM_XCHGADD_ALGORITHM bool -config GENERIC_CMOS_UPDATE - def_bool y - -config ARCH_USES_GETTIMEOFFSET - def_bool n - config ARCH_HAS_ILOG2_U32 bool default n @@ -49,6 +43,7 @@ config CRIS select HAVE_GENERIC_HARDIRQS select GENERIC_IRQ_SHOW select GENERIC_IOMAP + select GENERIC_CMOS_UPDATE config HZ int -- cgit v0.10.2 From 24a6f35e192ed54205024742eb8a4a2f99c1da9d Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:47 +0000 Subject: hexagon: Use generic time config config GENERIC_TIME not longer used. Signed-off-by: Anna-Maria Gleixner Cc: Richard Kuo Link: http://lkml.kernel.org/r/20120518163105.416570309@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig index 9059e39..7727ed9 100644 --- a/arch/hexagon/Kconfig +++ b/arch/hexagon/Kconfig @@ -28,6 +28,9 @@ config HEXAGON select NO_IOPORT select GENERIC_IOMAP # mostly generic routines, with some accelerated ones + select KTIME_SCALAR + select GENERIC_CLOCKEVENTS + select GENERIC_CLOCKEVENTS_BROADCAST ---help--- Qualcomm Hexagon is a processor architecture designed for high performance and low power across a wide variety of applications. @@ -56,9 +59,6 @@ config PCI config EARLY_PRINTK def_bool y -config KTIME_SCALAR - def_bool y - config MMU def_bool y @@ -98,15 +98,6 @@ config GENERIC_FIND_NEXT_BIT config GENERIC_HWEIGHT def_bool y -config GENERIC_TIME - def_bool y - -config GENERIC_CLOCKEVENTS - def_bool y - -config GENERIC_CLOCKEVENTS_BROADCAST - def_bool y - config STACKTRACE_SUPPORT def_bool y select STACKTRACE -- cgit v0.10.2 From 21b19710a2fbbec3d81e7cb4d74a8ea4f0acfeea Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:48 +0000 Subject: ia64: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Tony Luck Link: http://lkml.kernel.org/r/20120518163105.547603093@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index bd72669..9f9d57b 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -33,6 +33,8 @@ config IA64 select ARCH_WANT_OPTIONAL_GPIOLIB select ARCH_HAVE_NMI_SAFE_CMPXCHG select GENERIC_IOMAP + select ARCH_CLOCKSOURCE_DATA + select GENERIC_TIME_VSYSCALL default y help The Itanium Processor Family is Intel's 64-bit successor to @@ -88,10 +90,6 @@ config GENERIC_CALIBRATE_DELAY bool default y -config GENERIC_TIME_VSYSCALL - bool - default y - config HAVE_SETUP_PER_CPU_AREA def_bool y @@ -106,9 +104,6 @@ config EFI bool default y -config ARCH_CLOCKSOURCE_DATA - def_bool y - config SCHED_OMIT_FRAME_POINTER bool default y -- cgit v0.10.2 From 97a1c1e918f6cf746352f565f5f2e00916309ede Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:48 +0000 Subject: m32r: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Hirokazu Takata Link: http://lkml.kernel.org/r/20120518163105.678581749@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig index ef80a65..b638d5b 100644 --- a/arch/m32r/Kconfig +++ b/arch/m32r/Kconfig @@ -11,6 +11,7 @@ config M32R select GENERIC_IRQ_PROBE select GENERIC_IRQ_SHOW select GENERIC_ATOMIC64 + select ARCH_USES_GETTIMEOFFSET config SBUS bool @@ -33,9 +34,6 @@ config HZ int default 100 -config ARCH_USES_GETTIMEOFFSET - def_bool y - source "init/Kconfig" source "kernel/Kconfig.freezer" -- cgit v0.10.2 From 60a5e4c3d3df6ec9006576935953dde6cf94f02a Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:49 +0000 Subject: m68k: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Geert Uytterhoeven Link: http://lkml.kernel.org/r/20120518163105.808606368@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index d318c60..2f4b0f0 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig @@ -8,6 +8,7 @@ config M68K select ARCH_HAVE_NMI_SAFE_CMPXCHG if RMW_INSNS select GENERIC_CPU_DEVICES select FPU if MMU + select ARCH_USES_GETTIMEOFFSET if MMU && !COLDFIRE config RWSEM_GENERIC_SPINLOCK bool @@ -22,9 +23,6 @@ config ARCH_HAS_ILOG2_U32 config ARCH_HAS_ILOG2_U64 bool -config GENERIC_CLOCKEVENTS - bool - config GENERIC_GPIO bool @@ -43,9 +41,6 @@ config TIME_LOW_RES bool default y -config ARCH_USES_GETTIMEOFFSET - def_bool MMU && !COLDFIRE - config NO_IOPORT def_bool y -- cgit v0.10.2 From d6412e2bdcd8dae1d502b49aff418275742d2887 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:49 +0000 Subject: microblaze: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Michal Simek Link: http://lkml.kernel.org/r/20120518163105.939597527@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index ac22dc7..3e786ac 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig @@ -22,6 +22,7 @@ config MICROBLAZE select GENERIC_PCI_IOMAP select GENERIC_CPU_DEVICES select GENERIC_ATOMIC64 + select GENERIC_CLOCKEVENTS config SWAP def_bool n @@ -50,12 +51,6 @@ config GENERIC_HWEIGHT config GENERIC_CALIBRATE_DELAY def_bool y -config GENERIC_TIME_VSYSCALL - def_bool n - -config GENERIC_CLOCKEVENTS - def_bool y - config GENERIC_GPIO def_bool y -- cgit v0.10.2 From cde1794b069f44ca02f3f4f50a903e9361132244 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:50 +0000 Subject: mips: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Ralf Baechle Link: http://lkml.kernel.org/r/20120518163106.073559820@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index ce30e2f..c9c330b 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -29,6 +29,8 @@ config MIPS select HAVE_MEMBLOCK select HAVE_MEMBLOCK_NODE_MAP select ARCH_DISCARD_MEMBLOCK + select GENERIC_CLOCKEVENTS + select GENERIC_CMOS_UPDATE menu "Machine selection" @@ -856,14 +858,6 @@ config GENERIC_CALIBRATE_DELAY bool default y -config GENERIC_CLOCKEVENTS - bool - default y - -config GENERIC_CMOS_UPDATE - bool - default y - config SCHED_OMIT_FRAME_POINTER bool default y @@ -2050,9 +2044,6 @@ config CPU_HAS_SYNC depends on !CPU_R3000 default y -config GENERIC_CLOCKEVENTS_BROADCAST - bool - # # CPU non-features # -- cgit v0.10.2 From ea5332098e68e2380429ce8025996fad61ca28a6 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:50 +0000 Subject: mn10300: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: David Howells Link: http://lkml.kernel.org/r/20120518163106.201635926@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig index 3aa3de0..7f78057 100644 --- a/arch/mn10300/Kconfig +++ b/arch/mn10300/Kconfig @@ -6,6 +6,7 @@ config MN10300 select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_KGDB select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER + select GENERIC_CLOCKEVENTS config AM33_2 def_bool n @@ -42,15 +43,9 @@ config RWSEM_XCHGADD_ALGORITHM config GENERIC_CALIBRATE_DELAY def_bool y -config GENERIC_CMOS_UPDATE - def_bool n - config GENERIC_HWEIGHT def_bool y -config GENERIC_CLOCKEVENTS - def_bool y - config GENERIC_BUG def_bool y -- cgit v0.10.2 From b9ed27dfcd8b68de90dc285acd9e7c7113964888 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:51 +0000 Subject: powerpc: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Benjamin Herrenschmidt Link: http://lkml.kernel.org/r/20120518163106.464567389@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index feab3ba..901215f 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -27,15 +27,6 @@ config MMU bool default y -config GENERIC_CMOS_UPDATE - def_bool y - -config GENERIC_TIME_VSYSCALL - def_bool y - -config GENERIC_CLOCKEVENTS - def_bool y - config HAVE_SETUP_PER_CPU_AREA def_bool PPC64 @@ -144,6 +135,9 @@ config PPC select HAVE_BPF_JIT if (PPC64 && NET) select HAVE_ARCH_JUMP_LABEL select ARCH_HAVE_NMI_SAFE_CMPXCHG + select GENERIC_CMOS_UPDATE + select GENERIC_TIME_VSYSCALL + select GENERIC_CLOCKEVENTS config EARLY_PRINTK bool -- cgit v0.10.2 From 5bf8f6bfc950abe23927e0ff54cdb260d19d608e Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:51 +0000 Subject: openrisc: Use generic time config Signed-off-by: Anna-Maria Gleixner Acked-by: Jonas Bonn Link: http://lkml.kernel.org/r/20120518163106.333611712@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig index a478719..be04485 100644 --- a/arch/openrisc/Kconfig +++ b/arch/openrisc/Kconfig @@ -17,6 +17,7 @@ config OPENRISC select GENERIC_IOMAP select GENERIC_CPU_DEVICES select GENERIC_ATOMIC64 + select GENERIC_CLOCKEVENTS config MMU def_bool y @@ -46,9 +47,6 @@ config NO_IOPORT config GENERIC_GPIO def_bool y -config GENERIC_CLOCKEVENTS - def_bool y - config TRACE_IRQFLAGS_SUPPORT def_bool y -- cgit v0.10.2 From a6527b92e40f48b29c31be911c3d62eec484cf70 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:52 +0000 Subject: s390: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Martin Schwidefsky Link: http://lkml.kernel.org/r/20120518163106.595607369@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 9015060..f9edb93 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -28,12 +28,6 @@ config ARCH_HAS_ILOG2_U64 config GENERIC_HWEIGHT def_bool y -config GENERIC_TIME_VSYSCALL - def_bool y - -config GENERIC_CLOCKEVENTS - def_bool y - config GENERIC_BUG def_bool y if BUG @@ -122,6 +116,9 @@ config S390 select ARCH_INLINE_WRITE_UNLOCK_BH select ARCH_INLINE_WRITE_UNLOCK_IRQ select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE + select GENERIC_TIME_VSYSCALL + select GENERIC_CLOCKEVENTS + select KTIME_SCALAR if 32BIT config SCHED_OMIT_FRAME_POINTER def_bool y @@ -146,9 +143,6 @@ config 64BIT config 32BIT def_bool y if !64BIT -config KTIME_SCALAR - def_bool 32BIT - config SMP def_bool y prompt "Symmetric multi-processing support" -- cgit v0.10.2 From 43229d1e0976e42069cbc8cab99273183becd0ec Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:52 +0000 Subject: score: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Chen Liqin Link: http://lkml.kernel.org/r/20120518163106.727602709@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/score/Kconfig b/arch/score/Kconfig index 4b28577..f5d3b32 100644 --- a/arch/score/Kconfig +++ b/arch/score/Kconfig @@ -9,6 +9,7 @@ config SCORE select HAVE_MEMBLOCK_NODE_MAP select ARCH_DISCARD_MEMBLOCK select GENERIC_CPU_DEVICES + select GENERIC_CLOCKEVENTS choice prompt "System type" @@ -51,9 +52,6 @@ config GENERIC_HWEIGHT config GENERIC_CALIBRATE_DELAY def_bool y -config GENERIC_CLOCKEVENTS - def_bool y - menu "Kernel type" config 32BIT -- cgit v0.10.2 From 8cf200d8d01e71e8708a883a9cd0439cda6c2432 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:53 +0000 Subject: sh: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Paul Mundt Link: http://lkml.kernel.org/r/20120518163106.857566635@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index ff9e033..cffd8b0 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -28,6 +28,8 @@ config SUPERH select RTC_LIB select GENERIC_ATOMIC64 select GENERIC_IRQ_SHOW + select GENERIC_CLOCKEVENTS + select GENERIC_CMOS_UPDATE if SH_SH03 || SH_DREAMCAST help The SuperH is a RISC processor targeted for use in embedded systems and consumer electronics; it was also used in the Sega Dreamcast @@ -86,16 +88,6 @@ config GENERIC_GPIO config GENERIC_CALIBRATE_DELAY bool -config GENERIC_CLOCKEVENTS - def_bool y - -config GENERIC_CLOCKEVENTS_BROADCAST - bool - -config GENERIC_CMOS_UPDATE - def_bool y - depends on SH_SH03 || SH_DREAMCAST - config GENERIC_LOCKBREAK def_bool y depends on SMP && PREEMPT -- cgit v0.10.2 From ded1cc5cfc3b4bc007fe3bb8fbfd9e66d8d667d7 Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:54 +0000 Subject: sparc: Use: generic time config Signed-off-by: Anna-Maria Gleixner Cc: David S. Miller Link: http://lkml.kernel.org/r/20120518163106.987564297@glx-um.de Acked-by: Sam Ravnborg Signed-off-by: Thomas Gleixner diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 6c0683d..33399d3 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -30,11 +30,13 @@ config SPARC select USE_GENERIC_SMP_HELPERS if SMP select GENERIC_PCI_IOMAP select HAVE_NMI_WATCHDOG if SPARC64 + select GENERIC_CMOS_UPDATE config SPARC32 def_bool !64BIT select GENERIC_ATOMIC64 select CLZ_TAB + select ARCH_USES_GETTIMEOFFSET config SPARC64 def_bool 64BIT @@ -61,6 +63,7 @@ config SPARC64 select IRQ_PREFLOW_FASTEOI select ARCH_HAVE_NMI_SAFE_CMPXCHG select HAVE_C_RECORDMCOUNT + select GENERIC_CLOCKEVENTS config ARCH_DEFCONFIG string @@ -73,18 +76,6 @@ config BITS default 32 if SPARC32 default 64 if SPARC64 -config ARCH_USES_GETTIMEOFFSET - bool - default y if SPARC32 - -config GENERIC_CMOS_UPDATE - bool - default y - -config GENERIC_CLOCKEVENTS - bool - default y if SPARC64 - config IOMMU_HELPER bool default y if SPARC64 -- cgit v0.10.2 From 4ec008d630d9d96579b5911c140bb8de2aa68f0e Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:54 +0000 Subject: tile: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Chris Metcalf Link: http://lkml.kernel.org/r/20120518163107.122560037@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig index 96033e2..b56772c 100644 --- a/arch/tile/Kconfig +++ b/arch/tile/Kconfig @@ -13,6 +13,7 @@ config TILE select GENERIC_IRQ_SHOW select SYS_HYPERVISOR select ARCH_HAVE_NMI_SAFE_CMPXCHG + select GENERIC_CLOCKEVENTS # FIXME: investigate whether we need/want these options. # select HAVE_IOREMAP_PROT @@ -46,9 +47,6 @@ config NEED_PER_CPU_PAGE_FIRST_CHUNK config SYS_SUPPORTS_HUGETLBFS def_bool y -config GENERIC_CLOCKEVENTS - def_bool y - # FIXME: tilegx can implement a more efficient rwsem. config RWSEM_GENERIC_SPINLOCK def_bool y -- cgit v0.10.2 From 875c9d09b5a6400d6882b0e6e828862a73ce739d Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:55 +0000 Subject: um: Use generic time config Signed-off-by: Anna-Maria Gleixner Acked-by: Richard Weinberger Link: http://lkml.kernel.org/r/20120518163107.251597655@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/um/Kconfig.common b/arch/um/Kconfig.common index 20a49ba..806185d 100644 --- a/arch/um/Kconfig.common +++ b/arch/um/Kconfig.common @@ -10,6 +10,7 @@ config UML select GENERIC_IRQ_SHOW select GENERIC_CPU_DEVICES select GENERIC_IO + select GENERIC_CLOCKEVENTS config MMU bool @@ -52,10 +53,6 @@ config GENERIC_BUG default y depends on BUG -config GENERIC_CLOCKEVENTS - bool - default y - # Used in kernel/irq/manage.c and include/linux/irq.h config IRQ_RELEASE_METHOD bool -- cgit v0.10.2 From 22bc48f986d21d0a8d80a642c7c4e87c11f42a5d Mon Sep 17 00:00:00 2001 From: Anna-Maria Gleixner Date: Fri, 18 May 2012 16:45:55 +0000 Subject: unicore32: Use generic time config Signed-off-by: Anna-Maria Gleixner Cc: Guan Xuetao Link: http://lkml.kernel.org/r/20120518163107.383567224@glx-um.de Signed-off-by: Thomas Gleixner diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig index eeb8054..a25ca76 100644 --- a/arch/unicore32/Kconfig +++ b/arch/unicore32/Kconfig @@ -25,9 +25,6 @@ config HAVE_PWM config GENERIC_GPIO def_bool y -config GENERIC_CLOCKEVENTS - bool - config GENERIC_CSUM def_bool y -- cgit v0.10.2 From bdebaf80a02b854381fe212e0dac13c8c8edac57 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 18 May 2012 16:45:44 +0000 Subject: x86: Use generic time config Signed-off-by: Thomas Gleixner Signed-off-by: Anna-Maria Gleixner Link: http://lkml.kernel.org/r/20120518163104.630579708@glx-um.de Cc: x86@kernel.org diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index c9866b0..3b0a921 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -82,6 +82,13 @@ config X86 select ARCH_HAVE_NMI_SAFE_CMPXCHG select GENERIC_IOMAP select DCACHE_WORD_ACCESS + select GENERIC_CMOS_UPDATE + select CLOCKSOURCE_WATCHDOG + select GENERIC_CLOCKEVENTS + select ARCH_CLOCKSOURCE_DATA if X86_64 + select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC) + select GENERIC_TIME_VSYSCALL if X86_64 + select KTIME_SCALAR if X86_32 config INSTRUCTION_DECODER def_bool (KPROBES || PERF_EVENTS) @@ -96,23 +103,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_CMOS_UPDATE - def_bool y - -config CLOCKSOURCE_WATCHDOG - def_bool y - -config GENERIC_CLOCKEVENTS - def_bool y - -config ARCH_CLOCKSOURCE_DATA - def_bool y - depends on X86_64 - -config GENERIC_CLOCKEVENTS_BROADCAST - def_bool y - depends on X86_64 || (X86_32 && X86_LOCAL_APIC) - config LOCKDEP_SUPPORT def_bool y @@ -166,10 +156,6 @@ config ARCH_HAS_CPU_IDLE_WAIT config GENERIC_CALIBRATE_DELAY def_bool y -config GENERIC_TIME_VSYSCALL - bool - default X86_64 - config ARCH_HAS_CPU_RELAX def_bool y @@ -236,9 +222,6 @@ config ARCH_HWEIGHT_CFLAGS default "-fcall-saved-ecx -fcall-saved-edx" if X86_32 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 -config KTIME_SCALAR - def_bool X86_32 - config ARCH_CPU_PROBE_RELEASE def_bool y depends on HOTPLUG_CPU -- cgit v0.10.2 From 764e0da14fd7ac2d259d98d34ece0a87d32306c9 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 21 May 2012 23:16:18 +0200 Subject: timers: Fixup the Kconfig consolidation fallout Sigh, I missed to check which architecture Kconfig files actually include the core Kconfig file. There are a few which did not. So we broke them. Instead of adding the includes to those, we are better off to move the include to init/Kconfig like we did already with irqs and others. This does not change anything for the architectures using the old style periodic timer mode. It just solves the build wreckage there. For those architectures which use the clock events infrastructure it moves the include of the core Kconfig file to "General setup" which is a way more logical place than having it at random locations specified by the architecture specific Kconfigs. Reported-by: Ingo Molnar Cc: Anna-Maria Gleixner Signed-off-by: Thomas Gleixner diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index feccc1d..c1e5f07 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1459,8 +1459,6 @@ endmenu menu "Kernel Features" -source "kernel/time/Kconfig" - config HAVE_SMP bool help diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index 0bd13ab..f8bc2d2 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig @@ -61,8 +61,6 @@ source "kernel/Kconfig.freezer" menu "System Type and features" -source "kernel/time/Kconfig" - config SUBARCH_AVR32B bool config MMU diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index bc21de2..f7897ee 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig @@ -631,8 +631,6 @@ config GPTMR0_CLOCKSOURCE depends on !TICKSOURCE_GPTMR0 endmenu -source kernel/time/Kconfig - comment "Misc" choice diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig index 30c04c6..9d446ef 100644 --- a/arch/c6x/Kconfig +++ b/arch/c6x/Kconfig @@ -132,7 +132,6 @@ source "mm/Kconfig" source "kernel/Kconfig.preempt" source "kernel/Kconfig.hz" -source "kernel/time/Kconfig" endmenu diff --git a/arch/h8300/Kconfig.cpu b/arch/h8300/Kconfig.cpu index 15c2228..321f392 100644 --- a/arch/h8300/Kconfig.cpu +++ b/arch/h8300/Kconfig.cpu @@ -1,7 +1,5 @@ menu "Processor type and features" -source "kernel/time/Kconfig" - choice prompt "H8/300 platform" default H8300H_GENERIC diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig index 7727ed9..35f6c32 100644 --- a/arch/hexagon/Kconfig +++ b/arch/hexagon/Kconfig @@ -183,7 +183,6 @@ endchoice source "mm/Kconfig" source "kernel/Kconfig.hz" -source "kernel/time/Kconfig" config GENERIC_GPIO bool "Generic GPIO support" diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 2f4b0f0..cac5b6b 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig @@ -106,10 +106,6 @@ if COLDFIRE source "kernel/Kconfig.preempt" endif -if !MMU || COLDFIRE -source "kernel/time/Kconfig" -endif - source "mm/Kconfig" endmenu diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index 3e786ac..8346046 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig @@ -74,8 +74,6 @@ source "arch/microblaze/platform/Kconfig.platform" menu "Processor type and features" -source "kernel/time/Kconfig" - source "kernel/Kconfig.preempt" source "kernel/Kconfig.hz" diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index c9c330b..b65a730 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -2205,8 +2205,6 @@ config NR_CPUS performance should round up your number of processors to the next power of two. -source "kernel/time/Kconfig" - # # Timer Interrupt Frequency Configuration # diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig index 7f78057..687f9b4 100644 --- a/arch/mn10300/Kconfig +++ b/arch/mn10300/Kconfig @@ -226,7 +226,6 @@ config MN10300_USING_JTAG single-stepping, which are taken over completely by the JTAG unit. source "kernel/Kconfig.hz" -source "kernel/time/Kconfig" config MN10300_RTC bool "Using MN10300 RTC" diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig index be04485..7065303 100644 --- a/arch/openrisc/Kconfig +++ b/arch/openrisc/Kconfig @@ -106,7 +106,6 @@ config OPENRISC_HAVE_INST_DIV endmenu -source "kernel/time/Kconfig" source kernel/Kconfig.hz source kernel/Kconfig.preempt source "mm/Kconfig" diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 901215f..d47cf7f 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -278,7 +278,6 @@ config HIGHMEM bool "High memory support" depends on PPC32 -source kernel/time/Kconfig source kernel/Kconfig.hz source kernel/Kconfig.preempt source "fs/Kconfig.binfmt" diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index f9edb93..d0325d9 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -131,8 +131,6 @@ menu "Base setup" comment "Processor type and features" -source "kernel/time/Kconfig" - config 64BIT def_bool y prompt "64 bit kernel" diff --git a/arch/score/Kconfig b/arch/score/Kconfig index f5d3b32..ba0f412 100644 --- a/arch/score/Kconfig +++ b/arch/score/Kconfig @@ -66,7 +66,6 @@ config MEMORY_START hex default 0xa0000000 -source "kernel/time/Kconfig" source "kernel/Kconfig.hz" source "kernel/Kconfig.preempt" diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index cffd8b0..820dfe3 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -577,9 +577,6 @@ config SH_CLK_CPG_LEGACY depends on SH_CLK_CPG def_bool y if !CPU_SUBTYPE_SH7785 && !ARCH_SHMOBILE && \ !CPU_SHX3 && !CPU_SUBTYPE_SH7757 - -source "kernel/time/Kconfig" - endmenu menu "CPU Frequency scaling" diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 33399d3..b5a035a 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -266,8 +266,6 @@ config HOTPLUG_CPU can be controlled through /sys/devices/system/cpu/cpu#. Say N if you want to disable CPU hotplug. -source "kernel/time/Kconfig" - if SPARC64 source "drivers/cpufreq/Kconfig" diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig index b56772c..4eec3a1 100644 --- a/arch/tile/Kconfig +++ b/arch/tile/Kconfig @@ -136,8 +136,6 @@ config NR_CPUS smaller kernel memory footprint results from using a smaller value on chips with fewer tiles. -source "kernel/time/Kconfig" - source "kernel/Kconfig.hz" config KEXEC diff --git a/arch/um/Kconfig.um b/arch/um/Kconfig.um index 70fd690..bf87f25 100644 --- a/arch/um/Kconfig.um +++ b/arch/um/Kconfig.um @@ -10,7 +10,6 @@ config STATIC_LINK 2.75G) for UML. source "mm/Kconfig" -source "kernel/time/Kconfig" config LD_SCRIPT_STATIC bool diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig index a25ca76..47ad521 100644 --- a/arch/unicore32/Kconfig +++ b/arch/unicore32/Kconfig @@ -143,8 +143,6 @@ endmenu menu "Kernel Features" -source "kernel/time/Kconfig" - source "kernel/Kconfig.preempt" source "kernel/Kconfig.hz" diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 3b0a921..1b1e049 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -241,8 +241,6 @@ config ZONE_DMA If unsure, say Y. -source "kernel/time/Kconfig" - config SMP bool "Symmetric multi-processing support" ---help--- diff --git a/init/Kconfig b/init/Kconfig index 6cfd71d..528a0c4 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -387,6 +387,7 @@ config AUDIT_LOGINUID_IMMUTABLE but may not be backwards compatible with older init systems. source "kernel/irq/Kconfig" +source "kernel/time/Kconfig" menu "RCU Subsystem" diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig index f6ebc4f..fd42bd4 100644 --- a/kernel/time/Kconfig +++ b/kernel/time/Kconfig @@ -2,38 +2,6 @@ # Timer subsystem related configuration options # -# Core internal switch. Selected by NO_HZ / HIGH_RES_TIMERS. This is -# only related to the tick functionality. Oneshot clockevent devices -# are supported independ of this. -config TICK_ONESHOT - bool - -config NO_HZ - bool "Tickless System (Dynamic Ticks)" - depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS - select TICK_ONESHOT - help - This option enables a tickless system: timer interrupts will - only trigger on an as-needed basis both when the system is - busy and when the system is idle. - -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 - hardware is not capable then this option only increases - the size of the kernel image. - -config GENERIC_CLOCKEVENTS_BUILD - bool - default y - depends on GENERIC_CLOCKEVENTS - -config GENERIC_CLOCKEVENTS_MIN_ADJUST - bool - # Options selectable by arch Kconfig # Watchdog function for clocksources to detect instabilities @@ -60,11 +28,52 @@ config ARCH_USES_GETTIMEOFFSET config GENERIC_CLOCKEVENTS bool +# Migration helper. Builds, but does not invoke +config GENERIC_CLOCKEVENTS_BUILD + bool + default y + depends on GENERIC_CLOCKEVENTS + # Clockevents broadcasting infrastructure config GENERIC_CLOCKEVENTS_BROADCAST bool depends on GENERIC_CLOCKEVENTS +# Automatically adjust the min. reprogramming time for +# clock event device +config GENERIC_CLOCKEVENTS_MIN_ADJUST + bool + # Generic update of CMOS clock config GENERIC_CMOS_UPDATE bool + +if GENERIC_CLOCKEVENTS +menu "Timers subsystem" + +# Core internal switch. Selected by NO_HZ / HIGH_RES_TIMERS. This is +# only related to the tick functionality. Oneshot clockevent devices +# are supported independ of this. +config TICK_ONESHOT + bool + +config NO_HZ + bool "Tickless System (Dynamic Ticks)" + depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS + select TICK_ONESHOT + help + This option enables a tickless system: timer interrupts will + only trigger on an as-needed basis both when the system is + busy and when the system is idle. + +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 + hardware is not capable then this option only increases + the size of the kernel image. + +endmenu +endif -- cgit v0.10.2 From dd48d708ff3e917f6d6b6c2b696c3f18c019feed Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Thu, 26 Apr 2012 14:11:32 +0200 Subject: ntp: Correct TAI offset during leap second When repeating a UTC time value during a leap second (when the UTC time should be 23:59:60), the TAI timescale should not stop. The kernel NTP code increments the TAI offset one second too late. This patch fixes the issue by incrementing the offset during the leap second itself. Signed-off-by: Richard Cochran Signed-off-by: John Stultz diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index f03fd83..e8c8671 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c @@ -412,6 +412,7 @@ int second_overflow(unsigned long secs) if (secs % 86400 == 0) { leap = -1; time_state = TIME_OOP; + time_tai++; printk(KERN_NOTICE "Clock: inserting leap second 23:59:60 UTC\n"); } @@ -426,7 +427,6 @@ int second_overflow(unsigned long secs) } break; case TIME_OOP: - time_tai++; time_state = TIME_WAIT; break; -- cgit v0.10.2 From cd5398bed9296d1ddb21630ac17e90cd19a5c62e Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Fri, 27 Apr 2012 10:12:41 +0200 Subject: ntp: Fix a stale comment and a few stray newlines. Signed-off-by: Richard Cochran Signed-off-by: John Stultz diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index e8c8671..70b33ab 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c @@ -473,8 +473,6 @@ int second_overflow(unsigned long secs) << NTP_SCALE_SHIFT; time_adjust = 0; - - out: spin_unlock_irqrestore(&ntp_lock, flags); @@ -559,10 +557,10 @@ static inline void process_adj_status(struct timex *txc, struct timespec *ts) /* only set allowed bits */ time_status &= STA_RONLY; time_status |= txc->status & ~STA_RONLY; - } + /* - * Called with the xtime lock held, so we can access and modify + * Called with ntp_lock held, so we can access and modify * all the global NTP state: */ static inline void process_adjtimex_modes(struct timex *txc, struct timespec *ts) -- cgit v0.10.2 From 190d3b6b4ab0e1ce991e8bc94ad95f00b0dc476b Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Fri, 18 May 2012 16:09:53 +0200 Subject: time: remove obsolete declaration The function, timekeeping_leap_insert, was removed in commit 6b43ae8a619d17c4935c3320d2ef9e92bdeed05d Signed-off-by: Richard Cochran Signed-off-by: John Stultz diff --git a/include/linux/time.h b/include/linux/time.h index 33a92ea..179f4d6 100644 --- a/include/linux/time.h +++ b/include/linux/time.h @@ -167,7 +167,6 @@ extern void get_monotonic_boottime(struct timespec *ts); extern struct timespec timespec_trunc(struct timespec t, unsigned gran); extern int timekeeping_valid_for_hres(void); extern u64 timekeeping_max_deferment(void); -extern void timekeeping_leap_insert(int leapsecond); extern int timekeeping_inject_offset(struct timespec *ts); struct tms; -- cgit v0.10.2 From d239f49d77ad9ffa442e700db3cab06d8b414cd1 Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Fri, 27 Apr 2012 10:12:42 +0200 Subject: timekeeping: Fix a few minor newline issues. Fix a few minor newline issues. Signed-off-by: Richard Cochran Signed-off-by: John Stultz diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index d66b213..6e46cac 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -240,7 +240,6 @@ void getnstimeofday(struct timespec *ts) timespec_add_ns(ts, nsecs); } - EXPORT_SYMBOL(getnstimeofday); ktime_t ktime_get(void) @@ -357,8 +356,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_sec = now.tv_sec; tv->tv_usec = now.tv_nsec/1000; } - EXPORT_SYMBOL(do_gettimeofday); + /** * do_settimeofday - Sets the time of day * @tv: pointer to the timespec variable containing the new time @@ -392,7 +391,6 @@ int do_settimeofday(const struct timespec *tv) return 0; } - EXPORT_SYMBOL(do_settimeofday); -- cgit v0.10.2