ARM: 7205/2: sched_clock: allow sched_clock to be selected at runtime
authorMarc Zyngier <Marc.Zyngier@arm.com>
Thu, 15 Dec 2011 11:19:23 +0000 (12:19 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 18 Dec 2011 23:00:26 +0000 (23:00 +0000)
commit2f0778afac79bd8d226225556858a636931eeabc
treee00cea674f3d6cc8c5584aa5b75239f11f6d229d
parent3bdc3484e8f2b1b219ad0397d81ce4601fbaf76d
ARM: 7205/2: sched_clock: allow sched_clock to be selected at runtime

sched_clock() is yet another blocker on the road to the single
image. This patch implements an idea by Russell King:

http://www.spinics.net/lists/linux-omap/msg49561.html

Instead of asking the platform to implement both sched_clock()
itself and the rollover callback, simply register a read()
function, and let the ARM code care about sched_clock() itself,
the conversion to ns and the rollover. sched_clock() uses
this read() function as an indirection to the platform code.
If the platform doesn't provide a read(), the code falls back
to the jiffy counter (just like the default sched_clock).

This allow some simplifications and possibly some footprint gain
when multiple platforms are compiled in. Among the drawbacks,
the removal of the *_fixed_sched_clock optimization which could
negatively impact some platforms (sa1100, tegra, versatile
and omap).

Tested on 11MPCore, OMAP4 and Tegra.

Cc: Imre Kaloz <kaloz@openwrt.org>
Cc: Eric Miao <eric.y.miao@gmail.com>
Cc: Colin Cross <ccross@android.com>
Cc: Erik Gilling <konkers@android.com>
Cc: Olof Johansson <olof@lixom.net>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: Alessandro Rubini <rubini@unipv.it>
Cc: STEricsson <STEricsson_nomadik_linux@list.st.com>
Cc: Lennert Buytenhek <kernel@wantstofly.org>
Cc: Ben Dooks <ben-linux@fluff.org>
Tested-by: Jamie Iles <jamie@jamieiles.com>
Tested-by: Tony Lindgren <tony@atomide.com>
Tested-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Krzysztof Halasa <khc@pm.waw.pl>
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
19 files changed:
arch/arm/include/asm/sched_clock.h
arch/arm/kernel/sched_clock.c
arch/arm/mach-ixp4xx/common.c
arch/arm/mach-mmp/time.c
arch/arm/mach-omap1/time.c
arch/arm/mach-omap2/timer.c
arch/arm/mach-picoxcell/time.c
arch/arm/mach-pxa/time.c
arch/arm/mach-sa1100/time.c
arch/arm/mach-tegra/timer.c
arch/arm/mach-u300/timer.c
arch/arm/plat-iop/time.c
arch/arm/plat-mxc/time.c
arch/arm/plat-nomadik/timer.c
arch/arm/plat-omap/counter_32k.c
arch/arm/plat-omap/include/plat/common.h
arch/arm/plat-orion/time.c
arch/arm/plat-s5p/s5p-time.c
arch/arm/plat-versatile/sched-clock.c