Thread (6 messages) 6 messages, 4 authors, 2019-01-17

Re: ppc64le reliable stack unwinder and scheduled tasks

flat view

From: Torsten Duwe <hidden>
Date: 2019-01-13 13:05:52
Also in: lkml

On Sun, 13 Jan 2019 23:33:56 +1100
Balbir Singh [off-list ref] wrote:
On Sat, Jan 12, 2019 at 02:45:41AM -0600, Segher Boessenkool wrote:
quoted
On Sat, Jan 12, 2019 at 12:09:14PM +1100, Balbir Singh wrote:
quoted
Could you please define interesting frame on top a bit more?
Usually the topmost return address is in LR
There is no reliable way (other than DWARF unwind info) to find out
where the value of LR at function entry currently lives (if
anywhere). It may or may not be still available in LR, it may or
may not be saved to the return stack slot.  It can also live in
some GPR, or in some other stack slot.

(The same is true for all other registers).

The only thing the ABI guarantees you is that you can find all
stack frames via the back chain.  If you want more you can use some
heuristics and do some heroics (like GDB does), but this is not
fully reliable.  Using DWARF unwind info is, but that requires big
tables.
Thanks, so are you suggesting that a reliable stack is not possible on
ppc64le? Even with the restricted scope of the kernel?
The LR value location is _always_ hard to determine for the topmost
frame. This is not a problem for voluntarily sleeping tasks, because the
topmost function will always be well known. It is a problem for tasks preempted
by an interrupt, or those handling an exception, that's why these need
to report "unreliable".

Note that this is a very general problem, across _all_ RISC-like
architectures. It should thus be handled as generically as possible.

	Torsten
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help