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.
Unified · Split
| @@ -1,6 +1,6 @@ | ||
| 1 | 1 | # |
| 2 | 2 | # Feature name: clockevents |
| 3 | −# Kconfig: GENERIC_CLOCKEVENTS | |
| 3 | +# Kconfig: !LEGACY_TIMER_TICK | |
| 4 | 4 | # description: arch support generic clock events |
| 5 | 5 | # |
| 6 | 6 | ----------------------- |
| @@ -8,14 +8,14 @@ · 1 unmodified line | ||
| 8 | 8 | ----------------------- |
| 9 | 9 | | alpha: | ok | |
| 10 | 10 | | arc: | ok | |
| 11 | − | arm: | ok | | |
| 11 | + | arm: | TODO | | |
| 12 | 12 | | arm64: | ok | |
| 13 | 13 | | c6x: | ok | |
| 14 | 14 | | csky: | ok | |
| 15 | 15 | | h8300: | ok | |
| 16 | 16 | | hexagon: | ok | |
| 17 | 17 | | ia64: | TODO | |
| 18 | − | m68k: | ok | | |
| 18 | + | m68k: | TODO | | |
| 19 | 19 | | microblaze: | ok | |
| 20 | 20 | | mips: | ok | |
| 21 | 21 | | nds32: | ok | |
| @@ -27,7 +27,6 @@ config ALPHA · 26 unmodified lines | ||
| 27 | 27 | select ARCH_WANT_IPC_PARSE_VERSION |
| 28 | 28 | select ARCH_HAVE_NMI_SAFE_CMPXCHG |
| 29 | 29 | select AUDIT_ARCH |
| 30 | − select GENERIC_CLOCKEVENTS | |
| 31 | 30 | select GENERIC_CPU_VULNERABILITIES |
| 32 | 31 | select GENERIC_SMP_IDLE_THREAD |
| 33 | 32 | select GENERIC_STRNCPY_FROM_USER |
| @@ -19,7 +19,6 @@ config ARC · 18 unmodified lines | ||
| 19 | 19 | select COMMON_CLK |
| 20 | 20 | select DMA_DIRECT_REMAP |
| 21 | 21 | select GENERIC_ATOMIC64 if !ISA_ARCV2 || !(ARC_HAS_LL64 && ARC_HAS_LLSC) |
| 22 | − select GENERIC_CLOCKEVENTS | |
| 23 | 22 | select GENERIC_FIND_FIRST_BIT |
| 24 | 23 | # for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP |
| 25 | 24 | select GENERIC_IRQ_SHOW |
| @@ -321,7 +321,6 @@ config ARCH_MULTIPLATFORM · 320 unmodified lines | ||
| 321 | 321 | select AUTO_ZRELADDR |
| 322 | 322 | select TIMER_OF |
| 323 | 323 | select COMMON_CLK |
| 324 | − select GENERIC_CLOCKEVENTS | |
| 325 | 324 | select GENERIC_IRQ_MULTI_HANDLER |
| 326 | 325 | select HAVE_PCI |
| 327 | 326 | select PCI_DOMAINS_GENERIC if PCI |
| @@ -336,7 +335,6 @@ config ARM_SINGLE_ARMV7M · 8 unmodified lines | ||
| 336 | 335 | select TIMER_OF |
| 337 | 336 | select COMMON_CLK |
| 338 | 337 | select CPU_V7M |
| 339 | − select GENERIC_CLOCKEVENTS | |
| 340 | 338 | select NO_IOPORT_MAP |
| 341 | 339 | select SPARSE_IRQ |
| 342 | 340 | select USE_OF |
| @@ -351,7 +349,6 @@ config ARCH_EP93XX · 8 unmodified lines | ||
| 351 | 349 | select CLKDEV_LOOKUP |
| 352 | 350 | select CLKSRC_MMIO |
| 353 | 351 | select CPU_ARM920T |
| 354 | − select GENERIC_CLOCKEVENTS | |
| 355 | 352 | select GPIOLIB |
| 356 | 353 | select HAVE_LEGACY_CLK |
| 357 | 354 | help |
| @@ -361,7 +358,6 @@ config ARCH_FOOTBRIDGE · 3 unmodified lines | ||
| 361 | 358 | bool "FootBridge" |
| 362 | 359 | select CPU_SA110 |
| 363 | 360 | select FOOTBRIDGE |
| 364 | − select GENERIC_CLOCKEVENTS | |
| 365 | 361 | select HAVE_IDE |
| 366 | 362 | select NEED_MACH_IO_H if !MMU |
| 367 | 363 | select NEED_MACH_MEMORY_H |
| @@ -389,7 +385,6 @@ config ARCH_IXP4XX · 21 unmodified lines | ||
| 389 | 385 | select ARCH_SUPPORTS_BIG_ENDIAN |
| 390 | 386 | select CPU_XSCALE |
| 391 | 387 | select DMABOUNCE if PCI |
| 392 | − select GENERIC_CLOCKEVENTS | |
| 393 | 388 | select GENERIC_IRQ_MULTI_HANDLER |
| 394 | 389 | select GPIO_IXP4XX |
| 395 | 390 | select GPIOLIB |
| @@ -405,7 +400,6 @@ config ARCH_IXP4XX · 9 unmodified lines | ||
| 405 | 400 | config ARCH_DOVE |
| 406 | 401 | bool "Marvell Dove" |
| 407 | 402 | select CPU_PJ4 |
| 408 | − select GENERIC_CLOCKEVENTS | |
| 409 | 403 | select GENERIC_IRQ_MULTI_HANDLER |
| 410 | 404 | select GPIOLIB |
| 411 | 405 | select HAVE_PCI |
| @@ -429,7 +423,6 @@ config ARCH_PXA · 17 unmodified lines | ||
| 429 | 423 | select CLKSRC_MMIO |
| 430 | 424 | select TIMER_OF |
| 431 | 425 | select CPU_XSCALE if !CPU_XSC3 |
| 432 | − select GENERIC_CLOCKEVENTS | |
| 433 | 426 | select GENERIC_IRQ_MULTI_HANDLER |
| 434 | 427 | select GPIO_PXA |
| 435 | 428 | select GPIOLIB |
| @@ -470,7 +463,6 @@ config ARCH_SA1100 · 34 unmodified lines | ||
| 470 | 463 | select COMMON_CLK |
| 471 | 464 | select CPU_FREQ |
| 472 | 465 | select CPU_SA1100 |
| 473 | − select GENERIC_CLOCKEVENTS | |
| 474 | 466 | select GENERIC_IRQ_MULTI_HANDLER |
| 475 | 467 | select GPIOLIB |
| 476 | 468 | select HAVE_IDE |
| @@ -485,7 +477,6 @@ config ARCH_S3C24XX · 8 unmodified lines | ||
| 485 | 477 | bool "Samsung S3C24XX SoCs" |
| 486 | 478 | select ATAGS |
| 487 | 479 | select CLKSRC_SAMSUNG_PWM |
| 488 | − select GENERIC_CLOCKEVENTS | |
| 489 | 480 | select GPIO_SAMSUNG |
| 490 | 481 | select GPIOLIB |
| 491 | 482 | select GENERIC_IRQ_MULTI_HANDLER |
| @@ -509,7 +500,6 @@ config ARCH_OMAP1 · 17 unmodified lines | ||
| 509 | 500 | select ARCH_OMAP |
| 510 | 501 | select CLKDEV_LOOKUP |
| 511 | 502 | select CLKSRC_MMIO |
| 512 | − select GENERIC_CLOCKEVENTS | |
| 513 | 503 | select GENERIC_IRQ_CHIP |
| 514 | 504 | select GENERIC_IRQ_MULTI_HANDLER |
| 515 | 505 | select GPIOLIB |
| @@ -772,7 +762,6 @@ config ARCH_ACORN · 256 unmodified lines | ||
| 772 | 762 | |
| 773 | 763 | config PLAT_IOP |
| 774 | 764 | bool |
| 775 | − select GENERIC_CLOCKEVENTS | |
| 776 | 765 | |
| 777 | 766 | config PLAT_ORION |
| 778 | 767 | bool |
| @@ -1163,7 +1152,6 @@ config HAVE_SMP · 384 unmodified lines | ||
| 1163 | 1152 | config SMP |
| 1164 | 1153 | bool "Symmetric Multi-Processing" |
| 1165 | 1154 | depends on CPU_V6K || CPU_V7 |
| 1166 | − depends on GENERIC_CLOCKEVENTS | |
| 1167 | 1155 | depends on HAVE_SMP |
| 1168 | 1156 | depends on MMU || ARM_MPU |
| 1169 | 1157 | select IRQ_WORK |
| @@ -101,7 +101,6 @@ config ARM64 · 100 unmodified lines | ||
| 101 | 101 | select FRAME_POINTER |
| 102 | 102 | select GENERIC_ALLOCATOR |
| 103 | 103 | select GENERIC_ARCH_TOPOLOGY |
| 104 | − select GENERIC_CLOCKEVENTS | |
| 105 | 104 | select GENERIC_CLOCKEVENTS_BROADCAST |
| 106 | 105 | select GENERIC_CPU_AUTOPROBE |
| 107 | 106 | select GENERIC_CPU_VULNERABILITIES |
| @@ -256,7 +256,6 @@ config ARCH_TEGRA · 255 unmodified lines | ||
| 256 | 256 | select ARM_GIC_PM |
| 257 | 257 | select CLKSRC_MMIO |
| 258 | 258 | select TIMER_OF |
| 259 | − select GENERIC_CLOCKEVENTS | |
| 260 | 259 | select GPIOLIB |
| 261 | 260 | select PINCTRL |
| 262 | 261 | select PM |
| @@ -19,7 +19,6 @@ config C6X · 18 unmodified lines | ||
| 19 | 19 | select IRQ_DOMAIN |
| 20 | 20 | select OF |
| 21 | 21 | select OF_EARLY_FLATTREE |
| 22 | − select GENERIC_CLOCKEVENTS | |
| 23 | 22 | select MODULES_USE_ELF_RELA |
| 24 | 23 | select MMU_GATHER_NO_RANGE if MMU |
| 25 | 24 | select SET_FS |
| @@ -28,7 +28,6 @@ config CSKY · 27 unmodified lines | ||
| 28 | 28 | select GENERIC_LIB_UCMPDI2 |
| 29 | 29 | select GENERIC_ALLOCATOR |
| 30 | 30 | select GENERIC_ATOMIC64 |
| 31 | − select GENERIC_CLOCKEVENTS | |
| 32 | 31 | select GENERIC_CPU_DEVICES |
| 33 | 32 | select GENERIC_IRQ_CHIP |
| 34 | 33 | select GENERIC_IRQ_PROBE |
| @@ -12,7 +12,6 @@ config H8300 · 11 unmodified lines | ||
| 12 | 12 | select FRAME_POINTER |
| 13 | 13 | select GENERIC_CPU_DEVICES |
| 14 | 14 | select MODULES_USE_ELF_RELA |
| 15 | − select GENERIC_CLOCKEVENTS | |
| 16 | 15 | select COMMON_CLK |
| 17 | 16 | select ARCH_WANT_FRAME_POINTERS |
| 18 | 17 | select OF |
| @@ -27,7 +27,6 @@ config HEXAGON · 26 unmodified lines | ||
| 27 | 27 | select GENERIC_IOMAP |
| 28 | 28 | select GENERIC_SMP_IDLE_THREAD |
| 29 | 29 | select STACKTRACE_SUPPORT |
| 30 | − select GENERIC_CLOCKEVENTS | |
| 31 | 30 | select GENERIC_CLOCKEVENTS_BROADCAST |
| 32 | 31 | select MODULES_USE_ELF_RELA |
| 33 | 32 | select GENERIC_CPU_DEVICES |
| @@ -318,7 +318,6 @@ config M54xx · 317 unmodified lines | ||
| 318 | 318 | |
| 319 | 319 | config COLDFIRE_PIT_TIMER |
| 320 | 320 | bool |
| 321 | − select GENERIC_CLOCKEVENTS | |
| 322 | 321 | |
| 323 | 322 | config COLDFIRE_TIMERS |
| 324 | 323 | bool |
| @@ -17,7 +17,6 @@ config MICROBLAZE · 16 unmodified lines | ||
| 17 | 17 | select COMMON_CLK |
| 18 | 18 | select DMA_DIRECT_REMAP if MMU |
| 19 | 19 | select GENERIC_ATOMIC64 |
| 20 | − select GENERIC_CLOCKEVENTS | |
| 21 | 20 | select GENERIC_CPU_DEVICES |
| 22 | 21 | select GENERIC_IDLE_POLL_SETUP |
| 23 | 22 | select GENERIC_IRQ_PROBE |
| @@ -21,7 +21,6 @@ config MIPS · 20 unmodified lines | ||
| 21 | 21 | select CPU_NO_EFFICIENT_FFS if (TARGET_ISA_REV < 1) |
| 22 | 22 | select CPU_PM if CPU_IDLE |
| 23 | 23 | select GENERIC_ATOMIC64 if !64BIT |
| 24 | − select GENERIC_CLOCKEVENTS | |
| 25 | 24 | select GENERIC_CMOS_UPDATE |
| 26 | 25 | select GENERIC_CPU_AUTOPROBE |
| 27 | 26 | select GENERIC_GETTIMEOFDAY |
| @@ -17,7 +17,6 @@ config NDS32 · 16 unmodified lines | ||
| 17 | 17 | select DMA_DIRECT_REMAP |
| 18 | 18 | select GENERIC_ATOMIC64 |
| 19 | 19 | select GENERIC_CPU_DEVICES |
| 20 | − select GENERIC_CLOCKEVENTS | |
| 21 | 20 | select GENERIC_IRQ_CHIP |
| 22 | 21 | select GENERIC_IRQ_SHOW |
| 23 | 22 | select GENERIC_IOREMAP |
| @@ -10,7 +10,6 @@ config NIOS2 · 9 unmodified lines | ||
| 10 | 10 | select COMMON_CLK |
| 11 | 11 | select TIMER_OF |
| 12 | 12 | select GENERIC_ATOMIC64 |
| 13 | − select GENERIC_CLOCKEVENTS | |
| 14 | 13 | select GENERIC_CPU_DEVICES |
| 15 | 14 | select GENERIC_IRQ_PROBE |
| 16 | 15 | select GENERIC_IRQ_SHOW |
| @@ -24,7 +24,6 @@ config OPENRISC · 23 unmodified lines | ||
| 24 | 24 | select GENERIC_CPU_DEVICES |
| 25 | 25 | select HAVE_UID16 |
| 26 | 26 | select GENERIC_ATOMIC64 |
| 27 | − select GENERIC_CLOCKEVENTS | |
| 28 | 27 | select GENERIC_CLOCKEVENTS_BROADCAST |
| 29 | 28 | select GENERIC_STRNCPY_FROM_USER |
| 30 | 29 | select GENERIC_STRNLEN_USER |
| @@ -163,7 +163,6 @@ config PPC · 162 unmodified lines | ||
| 163 | 163 | select EDAC_ATOMIC_SCRUB |
| 164 | 164 | select EDAC_SUPPORT |
| 165 | 165 | select GENERIC_ATOMIC64 if PPC32 |
| 166 | − select GENERIC_CLOCKEVENTS | |
| 167 | 166 | select GENERIC_CLOCKEVENTS_BROADCAST if SMP |
| 168 | 167 | select GENERIC_CMOS_UPDATE |
| 169 | 168 | select GENERIC_CPU_AUTOPROBE |
| @@ -37,7 +37,6 @@ config RISCV · 36 unmodified lines | ||
| 37 | 37 | select EDAC_SUPPORT |
| 38 | 38 | select GENERIC_ARCH_TOPOLOGY if SMP |
| 39 | 39 | select GENERIC_ATOMIC64 if !64BIT |
| 40 | − select GENERIC_CLOCKEVENTS | |
| 41 | 40 | select GENERIC_EARLY_IOREMAP |
| 42 | 41 | select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO |
| 43 | 42 | select GENERIC_IOREMAP |
| @@ -116,7 +116,6 @@ config S390 · 115 unmodified lines | ||
| 116 | 116 | select CLONE_BACKWARDS2 |
| 117 | 117 | select DMA_OPS if PCI |
| 118 | 118 | select DYNAMIC_FTRACE if FUNCTION_TRACER |
| 119 | − select GENERIC_CLOCKEVENTS | |
| 120 | 119 | select GENERIC_CPU_AUTOPROBE |
| 121 | 120 | select GENERIC_CPU_VULNERABILITIES |
| 122 | 121 | select GENERIC_FIND_FIRST_BIT |
| @@ -16,7 +16,6 @@ config SUPERH · 15 unmodified lines | ||
| 16 | 16 | select CPU_NO_EFFICIENT_FFS |
| 17 | 17 | select DMA_DECLARE_COHERENT |
| 18 | 18 | select GENERIC_ATOMIC64 |
| 19 | − select GENERIC_CLOCKEVENTS | |
| 20 | 19 | select GENERIC_CMOS_UPDATE if SH_SH03 || SH_DREAMCAST |
| 21 | 20 | select GENERIC_IDLE_POLL_SETUP |
| 22 | 21 | select GENERIC_IRQ_SHOW |
| @@ -39,7 +39,6 @@ config SPARC · 38 unmodified lines | ||
| 39 | 39 | select HAVE_EBPF_JIT if SPARC64 |
| 40 | 40 | select HAVE_DEBUG_BUGVERBOSE |
| 41 | 41 | select GENERIC_SMP_IDLE_THREAD |
| 42 | − select GENERIC_CLOCKEVENTS | |
| 43 | 42 | select GENERIC_STRNCPY_FROM_USER |
| 44 | 43 | select GENERIC_STRNLEN_USER |
| 45 | 44 | select MODULES_USE_ELF_RELA |
| @@ -17,7 +17,6 @@ config UML · 16 unmodified lines | ||
| 17 | 17 | select NO_DMA |
| 18 | 18 | select GENERIC_IRQ_SHOW |
| 19 | 19 | select GENERIC_CPU_DEVICES |
| 20 | − select GENERIC_CLOCKEVENTS | |
| 21 | 20 | select HAVE_GCC_PLUGINS |
| 22 | 21 | select SET_FS |
| 23 | 22 | select TTY # Needed for line.c |
| @@ -108,7 +108,6 @@ config X86 · 107 unmodified lines | ||
| 108 | 108 | select DCACHE_WORD_ACCESS |
| 109 | 109 | select EDAC_ATOMIC_SCRUB |
| 110 | 110 | select EDAC_SUPPORT |
| 111 | − select GENERIC_CLOCKEVENTS | |
| 112 | 111 | select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC) |
| 113 | 112 | select GENERIC_CLOCKEVENTS_MIN_ADJUST |
| 114 | 113 | select GENERIC_CMOS_UPDATE |
| @@ -16,7 +16,6 @@ config XTENSA · 15 unmodified lines | ||
| 16 | 16 | select COMMON_CLK |
| 17 | 17 | select DMA_REMAP if MMU |
| 18 | 18 | select GENERIC_ATOMIC64 |
| 19 | − select GENERIC_CLOCKEVENTS | |
| 20 | 19 | select GENERIC_IRQ_SHOW |
| 21 | 20 | select GENERIC_PCI_IOMAP |
| 22 | 21 | select GENERIC_SCHED_CLOCK |
| @@ -28,7 +28,7 @@ config GENERIC_TIME_VSYSCALL · 27 unmodified lines | ||
| 28 | 28 | |
| 29 | 29 | # The generic clock events infrastructure |
| 30 | 30 | config GENERIC_CLOCKEVENTS |
| 31 | − bool | |
| 31 | + def_bool !LEGACY_TIMER_TICK | |
| 32 | 32 | |
| 33 | 33 | # Architecture can handle broadcast in a driver-agnostic way |
| 34 | 34 | config ARCH_HAS_TICK_BROADCAST |