Commit 88cb7f40 authored by Abhishek Dubey's avatar Abhishek Dubey Committed by Madhavan Srinivasan
Browse files

powerpc64/bpf: Avoid tailcall restore from trampoline



Back propagation of tailcall count is no longer needed for
powerpc64 due to use of reference, which updates the tailcall
count in the tail_call_info field in the frame of the main
program only.

Back propagation is still required for 32-bit powerpc.

Signed-off-by: default avatarAbhishek Dubey <adubey@linux.ibm.com>
Signed-off-by: default avatarMadhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20260124075223.6033-4-adubey@linux.ibm.com
parent 2ed2d8f6
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -676,14 +676,11 @@ static void bpf_trampoline_setup_tail_call_info(u32 *image, struct codegen_conte
static void bpf_trampoline_restore_tail_call_cnt(u32 *image, struct codegen_context *ctx,
						 int func_frame_offset, int r4_off)
{
	if (IS_ENABLED(CONFIG_PPC64)) {
		/* See bpf_jit_stack_tailcallcnt() */
		int tailcallcnt_offset = BPF_PPC_TAILCALL;

		EMIT(PPC_RAW_LL(_R3, _R1, -tailcallcnt_offset));
		EMIT(PPC_RAW_STL(_R3, _R1, func_frame_offset - tailcallcnt_offset));
	} else {
		/* See bpf_jit_stack_offsetof() and BPF_PPC_TC */
	if (IS_ENABLED(CONFIG_PPC32)) {
		/*
		 * Restore tailcall for 32-bit powerpc
		 * See bpf_jit_stack_offsetof() and BPF_PPC_TC
		 */
		EMIT(PPC_RAW_STL(_R4, _R1, r4_off));
	}
}