On Tue, Sep 19, 2023 at 11:04:53AM +0100, Conor Dooley wrote: > On Tue, Sep 19, 2023 at 11:57:11AM +0800, Pu Lehui wrote: > > From: Pu Lehui <pulehui@xxxxxxxxxx> > > > > In the current RV64 JIT, if we just don't initialize the TCC in subprog, > > the TCC can be propagated from the parent process to the subprocess, but > > the TCC of the parent process cannot be restored when the subprocess > > exits. Since the RV64 TCC is initialized before saving the callee saved > > registers into the stack, we cannot use the callee saved register to > > pass the TCC, otherwise the original value of the callee saved register > > will be destroyed. So we implemented mixing bpf2bpf and tailcalls > > similar to x86_64, i.e. using a non-callee saved register to transfer > > the TCC between functions, and saving that register to the stack to > > protect the TCC value. At the same time, we also consider the scenario > > of mixing trampoline. > > > > Tests test_bpf.ko and test_verifier have passed, as well as the relative > > testcases of test_progs*. > > > > Signed-off-by: Pu Lehui <pulehui@xxxxxxxxxx> > > Breaks the build: > ../arch/riscv/net/bpf_jit_comp64.c:846:14: error: use of undeclared identifier 'BPF_TRAMP_F_TAIL_CALL_CTX' Probably should have specified, happens with allmodconfig, but not a defconfig build.
Attachment:
signature.asc
Description: PGP signature