• Linus Torvalds's avatar
    Merge tag 'timers-core-2024-05-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2d9db778
    Linus Torvalds authored
    Pull timers and timekeeping updates from Thomas Gleixner:
     "Core code:
    
       - Make timekeeping and VDSO time readouts resilent against math
         overflow:
    
         In guest context the kernel is prone to math overflow when the host
         defers the timer interrupt due to overload, malfunction or malice.
    
         This can be mitigated by checking the clocksource delta for the
         maximum deferrement which is readily available. If that value is
         exceeded then the code uses a slowpath function which can handle
         the multiplication overflow.
    
         This functionality is enabled unconditionally in the kernel, but
         made conditional in the VDSO code. The latter is conditional
         because it allows architectures to optimize the check so it is not
         causing performance regressions.
    
         On X86 this is achieved by reworking the existing check for
         negative TSC deltas as a negative delta obviously exceeds the
         maximum deferrement when it is evaluated as an unsigned value. That
         avoids two conditionals in the hotpath and allows to hide both the
         negative delta and the large delta handling in the same slow path.
    
       - Add an initial minimal ktime_t abstraction for Rust
    
       - The usual boring cleanups and enhancements
    
      Drivers:
    
       - Boring updates to device trees and trivial enhancements in various
         drivers"
    
    * tag 'timers-core-2024-05-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (33 commits)
      clocksource/drivers/arm_arch_timer: Mark hisi_161010101_oem_info const
      clocksource/drivers/timer-ti-dm: Remove an unused field in struct dmtimer
      clocksource/drivers/renesas-ostm: Avoid reprobe after successful early probe
      clocksource/drivers/renesas-ostm: Allow OSTM driver to reprobe for RZ/V2H(P) SoC
      dt-bindings: timer: renesas: ostm: Document Renesas RZ/V2H(P) SoC
      rust: time: doc: Add missing C header links
      clocksource: Make the int help prompt unit readable in ncurses
      hrtimer: Rename __hrtimer_hres_active() to hrtimer_hres_active()
      timerqueue: Remove never used function timerqueue_node_expires()
      rust: time: Add Ktime
      vdso: Fix powerpc build U64_MAX undeclared error
      clockevents: Convert s[n]printf() to sysfs_emit()
      clocksource: Convert s[n]printf() to sysfs_emit()
      clocksource: Make watchdog and suspend-timing multiplication overflow safe
      timekeeping: Let timekeeping_cycles_to_ns() handle both under and overflow
      timekeeping: Make delta calculation overflow safe
      timekeeping: Prepare timekeeping_cycles_to_ns() for overflow safety
      timekeeping: Fold in timekeeping_delta_to_ns()
      timekeeping: Consolidate timekeeping helpers
      timekeeping: Refactor timekeeping helpers
      ...
    2d9db778
Kconfig 100 KB