From: Stephen Boyd <sboyd@codeaurora.org>
To: Russell King <linux@arm.linux.org.uk>
Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] ARM: sched_clock: Add more notrace to prevent recursion
Date: Tue, 26 Mar 2013 10:35:49 -0700 [thread overview]
Message-ID: <5151DC75.7030606@codeaurora.org> (raw)
In-Reply-To: <514B483F.7000304@codeaurora.org>
On 03/21/13 10:49, Stephen Boyd wrote:
> On 03/14/13 17:08, Stephen Boyd wrote:
>> cyc_to_sched_clock() is called by sched_clock() and cyc_to_ns()
>> is called by cyc_to_sched_clock(). I suspect that some compilers
>> inline both of these functions into sched_clock() and so we've
>> been getting away without having a notrace marking. It seems that
>> my compiler isn't inlining cyc_to_sched_clock() though, so I'm
>> hitting a recursion bug when I enable the function graph tracer,
>> causing my system to crash. Marking these functions notrace fixes
>> it. Technically cyc_to_ns() doesn't need the notrace because it's
>> already marked inline, but let's just add it so that if we ever
>> remove inline from that function it doesn't blow up.
> Anyone else seeing this problem?
Russell, should I put this into the patch tracker?
>> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
>> ---
>> arch/arm/kernel/sched_clock.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/kernel/sched_clock.c b/arch/arm/kernel/sched_clock.c
>> index bd6f56b..59d2adb 100644
>> --- a/arch/arm/kernel/sched_clock.c
>> +++ b/arch/arm/kernel/sched_clock.c
>> @@ -45,12 +45,12 @@ static u32 notrace jiffy_sched_clock_read(void)
>>
>> static u32 __read_mostly (*read_sched_clock)(void) = jiffy_sched_clock_read;
>>
>> -static inline u64 cyc_to_ns(u64 cyc, u32 mult, u32 shift)
>> +static inline u64 notrace cyc_to_ns(u64 cyc, u32 mult, u32 shift)
>> {
>> return (cyc * mult) >> shift;
>> }
>>
>> -static unsigned long long cyc_to_sched_clock(u32 cyc, u32 mask)
>> +static unsigned long long notrace cyc_to_sched_clock(u32 cyc, u32 mask)
>> {
>> u64 epoch_ns;
>> u32 epoch_cyc;
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
WARNING: multiple messages have this Message-ID (diff)
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: sched_clock: Add more notrace to prevent recursion
Date: Tue, 26 Mar 2013 10:35:49 -0700 [thread overview]
Message-ID: <5151DC75.7030606@codeaurora.org> (raw)
In-Reply-To: <514B483F.7000304@codeaurora.org>
On 03/21/13 10:49, Stephen Boyd wrote:
> On 03/14/13 17:08, Stephen Boyd wrote:
>> cyc_to_sched_clock() is called by sched_clock() and cyc_to_ns()
>> is called by cyc_to_sched_clock(). I suspect that some compilers
>> inline both of these functions into sched_clock() and so we've
>> been getting away without having a notrace marking. It seems that
>> my compiler isn't inlining cyc_to_sched_clock() though, so I'm
>> hitting a recursion bug when I enable the function graph tracer,
>> causing my system to crash. Marking these functions notrace fixes
>> it. Technically cyc_to_ns() doesn't need the notrace because it's
>> already marked inline, but let's just add it so that if we ever
>> remove inline from that function it doesn't blow up.
> Anyone else seeing this problem?
Russell, should I put this into the patch tracker?
>> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
>> ---
>> arch/arm/kernel/sched_clock.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/kernel/sched_clock.c b/arch/arm/kernel/sched_clock.c
>> index bd6f56b..59d2adb 100644
>> --- a/arch/arm/kernel/sched_clock.c
>> +++ b/arch/arm/kernel/sched_clock.c
>> @@ -45,12 +45,12 @@ static u32 notrace jiffy_sched_clock_read(void)
>>
>> static u32 __read_mostly (*read_sched_clock)(void) = jiffy_sched_clock_read;
>>
>> -static inline u64 cyc_to_ns(u64 cyc, u32 mult, u32 shift)
>> +static inline u64 notrace cyc_to_ns(u64 cyc, u32 mult, u32 shift)
>> {
>> return (cyc * mult) >> shift;
>> }
>>
>> -static unsigned long long cyc_to_sched_clock(u32 cyc, u32 mask)
>> +static unsigned long long notrace cyc_to_sched_clock(u32 cyc, u32 mask)
>> {
>> u64 epoch_ns;
>> u32 epoch_cyc;
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
next prev parent reply other threads:[~2013-03-26 17:35 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-15 0:08 [PATCH] ARM: sched_clock: Add more notrace to prevent recursion Stephen Boyd
2013-03-15 0:08 ` Stephen Boyd
2013-03-21 17:49 ` Stephen Boyd
2013-03-21 17:49 ` Stephen Boyd
2013-03-26 17:35 ` Stephen Boyd [this message]
2013-03-26 17:35 ` Stephen Boyd
2013-04-18 0:34 ` Stephen Boyd
2013-04-18 0:34 ` Stephen Boyd
2013-04-18 9:20 ` Russell King - ARM Linux
2013-04-18 9:20 ` Russell King - ARM Linux
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5151DC75.7030606@codeaurora.org \
--to=sboyd@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.