diff mbox

OMAP: don't trace functions called from sched_clock

Message ID 1304846514-15641-1-git-send-email-rabin@rab.in (mailing list archive)
State New, archived
Headers show

Commit Message

Rabin Vincent May 8, 2011, 9:21 a.m. UTC
omap_readl() is used from the sched_clock() implementations and so must
be marked notrace to avoid recursion in ftrace.  Same thing with
mpu_read() for OMAP1.

Signed-off-by: Rabin Vincent <rabin@rab.in>
---
 arch/arm/mach-omap1/io.c   |    2 +-
 arch/arm/mach-omap1/time.c |    2 +-
 arch/arm/mach-omap2/io.c   |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

Comments

Rabin Vincent May 27, 2011, 3:33 p.m. UTC | #1
Tony,

On Sun, May 8, 2011 at 14:51, Rabin Vincent <rabin@rab.in> wrote:
> omap_readl() is used from the sched_clock() implementations and so must
> be marked notrace to avoid recursion in ftrace.  Same thing with
> mpu_read() for OMAP1.
>
> Signed-off-by: Rabin Vincent <rabin@rab.in>

Comments on this patch?  This is a bugfix; the function graph tracer
will crash and burn on OMAP without this.

> ---
>  arch/arm/mach-omap1/io.c   |    2 +-
>  arch/arm/mach-omap1/time.c |    2 +-
>  arch/arm/mach-omap2/io.c   |    2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c
> index 870886a..36ec2d7 100644
> --- a/arch/arm/mach-omap1/io.c
> +++ b/arch/arm/mach-omap1/io.c
> @@ -158,7 +158,7 @@ u16 omap_readw(u32 pa)
>  }
>  EXPORT_SYMBOL(omap_readw);
>
> -u32 omap_readl(u32 pa)
> +u32 notrace omap_readl(u32 pa)
>  {
>        return __raw_readl(OMAP1_IO_ADDRESS(pa));
>  }
> diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
> index 6885d2f..88c5c5e 100644
> --- a/arch/arm/mach-omap1/time.c
> +++ b/arch/arm/mach-omap1/time.c
> @@ -203,7 +203,7 @@ static struct irqaction omap_mpu_timer2_irq = {
>        .handler        = omap_mpu_timer2_interrupt,
>  };
>
> -static cycle_t mpu_read(struct clocksource *cs)
> +static cycle_t notrace mpu_read(struct clocksource *cs)
>  {
>        return ~omap_mpu_timer_read(1);
>  }
> diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
> index 441e79d..f1987b1 100644
> --- a/arch/arm/mach-omap2/io.c
> +++ b/arch/arm/mach-omap2/io.c
> @@ -441,7 +441,7 @@ u16 omap_readw(u32 pa)
>  }
>  EXPORT_SYMBOL(omap_readw);
>
> -u32 omap_readl(u32 pa)
> +u32 notrace omap_readl(u32 pa)
>  {
>        return __raw_readl(OMAP2_L4_IO_ADDRESS(pa));
>  }
> --
> 1.7.4.1
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kevin Hilman May 27, 2011, 8:39 p.m. UTC | #2
Rabin Vincent <rabin@rab.in> writes:

> omap_readl() is used from the sched_clock() implementations and so must
> be marked notrace to avoid recursion in ftrace.  Same thing with
> mpu_read() for OMAP1.
>
> Signed-off-by: Rabin Vincent <rabin@rab.in>

Acked-by: Kevin Hilman <khilman@ti.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kevin Hilman May 28, 2011, 12:32 a.m. UTC | #3
Kevin Hilman <khilman@ti.com> writes:

> Rabin Vincent <rabin@rab.in> writes:
>
>> omap_readl() is used from the sched_clock() implementations and so must
>> be marked notrace to avoid recursion in ftrace.  Same thing with
>> mpu_read() for OMAP1.
>>
>> Signed-off-by: Rabin Vincent <rabin@rab.in>
>
> Acked-by: Kevin Hilman <khilman@ti.com>

I also meant to suggest this should probably queue for .40-rc series.

Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren May 31, 2011, 11:49 a.m. UTC | #4
* Rabin Vincent <rabin@rab.in> [110527 08:36]:
> Tony,
> 
> On Sun, May 8, 2011 at 14:51, Rabin Vincent <rabin@rab.in> wrote:
> > omap_readl() is used from the sched_clock() implementations and so must
> > be marked notrace to avoid recursion in ftrace.  Same thing with
> > mpu_read() for OMAP1.

We should rather ioremap the 32KSYNCT_BASE in omap_init_clocksource_32k
and then use __raw_readl. That allows us to get rid of omap_read usage
here and simplifies the code.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren May 31, 2011, 11:50 a.m. UTC | #5
* Kevin Hilman <khilman@ti.com> [110527 17:28]:
> Kevin Hilman <khilman@ti.com> writes:
> 
> > Rabin Vincent <rabin@rab.in> writes:
> >
> >> omap_readl() is used from the sched_clock() implementations and so must
> >> be marked notrace to avoid recursion in ftrace.  Same thing with
> >> mpu_read() for OMAP1.
> >>
> >> Signed-off-by: Rabin Vincent <rabin@rab.in>
> >
> > Acked-by: Kevin Hilman <khilman@ti.com>
> 
> I also meant to suggest this should probably queue for .40-rc series.

Took a quick look and we should get rid of the omap_readl usage instead
like I commented in another mail.

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kevin Hilman May 31, 2011, 4:13 p.m. UTC | #6
Tony Lindgren <tony@atomide.com> writes:

> * Kevin Hilman <khilman@ti.com> [110527 17:28]:
>> Kevin Hilman <khilman@ti.com> writes:
>> 
>> > Rabin Vincent <rabin@rab.in> writes:
>> >
>> >> omap_readl() is used from the sched_clock() implementations and so must
>> >> be marked notrace to avoid recursion in ftrace.  Same thing with
>> >> mpu_read() for OMAP1.
>> >>
>> >> Signed-off-by: Rabin Vincent <rabin@rab.in>
>> >
>> > Acked-by: Kevin Hilman <khilman@ti.com>
>> 
>> I also meant to suggest this should probably queue for .40-rc series.
>
> Took a quick look and we should get rid of the omap_readl usage instead
> like I commented in another mail.

Agreed, that's a better approach.

Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c
index 870886a..36ec2d7 100644
--- a/arch/arm/mach-omap1/io.c
+++ b/arch/arm/mach-omap1/io.c
@@ -158,7 +158,7 @@  u16 omap_readw(u32 pa)
 }
 EXPORT_SYMBOL(omap_readw);
 
-u32 omap_readl(u32 pa)
+u32 notrace omap_readl(u32 pa)
 {
 	return __raw_readl(OMAP1_IO_ADDRESS(pa));
 }
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
index 6885d2f..88c5c5e 100644
--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -203,7 +203,7 @@  static struct irqaction omap_mpu_timer2_irq = {
 	.handler	= omap_mpu_timer2_interrupt,
 };
 
-static cycle_t mpu_read(struct clocksource *cs)
+static cycle_t notrace mpu_read(struct clocksource *cs)
 {
 	return ~omap_mpu_timer_read(1);
 }
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 441e79d..f1987b1 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -441,7 +441,7 @@  u16 omap_readw(u32 pa)
 }
 EXPORT_SYMBOL(omap_readw);
 
-u32 omap_readl(u32 pa)
+u32 notrace omap_readl(u32 pa)
 {
 	return __raw_readl(OMAP2_L4_IO_ADDRESS(pa));
 }