Time, timers and related driver updates:

 - Prevent unnecessary timer softirq invocations by extending the tracking
   of the next expiring timer in the timer wheel beyond the existing NOHZ
   functionality. The tracking overhead at enqueue time is within the
   noise, but on sensitive workloads the avoidance of the soft interrupt
   invocation is a measurable improvement.

 - The obligatory new clocksource driver for Ingenic X100 OST

 - The usual fixes, improvements, cleanups and extensions for newer chip
   variants all over the driver space.
timers: Recalculate next timer interrupt only when necessary

The nohz tick code recalculates the timer wheel's next expiry on each idle
loop iteration.

On the other hand, the base next expiry is now always cached and updated
upon timer enqueue and execution. Only timer dequeue may leave
base->next_expiry out of date (but then its stale value won't ever go past
the actual next expiry to be recalculated).

Since recalculating the next_expiry isn't a free operation, especially when
the last wheel level is reached to find out that no timer has been enqueued
at all, reuse the next expiry cache when it is known to be reliable, which
it is most of the time.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200723151641.12236-1-frederic@kernel.org

1 file changed