ktime: Optimize ktime_divns for constant divisors
authorNicolas Pitre <nicolas.pitre@linaro.org>
Wed, 3 Dec 2014 19:43:06 +0000 (14:43 -0500)
committerDanny Wood <danwood76@gmail.com>
Tue, 28 Sep 2021 12:06:41 +0000 (13:06 +0100)
commit9e94a7be46f280db2f3b7dc7045fdfbbfd4c6bc9
tree286d5dacf0db3c703892d76bbfa875412ea369b5
parentc06ecb5f940200504159bd3bd63c0a29c4780b83
ktime: Optimize ktime_divns for constant divisors

[ Upstream commit 8b618628b2bf83512fc8df5e8672619d65adfdfb ]

At least on ARM, do_div() is optimized to turn constant divisors into
an inline multiplication by the reciprocal value at compile time.
However this optimization is missed entirely whenever ktime_divns() is
used and the slow out-of-line division code is used all the time.

Let ktime_divns() use do_div() inline whenever the divisor is constant
and small enough.  This will make things like ktime_to_us() and
ktime_to_ms() much faster.

Change-Id: I6a672b10d6d6b373b327f9548135ededfd1e1835
Cc: Arnd Bergmann <arnd.bergmann@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Nicolas Pitre <nico@linaro.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
include/linux/ktime.h
kernel/hrtimer.c