linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: nikolay.borisov@arm.com (Nikolay Borisov)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RESEND 0/7] Fix backtrace support in THUMB2 mode
Date: Tue, 17 Jun 2014 16:12:04 +0100	[thread overview]
Message-ID: <000001cf8a3e$7ff4aa60$7fddff20$@borisov@arm.com> (raw)
In-Reply-To: <20140617144929.GA1929@n2100.arm.linux.org.uk>



> -----Original Message-----
> From: Russell King - ARM Linux [mailto:linux at arm.linux.org.uk]
> Sent: 17 June 2014 15:49
> To: Nikolay Borisov
> Cc: linux-arm-kernel at lists.infradead.org; jld at mozilla.com;
> rric at kernel.org; a.p.zijlstra at chello.nl; Will Deacon;
> sboyd at codeaurora.org; dave.long at linaro.org; u.kleine-
> koenig at pengutronix.de; Dave P Martin
> Subject: Re: [PATCH RESEND 0/7] Fix backtrace support in THUMB2 mode
> 
> On Fri, May 23, 2014 at 10:26:29AM +0100, Nikolay Borisov wrote:
> > Currently all the code which deals with backtrace support assumes
> that R11
> > is the frame-pointer. While this is the case for ARM mode and is
> explicitly
> > documented in the AAPCS, this is not the case for THUMB2 mode.
> >
> > There is no official document requiring that R11 has to be the frame
> pointer
> > and GCC uses R7 as FP and given that R7's usage is so intertwined
> within GCC's
> > mechanics it is unlikely to change, so fixing backtrace in THUMB2
> mode seems
> > in order.
> >
> > This patch series rectifies the problem by first fixing the
> > thread_save_fp macro to reference the correct register. Furthermore,
> there
> > a lot of repetetive sequences of code such as :
> >
> > stackframe.fp = pt_regs->ARM_fp
> > stackframe.lr = pt_regs->ARM_lr
> >
> > so introducing a function arm_get_current_stack_frame which both
> > hides this repetition and also utilizes teh frame_pointer(regs) macro
> > to reference the correct register depending on the mode.
> >
> > Finally, change all the call sites so that they utilize the new
> routine.
> 
> Can someone please explain to me what the point of this churn is?
> 

During my testing with a THUMB2 kernel it turned out that no stacktrace
information was being printed when either magic-sysrq was used
or the 'ps -Al' command executed. The commit message of patch 8069/1 does
list those uses cases as failures resulting from this bug. 

Are you able to obtain backtrace support from a THUMB2 kernel using the 
the correct magic sysrq to dump the current threads stacktrace?

This thread started by Jed David also sheds some light on the issue: 
https://lkml.org/lkml/2013/7/12/469


> Let's start with a summary of Thumb2 kernel building.  When a Thumb2
> kernel is built, we may build it with or without frame pointers.  In
> either case, we always require the unwinder.
> 
> When the unwinder is in use, we don't use the APCS backtracing support.
> The APCS backtracing support makes use of the frame pointer (and
> requires
> frame pointer support.)
> 
> The unwinder, although it is given what would be in the frame pointer
> register, never reads from this value - the only registers that the
> unwinder cares about is the stack pointer (so it can read values off
> the stack), LR (in case PC is zero) and the PC value itself (so it can
> work out where in the unwind information to start the unwinding
> process.
> 
> The unwinder does write to the FP entry, but this is not really used
> for anything (in much the same way that it writes to the other
> registers.)  It also prints the FP value in its debugging, though what
> use that is can be argued.
> 
> So, although the code /may/ look weird, and not really conform to what
> is expected, don't see any bug with the code as it stands today (with
> the exception of one c_backtrace() call in arm_syscall, which should
> probably be fixed - but that's an entirely separate problem.)
> 
> While we may deem that introducing arm_get_current_stackframe() is
> a useful cleanup, that's all it should be...
> 
> Am I missing something?
> 
> --
> FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up...
> slowly
> improving, and getting towards what was expected from it.

      reply	other threads:[~2014-06-17 15:12 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-23  9:26 [PATCH RESEND 0/7] Fix backtrace support in THUMB2 mode Nikolay Borisov
2014-05-23  9:26 ` [PATCH RESEND 1/7] ARM: Make thread_save_fp macro aware of " Nikolay Borisov
2014-05-23  9:53   ` Uwe Kleine-König
2014-05-23 11:53     ` Nikolay Borisov
2014-05-23  9:26 ` [PATCH RESEND 2/7] ARM: Introduce arm_get_current_stack_frame() Nikolay Borisov
2014-05-23 12:11   ` Robert Richter
2014-05-23  9:26 ` [PATCH RESEND 3/7] ARM: perf: Make perf use arm_get_current_stackframe Nikolay Borisov
2014-05-23  9:26 ` [PATCH RESEND 4/7] ARM: time: Make use of arm_get_current_stackframe Nikolay Borisov
2014-05-23  9:26 ` [PATCH RESEND 5/7] ARM: unwind: Use arm_get_current_stackframe Nikolay Borisov
2014-05-23  9:26 ` [PATCH RESEND 6/7] ARM: traps: Make use of the frame_pointer macro Nikolay Borisov
2014-05-23  9:26 ` [PATCH RESEND 7/7] ARM: oprofile: Use of arm_get_current_stackframe Nikolay Borisov
2014-05-23 16:55 ` [PATCH RESEND 0/7] Fix backtrace support in THUMB2 mode Will Deacon
2014-06-17 14:49 ` Russell King - ARM Linux
2014-06-17 15:12   ` Nikolay Borisov [this message]

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='000001cf8a3e$7ff4aa60$7fddff20$@borisov@arm.com' \
    --to=nikolay.borisov@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).