mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
synced 2025-10-25 06:46:20 +10:00
- Core:
- The timer_shutdown[_sync]() infrastructure:
Tearing down timers can be tedious when there are circular
dependencies to other things which need to be torn down. A prime
example is timer and workqueue where the timer schedules work and the
work arms the timer.
What needs to prevented is that pending work which is drained via
destroy_workqueue() does not rearm the previously shutdown
timer. Nothing in that shutdown sequence relies on the timer being
functional.
The conclusion was that the semantics of timer_shutdown_sync() should
be:
- timer is not enqueued
- timer callback is not running
- timer cannot be rearmed
Preventing the rearming of shutdown timers is done by discarding rearm
attempts silently. A warning for the case that a rearm attempt of a
shutdown timer is detected would not be really helpful because it's
entirely unclear how it should be acted upon. The only way to address
such a case is to add 'if (in_shutdown)' conditionals all over the
place. This is error prone and in most cases of teardown not required
all.
- The real fix for the bluetooth HCI teardown based on
timer_shutdown_sync().
A larger scale conversion to timer_shutdown_sync() is work in
progress.
- Consolidation of VDSO time namespace helper functions
- Small fixes for timer and timerqueue
- Drivers:
- Prevent integer overflow on the XGene-1 TVAL register which causes
an never ending interrupt storm.
- The usual set of new device tree bindings
- Small fixes and improvements all over the place
-----BEGIN PGP SIGNATURE-----
iQJHBAABCgAxFiEEQp8+kY+LLUocC4bMphj1TA10mKEFAmOUuC0THHRnbHhAbGlu
dXRyb25peC5kZQAKCRCmGPVMDXSYodpZD/9kCDi009n65QFF1J4kE5aZuABbRMtO
7sy66fJpDyB/MtcbPPH29uzQUEs1VMTQVB+ZM+7e1YGoxSWuSTzeoFH+yK1w4tEZ
VPbOcvUEjG0esKUehwYFeOjSnIjy6M1Y41aOUaDnq00/azhfTrzLxQA1BbbFbkpw
S7u2hllbyRJ8KdqQyV9cVpXmze6fcpdtNhdQeoA7qQCsSPnJ24MSpZ/PG9bAovq8
75IRROT7CQRd6AMKAVpA9Ov8ak9nbY3EgQmoKcp5ZXfXz8kD3nHky9Lste7djgYB
U085Vwcelt39V5iXevDFfzrBYRUqrMKOXIf2xnnoDNeF5Jlj5gChSNVZwTLO38wu
RFEVCjCjuC41GQJWSck9LRSYdriW/htVbEE8JLc6uzUJGSyjshgJRn/PK4HjpiLY
AvH2rd4rAap/rjDKvfWvBqClcfL7pyBvavgJeyJ8oXyQjHrHQwapPcsMFBm0Cky5
soF0Lr3hIlQ9u+hwUuFdNZkY9mOg09g9ImEjW1AZTKY0DfJMc5JAGjjSCfuopVUN
Uf/qqcUeQPSEaC+C9xiFs0T3svYFxBqpgPv4B6t8zAnozon9fyZs+lv5KdRg4X77
qX395qc6PaOSQlA7gcxVw3vjCPd0+hljXX84BORP7z+uzcsomvIH1MxJepIHmgaJ
JrYbSZ5qzY5TTA==
=JlDe
-----END PGP SIGNATURE-----
Merge tag 'timers-core-2022-12-10' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer updates from Thomas Gleixner:
"Updates for timers, timekeeping and drivers:
Core:
- The timer_shutdown[_sync]() infrastructure:
Tearing down timers can be tedious when there are circular
dependencies to other things which need to be torn down. A prime
example is timer and workqueue where the timer schedules work and
the work arms the timer.
What needs to prevented is that pending work which is drained via
destroy_workqueue() does not rearm the previously shutdown timer.
Nothing in that shutdown sequence relies on the timer being
functional.
The conclusion was that the semantics of timer_shutdown_sync()
should be:
- timer is not enqueued
- timer callback is not running
- timer cannot be rearmed
Preventing the rearming of shutdown timers is done by discarding
rearm attempts silently.
A warning for the case that a rearm attempt of a shutdown timer is
detected would not be really helpful because it's entirely unclear
how it should be acted upon. The only way to address such a case is
to add 'if (in_shutdown)' conditionals all over the place. This is
error prone and in most cases of teardown not required all.
- The real fix for the bluetooth HCI teardown based on
timer_shutdown_sync().
A larger scale conversion to timer_shutdown_sync() is work in
progress.
- Consolidation of VDSO time namespace helper functions
- Small fixes for timer and timerqueue
Drivers:
- Prevent integer overflow on the XGene-1 TVAL register which causes
an never ending interrupt storm.
- The usual set of new device tree bindings
- Small fixes and improvements all over the place"
* tag 'timers-core-2022-12-10' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (34 commits)
dt-bindings: timer: renesas,cmt: Add r8a779g0 CMT support
dt-bindings: timer: renesas,tmu: Add r8a779g0 support
clocksource/drivers/arm_arch_timer: Use kstrtobool() instead of strtobool()
clocksource/drivers/timer-ti-dm: Fix missing clk_disable_unprepare in dmtimer_systimer_init_clock()
clocksource/drivers/timer-ti-dm: Clear settings on probe and free
clocksource/drivers/timer-ti-dm: Make timer_get_irq static
clocksource/drivers/timer-ti-dm: Fix warning for omap_timer_match
clocksource/drivers/arm_arch_timer: Fix XGene-1 TVAL register math error
clocksource/drivers/timer-npcm7xx: Enable timer 1 clock before use
dt-bindings: timer: nuvoton,npcm7xx-timer: Allow specifying all clocks
dt-bindings: timer: rockchip: Add rockchip,rk3128-timer
clockevents: Repair kernel-doc for clockevent_delta2ns()
clocksource/drivers/ingenic-ost: Define pm functions properly in platform_driver struct
clocksource/drivers/sh_cmt: Access registers according to spec
vdso/timens: Refactor copy-pasted find_timens_vvar_page() helper into one copy
Bluetooth: hci_qca: Fix the teardown problem for real
timers: Update the documentation to reflect on the new timer_shutdown() API
timers: Provide timer_shutdown[_sync]()
timers: Add shutdown mechanism to the internal functions
timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode
...
|
||
|---|---|---|
| .. | ||
| acpi_pm.c | ||
| arc_timer.c | ||
| arm_arch_timer.c | ||
| arm_global_timer.c | ||
| armv7m_systick.c | ||
| asm9260_timer.c | ||
| bcm2835_timer.c | ||
| bcm_kona_timer.c | ||
| clksrc_st_lpc.c | ||
| clksrc-dbx500-prcmu.c | ||
| clps711x-timer.c | ||
| dummy_timer.c | ||
| dw_apb_timer_of.c | ||
| dw_apb_timer.c | ||
| em_sti.c | ||
| exynos_mct.c | ||
| hyperv_timer.c | ||
| i8253.c | ||
| ingenic-ost.c | ||
| ingenic-sysost.c | ||
| ingenic-timer.c | ||
| jcore-pit.c | ||
| Kconfig | ||
| Makefile | ||
| mips-gic-timer.c | ||
| mmio.c | ||
| mps2-timer.c | ||
| mxs_timer.c | ||
| nomadik-mtu.c | ||
| numachip.c | ||
| renesas-ostm.c | ||
| samsung_pwm_timer.c | ||
| scx200_hrt.c | ||
| sh_cmt.c | ||
| sh_mtu2.c | ||
| sh_tmu.c | ||
| timer-armada-370-xp.c | ||
| timer-atmel-pit.c | ||
| timer-atmel-st.c | ||
| timer-atmel-tcb.c | ||
| timer-cadence-ttc.c | ||
| timer-clint.c | ||
| timer-cs5535.c | ||
| timer-davinci.c | ||
| timer-digicolor.c | ||
| timer-fsl-ftm.c | ||
| timer-fttmr010.c | ||
| timer-goldfish.c | ||
| timer-gx6605s.c | ||
| timer-gxp.c | ||
| timer-imx-gpt.c | ||
| timer-imx-sysctr.c | ||
| timer-imx-tpm.c | ||
| timer-integrator-ap.c | ||
| timer-ixp4xx.c | ||
| timer-keystone.c | ||
| timer-lpc32xx.c | ||
| timer-mediatek.c | ||
| timer-meson6.c | ||
| timer-microchip-pit64b.c | ||
| timer-milbeaut.c | ||
| timer-mp-csky.c | ||
| timer-msc313e.c | ||
| timer-npcm7xx.c | ||
| timer-of.c | ||
| timer-of.h | ||
| timer-orion.c | ||
| timer-owl.c | ||
| timer-oxnas-rps.c | ||
| timer-pistachio.c | ||
| timer-probe.c | ||
| timer-pxa.c | ||
| timer-qcom.c | ||
| timer-rda.c | ||
| timer-riscv.c | ||
| timer-rockchip.c | ||
| timer-sp804.c | ||
| timer-sp.h | ||
| timer-sprd.c | ||
| timer-stm32-lp.c | ||
| timer-stm32.c | ||
| timer-sun4i.c | ||
| timer-sun5i.c | ||
| timer-tegra186.c | ||
| timer-tegra.c | ||
| timer-ti-32k.c | ||
| timer-ti-dm-systimer.c | ||
| timer-ti-dm.c | ||
| timer-versatile.c | ||
| timer-vf-pit.c | ||
| timer-vt8500.c | ||
| timer-zevio.c | ||