timekeeping: default GENERIC_CLOCKEVENTS to enabled
authorArnd Bergmann <arnd@arndb.de>
Thu, 24 Sep 2020 09:32:40 +0000 (11:32 +0200)
committerArnd Bergmann <arnd@arndb.de>
Fri, 30 Oct 2020 20:57:07 +0000 (21:57 +0100)
Almost all machines use GENERIC_CLOCKEVENTS, so it feels wrong to
require each one to select that symbol manually.

Instead, enable it whenever CONFIG_LEGACY_TIMER_TICK is disabled as
a simplification. It should be possible to select both
GENERIC_CLOCKEVENTS and LEGACY_TIMER_TICK from an architecture now
and decide at runtime between the two.

For the clockevents arch-support.txt file, this means that additional
architectures are marked as TODO when they have at least one machine
that still uses LEGACY_TIMER_TICK, rather than being marked 'ok' when
at least one machine has been converted. This means that both m68k and
arm (for riscpc) revert to TODO.

At this point, we could just always enable CONFIG_GENERIC_CLOCKEVENTS
rather than leaving it off when not needed. I built an m68k
defconfig kernel (using gcc-10.1.0) and found that this would add
around 5.5KB in kernel image size:

   text    data     bss     dec     hex filename
3861936 1092236  196656 5150828  4e986c obj-m68k/vmlinux-no-clockevent
3866201 1093832  196184 5156217  4ead79 obj-m68k/vmlinux-clockevent

On Arm (MACH_RPC), that difference appears to be twice as large,
around 11KB on top of an 6MB vmlinux.

Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
25 files changed:
Documentation/features/time/clockevents/arch-support.txt
arch/alpha/Kconfig
arch/arc/Kconfig
arch/arm/Kconfig
arch/arm64/Kconfig
arch/arm64/Kconfig.platforms
arch/c6x/Kconfig
arch/csky/Kconfig
arch/h8300/Kconfig
arch/hexagon/Kconfig
arch/m68k/Kconfig.cpu
arch/microblaze/Kconfig
arch/mips/Kconfig
arch/nds32/Kconfig
arch/nios2/Kconfig
arch/openrisc/Kconfig
arch/powerpc/Kconfig
arch/riscv/Kconfig
arch/s390/Kconfig
arch/sh/Kconfig
arch/sparc/Kconfig
arch/um/Kconfig
arch/x86/Kconfig
arch/xtensa/Kconfig
kernel/time/Kconfig

index 61a5c9d68c15e696f02fb3042299ef65999e3cae..6863a3fbddad64d2cfb69ce511c632871b708c18 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Feature name:          clockevents
-#         Kconfig:       GENERIC_CLOCKEVENTS
+#         Kconfig:       !LEGACY_TIMER_TICK
 #         description:   arch support generic clock events
 #
     -----------------------
@@ -8,14 +8,14 @@
     -----------------------
     |       alpha: |  ok  |
     |         arc: |  ok  |
-    |         arm: |  ok  |
+    |         arm: | TODO |
     |       arm64: |  ok  |
     |         c6x: |  ok  |
     |        csky: |  ok  |
     |       h8300: |  ok  |
     |     hexagon: |  ok  |
     |        ia64: | TODO |
-    |        m68k: |  ok  |
+    |        m68k: | TODO |
     |  microblaze: |  ok  |
     |        mips: |  ok  |
     |       nds32: |  ok  |
index d6e9fc7a7b19e2283cedc1122705834f455032a7..f0a700946cac91b330d44abce6ada65a5153c265 100644 (file)
@@ -27,7 +27,6 @@ config ALPHA
        select ARCH_WANT_IPC_PARSE_VERSION
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
        select AUDIT_ARCH
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CPU_VULNERABILITIES
        select GENERIC_SMP_IDLE_THREAD
        select GENERIC_STRNCPY_FROM_USER
index 0a89cc9def6513987775dc72b6793e6de0f8bd4b..061eb8e23739f849eeb0d8548451fb297851278a 100644 (file)
@@ -19,7 +19,6 @@ config ARC
        select COMMON_CLK
        select DMA_DIRECT_REMAP
        select GENERIC_ATOMIC64 if !ISA_ARCV2 || !(ARC_HAS_LL64 && ARC_HAS_LLSC)
-       select GENERIC_CLOCKEVENTS
        select GENERIC_FIND_FIRST_BIT
        # for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
        select GENERIC_IRQ_SHOW
index a652686c3b329de5b984a46e38eb73c2adb19109..446c6c88e47f8d75cbc0019ca4f6908e7e325fae 100644 (file)
@@ -321,7 +321,6 @@ config ARCH_MULTIPLATFORM
        select AUTO_ZRELADDR
        select TIMER_OF
        select COMMON_CLK
-       select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_MULTI_HANDLER
        select HAVE_PCI
        select PCI_DOMAINS_GENERIC if PCI
@@ -336,7 +335,6 @@ config ARM_SINGLE_ARMV7M
        select TIMER_OF
        select COMMON_CLK
        select CPU_V7M
-       select GENERIC_CLOCKEVENTS
        select NO_IOPORT_MAP
        select SPARSE_IRQ
        select USE_OF
@@ -351,7 +349,6 @@ config ARCH_EP93XX
        select CLKDEV_LOOKUP
        select CLKSRC_MMIO
        select CPU_ARM920T
-       select GENERIC_CLOCKEVENTS
        select GPIOLIB
        select HAVE_LEGACY_CLK
        help
@@ -361,7 +358,6 @@ config ARCH_FOOTBRIDGE
        bool "FootBridge"
        select CPU_SA110
        select FOOTBRIDGE
-       select GENERIC_CLOCKEVENTS
        select HAVE_IDE
        select NEED_MACH_IO_H if !MMU
        select NEED_MACH_MEMORY_H
@@ -389,7 +385,6 @@ config ARCH_IXP4XX
        select ARCH_SUPPORTS_BIG_ENDIAN
        select CPU_XSCALE
        select DMABOUNCE if PCI
-       select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_MULTI_HANDLER
        select GPIO_IXP4XX
        select GPIOLIB
@@ -405,7 +400,6 @@ config ARCH_IXP4XX
 config ARCH_DOVE
        bool "Marvell Dove"
        select CPU_PJ4
-       select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_MULTI_HANDLER
        select GPIOLIB
        select HAVE_PCI
@@ -429,7 +423,6 @@ config ARCH_PXA
        select CLKSRC_MMIO
        select TIMER_OF
        select CPU_XSCALE if !CPU_XSC3
-       select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_MULTI_HANDLER
        select GPIO_PXA
        select GPIOLIB
@@ -470,7 +463,6 @@ config ARCH_SA1100
        select COMMON_CLK
        select CPU_FREQ
        select CPU_SA1100
-       select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_MULTI_HANDLER
        select GPIOLIB
        select HAVE_IDE
@@ -485,7 +477,6 @@ config ARCH_S3C24XX
        bool "Samsung S3C24XX SoCs"
        select ATAGS
        select CLKSRC_SAMSUNG_PWM
-       select GENERIC_CLOCKEVENTS
        select GPIO_SAMSUNG
        select GPIOLIB
        select GENERIC_IRQ_MULTI_HANDLER
@@ -509,7 +500,6 @@ config ARCH_OMAP1
        select ARCH_OMAP
        select CLKDEV_LOOKUP
        select CLKSRC_MMIO
-       select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_CHIP
        select GENERIC_IRQ_MULTI_HANDLER
        select GPIOLIB
@@ -772,7 +762,6 @@ config ARCH_ACORN
 
 config PLAT_IOP
        bool
-       select GENERIC_CLOCKEVENTS
 
 config PLAT_ORION
        bool
@@ -1163,7 +1152,6 @@ config HAVE_SMP
 config SMP
        bool "Symmetric Multi-Processing"
        depends on CPU_V6K || CPU_V7
-       depends on GENERIC_CLOCKEVENTS
        depends on HAVE_SMP
        depends on MMU || ARM_MPU
        select IRQ_WORK
index f858c352f72a47cdef887a9a6d291b4f0a65dadd..fee87e4104fda162b708e00b8451880085c9393c 100644 (file)
@@ -101,7 +101,6 @@ config ARM64
        select FRAME_POINTER
        select GENERIC_ALLOCATOR
        select GENERIC_ARCH_TOPOLOGY
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CLOCKEVENTS_BROADCAST
        select GENERIC_CPU_AUTOPROBE
        select GENERIC_CPU_VULNERABILITIES
index 6f2494dd6d60b60b5967ddc121d886d4ff00b253..748e6d8c3b941e6aba36773560522bb86250fcaf 100644 (file)
@@ -256,7 +256,6 @@ config ARCH_TEGRA
        select ARM_GIC_PM
        select CLKSRC_MMIO
        select TIMER_OF
-       select GENERIC_CLOCKEVENTS
        select GPIOLIB
        select PINCTRL
        select PM
index 48d66bf0465d680b7dd39603d67e8a3caaec8527..bdeeac28b1be19328918c4e9fd49485de88bfd13 100644 (file)
@@ -19,7 +19,6 @@ config C6X
        select IRQ_DOMAIN
        select OF
        select OF_EARLY_FLATTREE
-       select GENERIC_CLOCKEVENTS
        select MODULES_USE_ELF_RELA
        select MMU_GATHER_NO_RANGE if MMU
        select SET_FS
index 268fad5f51cf453d780394883bfef053fd6723bb..28fdf8303dffd17a6a268b3ce93c832bab086731 100644 (file)
@@ -28,7 +28,6 @@ config CSKY
        select GENERIC_LIB_UCMPDI2
        select GENERIC_ALLOCATOR
        select GENERIC_ATOMIC64
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CPU_DEVICES
        select GENERIC_IRQ_CHIP
        select GENERIC_IRQ_PROBE
index 7945de067e9fccc6ef347033bb8fcdd2e674dded..3e3e0f16f7e0af5ac78056e9a172ddfa97c0ccd3 100644 (file)
@@ -12,7 +12,6 @@ config H8300
        select FRAME_POINTER
        select GENERIC_CPU_DEVICES
        select MODULES_USE_ELF_RELA
-       select GENERIC_CLOCKEVENTS
        select COMMON_CLK
        select ARCH_WANT_FRAME_POINTERS
        select OF
index f2afabbadd430eb967fbc95f2942b2b1e687340a..6e00c16a36b58910556b0add896f6022f3a872fb 100644 (file)
@@ -27,7 +27,6 @@ config HEXAGON
        select GENERIC_IOMAP
        select GENERIC_SMP_IDLE_THREAD
        select STACKTRACE_SUPPORT
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CLOCKEVENTS_BROADCAST
        select MODULES_USE_ELF_RELA
        select GENERIC_CPU_DEVICES
index 648054d4f860cf91fbf44faaee60c4c8d3cd29fb..ce09f993d8586b20b283b5de26ef778f842f3d5b 100644 (file)
@@ -318,7 +318,6 @@ config M54xx
 
 config COLDFIRE_PIT_TIMER
        bool
-       select GENERIC_CLOCKEVENTS
 
 config COLDFIRE_TIMERS
        bool
index 33925ffed68fdf4d8006415a839f4bfd15c5877a..2f0d3f431faf35b56d353f451aca3ad81efda0c5 100644 (file)
@@ -17,7 +17,6 @@ config MICROBLAZE
        select COMMON_CLK
        select DMA_DIRECT_REMAP if MMU
        select GENERIC_ATOMIC64
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CPU_DEVICES
        select GENERIC_IDLE_POLL_SETUP
        select GENERIC_IRQ_PROBE
index 2000bb2b0220dc20437455eca8d389b0fceab968..077c4ae09550041c54a6714124fcb22a7eba4d7a 100644 (file)
@@ -21,7 +21,6 @@ config MIPS
        select CPU_NO_EFFICIENT_FFS if (TARGET_ISA_REV < 1)
        select CPU_PM if CPU_IDLE
        select GENERIC_ATOMIC64 if !64BIT
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CMOS_UPDATE
        select GENERIC_CPU_AUTOPROBE
        select GENERIC_GETTIMEOFDAY
index e8e541fd2267d06caf1f0e39541932b90e081e93..62313902d75d9e80a8f5c69959b12993b878e9a0 100644 (file)
@@ -17,7 +17,6 @@ config NDS32
        select DMA_DIRECT_REMAP
        select GENERIC_ATOMIC64
        select GENERIC_CPU_DEVICES
-       select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_CHIP
        select GENERIC_IRQ_SHOW
        select GENERIC_IOREMAP
index c7c6ba6bec9dfce4972f77a20ba2eb42e47955da..c24955c81c9274e8293bea3006e1a66a2cde3816 100644 (file)
@@ -10,7 +10,6 @@ config NIOS2
        select COMMON_CLK
        select TIMER_OF
        select GENERIC_ATOMIC64
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CPU_DEVICES
        select GENERIC_IRQ_PROBE
        select GENERIC_IRQ_SHOW
index 6233c62931803f451d6ba2762ac729ecbc55a46f..591acc5990dc598c785bc01800cb3902f2d70de5 100644 (file)
@@ -24,7 +24,6 @@ config OPENRISC
        select GENERIC_CPU_DEVICES
        select HAVE_UID16
        select GENERIC_ATOMIC64
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CLOCKEVENTS_BROADCAST
        select GENERIC_STRNCPY_FROM_USER
        select GENERIC_STRNLEN_USER
index e9f13fe084929bd9ad322c432d9a59f1674d9ecd..57e2c75f76e9314e240e4e975736264d1b611026 100644 (file)
@@ -163,7 +163,6 @@ config PPC
        select EDAC_ATOMIC_SCRUB
        select EDAC_SUPPORT
        select GENERIC_ATOMIC64                 if PPC32
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CLOCKEVENTS_BROADCAST    if SMP
        select GENERIC_CMOS_UPDATE
        select GENERIC_CPU_AUTOPROBE
index 44377fd7860e43b42c158d29e335fba46adb6656..3842bbb4fe6206fd648800e34c84239f5ea172d1 100644 (file)
@@ -37,7 +37,6 @@ config RISCV
        select EDAC_SUPPORT
        select GENERIC_ARCH_TOPOLOGY if SMP
        select GENERIC_ATOMIC64 if !64BIT
-       select GENERIC_CLOCKEVENTS
        select GENERIC_EARLY_IOREMAP
        select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
        select GENERIC_IOREMAP
index 4a2a12be04c964c6f4df1a227d90135761e5dd53..db246781844d7309d6c5916cc64c610be675f308 100644 (file)
@@ -116,7 +116,6 @@ config S390
        select CLONE_BACKWARDS2
        select DMA_OPS if PCI
        select DYNAMIC_FTRACE if FUNCTION_TRACER
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CPU_AUTOPROBE
        select GENERIC_CPU_VULNERABILITIES
        select GENERIC_FIND_FIRST_BIT
index 159da4ed578f234d0114e8da0f21df3255cecc18..5fa580219a864e14982d5e7a9921b9f00a4cab0c 100644 (file)
@@ -16,7 +16,6 @@ config SUPERH
        select CPU_NO_EFFICIENT_FFS
        select DMA_DECLARE_COHERENT
        select GENERIC_ATOMIC64
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CMOS_UPDATE if SH_SH03 || SH_DREAMCAST
        select GENERIC_IDLE_POLL_SETUP
        select GENERIC_IRQ_SHOW
index a6ca135442f9a8a3f0dfe495007af12efa2a844b..718c51cf2c6cdfb6ffc4432d20bd275588a62071 100644 (file)
@@ -39,7 +39,6 @@ config SPARC
        select HAVE_EBPF_JIT if SPARC64
        select HAVE_DEBUG_BUGVERBOSE
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_CLOCKEVENTS
        select GENERIC_STRNCPY_FROM_USER
        select GENERIC_STRNLEN_USER
        select MODULES_USE_ELF_RELA
index 4b799fad8b483eae6d0cd302b194388b522c1469..43333e36e0baebcbbb9f42f7b8ba33457a426ca5 100644 (file)
@@ -17,7 +17,6 @@ config UML
        select NO_DMA
        select GENERIC_IRQ_SHOW
        select GENERIC_CPU_DEVICES
-       select GENERIC_CLOCKEVENTS
        select HAVE_GCC_PLUGINS
        select SET_FS
        select TTY # Needed for line.c
index f6946b81f74a95da92bce9f483dcbd6ca6aa7cff..0498d7596cccccc5a968ed7e9ed04e52f460c294 100644 (file)
@@ -108,7 +108,6 @@ config X86
        select DCACHE_WORD_ACCESS
        select EDAC_ATOMIC_SCRUB
        select EDAC_SUPPORT
-       select GENERIC_CLOCKEVENTS
        select GENERIC_CLOCKEVENTS_BROADCAST    if X86_64 || (X86_32 && X86_LOCAL_APIC)
        select GENERIC_CLOCKEVENTS_MIN_ADJUST
        select GENERIC_CMOS_UPDATE
index d0dfa50bd0bb463d942bfb0c634826336d44efa9..2611ba336af8f3e85e5f49ef500ccb7a0a69f6ba 100644 (file)
@@ -16,7 +16,6 @@ config XTENSA
        select COMMON_CLK
        select DMA_REMAP if MMU
        select GENERIC_ATOMIC64
-       select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_SHOW
        select GENERIC_PCI_IOMAP
        select GENERIC_SCHED_CLOCK
index c6867f29d279b55080c7272c87334d3a2c7ae813..9a41848b6ebb9820b8ac31df662a36232c5f9019 100644 (file)
@@ -28,7 +28,7 @@ config GENERIC_TIME_VSYSCALL
 
 # The generic clock events infrastructure
 config GENERIC_CLOCKEVENTS
-       bool
+       def_bool !LEGACY_TIMER_TICK
 
 # Architecture can handle broadcast in a driver-agnostic way
 config ARCH_HAS_TICK_BROADCAST