[RFC PATCH v2 3/5] powerpc/ftrace: Unify 32-bit and 64-bit ftrace entry code
Steven Rostedt
rostedt at goodmis.org
Tue Jun 11 06:06:32 AEST 2024
On Mon, 10 Jun 2024 14:08:16 +0530
Naveen N Rao <naveen at kernel.org> wrote:
> On 32-bit powerpc, gcc generates a three instruction sequence for
> function profiling:
> mflr r0
> stw r0, 4(r1)
> bl _mcount
>
> On kernel boot, the call to _mcount() is nop-ed out, to be patched back
> in when ftrace is actually enabled. The 'stw' instruction therefore is
> not necessary unless ftrace is enabled. Nop it out during ftrace init.
>
> When ftrace is enabled, we want the 'stw' so that stack unwinding works
> properly. Perform the same within the ftrace handler, similar to 64-bit
> powerpc.
>
> For 64-bit powerpc, early versions of gcc used to emit a three
> instruction sequence for function profiling (with -mprofile-kernel) with
> a 'std' instruction to mimic the 'stw' above. Address that scenario also
> by nop-ing out the 'std' instruction during ftrace init.
>
> Signed-off-by: Naveen N Rao <naveen at kernel.org>
Isn't there still the race that there's a preemption between the:
stw r0, 4(r1)
and
bl _mcount
And if this breaks stack unwinding, couldn't this cause an issue for live
kernel patching?
I know it's very unlikely, but in theory, I think the race exists.
-- Steve
More information about the Linuxppc-dev
mailing list