]> git.baikalelectronics.ru Git - kernel.git/commit
MIPS: cevt-r4k: Dynamically calculate min_delta_ns
authorJames Hogan <james.hogan@imgtec.com>
Fri, 22 Apr 2016 17:19:17 +0000 (18:19 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 13 May 2016 13:30:25 +0000 (15:30 +0200)
commita4b1e88e122a29959801b6fdcd9f13c31027bb62
treea67871d91fff562e7074b96d95a0c827408093a5
parentc7e94e73a7f76874a412d0b08c15a6fd10287776
MIPS: cevt-r4k: Dynamically calculate min_delta_ns

Calculate the MIPS clockevent device's min_delta_ns dynamically based on
the time it takes to perform the mips_next_event() sequence.

Virtualisation in particular makes the current fixed min_delta of 0x300
inappropriate under some circumstances, as the CP0_Count and CP0_Compare
registers may be being emulated by the hypervisor, and the frequency may
not correspond directly to the CPU frequency.

We actually use twice the median of multiple 75th percentiles of
multiple measurements of how long the mips_next_event() sequence takes,
in order to fairly efficiently eliminate outliers due to unexpected
hypervisor latency (which would need handling with retries when it
occurs during normal operation anyway).

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/13176/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/cevt-r4k.c