Hi Thomas, this pull request contains the next irq prediction as posted for V10 [1] which takes into account all the commments. It is based on top of v4.12-rc5.
As previously discussed the code is not enabled by default, hence compiled out. The first patch adds the IRQF_TIMER flag to the timers which are percpu in order to discard any timing measurement when the interrupt is coming from a timer. The second patch adds a circular buffer and the small routine to store the local time when an interrupt occurs. The t-uple <irq,timestamp> are encoded together into a single 64bits as suggested by Nicolas Pitre. The third patch provides the mathematic to compute the regular intervals. The rational is in changelog and the math is commented in details in the code. Thanks. -- Daniel [1] https://www.spinics.net/lists/kernel/msg2509177.html The following changes since commit 32c1431eea4881a6b17bd7c639315010aeefa452: Linux 4.12-rc5 (2017-06-11 16:48:20 -0700) are available in the git repository at: http://g...@git.linaro.org/people/daniel.lezcano/linux.git next-irq/4.13 for you to fetch changes up to 1ed971bc878ede444d10f8a24bc9963938f0b7c6: irq: Compute the periodic interval for interrupts (2017-06-12 15:06:00 +0200) ---------------------------------------------------------------- Daniel Lezcano (3): irq: Allow to pass the IRQF_TIMER flag with percpu irq request irq: Track the interrupt timings irq: Compute the periodic interval for interrupts arch/arm/kernel/smp_twd.c | 3 +- drivers/clocksource/arc_timer.c | 4 +-- drivers/clocksource/arm_arch_timer.c | 20 ++++++++----- drivers/clocksource/arm_global_timer.c | 4 +-- drivers/clocksource/exynos_mct.c | 7 +++-- drivers/clocksource/qcom-timer.c | 4 +-- drivers/clocksource/time-armada-370-xp.c | 9 +++--- drivers/clocksource/timer-nps.c | 6 ++-- include/linux/interrupt.h | 17 ++++++++++- kernel/irq/Kconfig | 3 ++ kernel/irq/Makefile | 1 + kernel/irq/handle.c | 2 ++ kernel/irq/internals.h | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ kernel/irq/manage.c | 18 +++++++---- kernel/irq/timings.c | 366 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 15 files changed, 536 insertions(+), 31 deletions(-) create mode 100644 kernel/irq/timings.c -- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog