On 2023/9/19 19:50, Conor Dooley wrote:
On Tue, Sep 19, 2023 at 07:23:07PM +0800, Pu Lehui wrote:
On 2023/9/19 18:04, 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'
Hi Conor,
BPF_TRAMP_F_TAIL_CALL_CTX rely on commit [0], and it has been merged into
bpf-next tree.
I see. I did check the cover to see if there was anything relevant
there, like a link or base commit, but since there were neither I opted
to pass on the warning from the patchwork automation we have :) >
Thanks, maybe it should be better to attach it to the cover.
Thanks & sorry for the noise on this one.
Thanks,
Conor.