[PATCH v2 3/6] powerpc64/bpf: Tailcall handling with trampolines
bot+bpf-ci at kernel.org
bot+bpf-ci at kernel.org
Wed Jan 14 23:25:19 AEDT 2026
> diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c
> index 069a8822c30d..e3088cf089d1 100644
> --- a/arch/powerpc/net/bpf_jit_comp.c
> +++ b/arch/powerpc/net/bpf_jit_comp.c
[ ... ]
> +static void bpf_trampoline_setup_tail_call_info(u32 *image, struct codegen_context *ctx,
> + int func_frame_offset,
> + int bpf_dummy_frame_size, int r4_off)
> +{
> + if (IS_ENABLED(CONFIG_PPC64)) {
> + /* See bpf_jit_stack_tailcallinfo_offset() */
> + int tailcallinfo_offset = BPF_PPC_TAILCALL;
> + /*
> + * func_frame_offset = ...(1)
> + * bpf_dummy_frame_size + trampoline_frame_size
> + */
> + EMIT(PPC_RAW_LD(_R4, _R1, func_frame_offset));
> + EMIT(PPC_RAW_LD(_R3, _R4, -tailcallinfo_offset));
^^^^
Should this LD instruction be an ADDI instead? Looking at the stack frame
setup, after the two STLU instructions in __arch_prepare_bpf_trampoline():
STLU _R1, _R1, -bpf_dummy_frame_size -> stores original _R1 at dummy frame
STLU _R1, _R1, -bpf_frame_size -> stores dummy frame ptr at tramp frame
More information about the Linuxppc-dev
mailing list