Add notrace attribute to sched_clock, to avoid
recursion with ftrace function tracing.
Signed-off-by: Tim Bird <[email protected]>
---
arch/arm/mach-mmp/time.c | 2 +-
arch/arm/mach-pxa/time.c | 2 +-
arch/arm/mach-realview/core.c | 2 +-
arch/arm/mach-sa1100/generic.c | 2 +-
arch/arm/mach-versatile/core.c | 2 +-
arch/arm/plat-omap/common.c | 4 ++--
6 files changed, 7 insertions(+), 7 deletions(-)
--- a/arch/arm/mach-mmp/time.c
+++ b/arch/arm/mach-mmp/time.c
@@ -72,7 +72,7 @@ static inline uint32_t timer_read(void)
return __raw_readl(TIMERS_VIRT_BASE + TMR_CVWR(0));
}
-unsigned long long sched_clock(void)
+unsigned long long notrace sched_clock(void)
{
unsigned long long v = cnt32_to_63(timer_read());
return (v * tcr2ns_scale) >> TCR2NS_SCALE_FACTOR;
--- a/arch/arm/mach-pxa/time.c
+++ b/arch/arm/mach-pxa/time.c
@@ -51,7 +51,7 @@ static void __init set_oscr2ns_scale(uns
oscr2ns_scale++;
}
-unsigned long long sched_clock(void)
+unsigned long long notrace sched_clock(void)
{
unsigned long long v = cnt32_to_63(OSCR);
return (v * oscr2ns_scale) >> OSCR2NS_SCALE_FACTOR;
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -60,7 +60,7 @@ void __iomem *gic_cpu_base_addr;
* This is the RealView sched_clock implementation. This has
* a resolution of 41.7ns, and a maximum value of about 179s.
*/
-unsigned long long sched_clock(void)
+unsigned long long notrace sched_clock(void)
{
unsigned long long v;
--- a/arch/arm/mach-sa1100/generic.c
+++ b/arch/arm/mach-sa1100/generic.c
@@ -131,7 +131,7 @@ EXPORT_SYMBOL(cpufreq_get);
*
* ( * 1E9 / 3686400 => * 78125 / 288)
*/
-unsigned long long sched_clock(void)
+unsigned long long notrace sched_clock(void)
{
unsigned long long v = cnt32_to_63(OSCR);
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -237,7 +237,7 @@ void __init versatile_map_io(void)
* long as there is always less than 89 seconds between successive
* calls to this function.
*/
-unsigned long long sched_clock(void)
+unsigned long long notrace sched_clock(void)
{
unsigned long long v = cnt32_to_63(readl(VERSATILE_REFCOUNTER));
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -185,7 +185,7 @@ console_initcall(omap_add_serial_console
#include <linux/clocksource.h>
-static cycle_t omap_32k_read(struct clocksource *cs)
+static cycle_t notrace omap_32k_read(struct clocksource *cs)
{
return omap_readl(TIMER_32K_SYNCHRONIZED);
}
@@ -203,7 +203,7 @@ static struct clocksource clocksource_32
* Returns current time from boot in nsecs. It's OK for this to wrap
* around for now, as it's just a relative time stamp.
*/
-unsigned long long sched_clock(void)
+unsigned long long notrace sched_clock(void)
{
unsigned long long ret;
2009/6/13 Tim Bird <[email protected]>:
> Add notrace attribute to sched_clock, to avoid
> recursion with ftrace function tracing.
>
> Signed-off-by: Tim Bird <[email protected]>
> ---
> arch/arm/mach-mmp/time.c | 2 +-
> arch/arm/mach-pxa/time.c | 2 +-
> arch/arm/mach-realview/core.c | 2 +-
> arch/arm/mach-sa1100/generic.c | 2 +-
> arch/arm/mach-versatile/core.c | 2 +-
> arch/arm/plat-omap/common.c | 4 ++--
> 6 files changed, 7 insertions(+), 7 deletions(-)
And now that Paul Mundt is making it possible to use the default
sched_clock() with the generic clocksource and the OMAP hack
will likely go away, should the default implementation in
kernel/sched_clock.c also be tagged as
unsigned long long notrace __attribute__((weak)) sched_clock(void)
or something?
Should it be tagged notrace even if it's the old jiffybased one even?
Linus Walleij
On Sun, Jun 14, 2009 at 07:51:04PM +0200, Linus Walleij wrote:
> 2009/6/13 Tim Bird <[email protected]>:
>
> > Add notrace attribute to sched_clock, to avoid
> > recursion with ftrace function tracing.
> >
> > Signed-off-by: Tim Bird <[email protected]>
> > ---
> > arch/arm/mach-mmp/time.c | 2 +-
> > arch/arm/mach-pxa/time.c | 2 +-
> > arch/arm/mach-realview/core.c | 2 +-
> > arch/arm/mach-sa1100/generic.c | 2 +-
> > arch/arm/mach-versatile/core.c | 2 +-
> > arch/arm/plat-omap/common.c | 4 ++--
> > 6 files changed, 7 insertions(+), 7 deletions(-)
>
> And now that Paul Mundt is making it possible to use the default
> sched_clock() with the generic clocksource and the OMAP hack
> will likely go away, should the default implementation in
> kernel/sched_clock.c also be tagged as
> unsigned long long notrace __attribute__((weak)) sched_clock(void)
> or something?
>
> Should it be tagged notrace even if it's the old jiffybased one even?
>
Thanks for pointing that out. Yes, the new generic version will need the
notrace attribute as well, I will include this in the next iteration.