Thread (7 messages) flat view 7 messages, 3 authors, 2021-02-04

Re: [PATCH] powerpc64/idle: Fix SP offsets when saving GPRs

From: Nicholas Piggin <npiggin@gmail.com>
Date: 2021-01-30 14:54:07

Excerpts from Michael Ellerman's message of January 30, 2021 9:32 pm:
"Christopher M. Riedl" [off-list ref] writes:
quoted
The idle entry/exit code saves/restores GPRs in the stack "red zone"
(Protected Zone according to PowerPC64 ELF ABI v2). However, the offset
used for the first GPR is incorrect and overwrites the back chain - the
Protected Zone actually starts below the current SP. In practice this is
probably not an issue, but it's still incorrect so fix it.
Nice catch.

Corrupting the back chain means you can't backtrace from there, which
could be confusing for debugging one day.
Yeah, we seem to have got away without noticing because the CPU will 
wake up and return out of here before it tries to unwind the stack,
but if you tried to walk it by hand if the CPU got stuck in idle or 
something, then we'd get confused.
It does make me wonder why we don't just create a stack frame and use
the normal macros? It would use a bit more stack space, but we shouldn't
be short of stack space when going idle.

Nick, was there a particular reason for using the red zone?
I don't recall a particular reason, I think a normal stack frame is 
probably a good idea.

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