netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next v6 0/3] Add 12-argument support for RV64 bpf trampoline
@ 2024-07-02 12:19 Pu Lehui
  2024-07-02 12:19 ` [PATCH bpf-next v6 1/3] riscv, bpf: " Pu Lehui
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Pu Lehui @ 2024-07-02 12:19 UTC (permalink / raw)
  To: bpf, linux-riscv, netdev
  Cc: Björn Töpel, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin KaFai Lau, Eduard Zingerman, Song Liu,
	Yonghong Song, John Fastabend, KP Singh, Stanislav Fomichev,
	Hao Luo, Jiri Olsa, Puranjay Mohan, Palmer Dabbelt, Pu Lehui

This patch adds 12 function arguments support for riscv64 bpf
trampoline. The current bpf trampoline supports <= sizeof(u64) bytes
scalar arguments [0] and <= 16 bytes struct arguments [1]. Therefore, we
focus on the situation where scalars are at most XLEN bits and
aggregates whose total size does not exceed 2×XLEN bits in the riscv
calling convention [2].

Link: https://elixir.bootlin.com/linux/v6.8/source/kernel/bpf/btf.c#L6184 [0]
Link: https://elixir.bootlin.com/linux/v6.8/source/kernel/bpf/btf.c#L6769 [1]
Link: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/releases/download/draft-20230929-e5c800e661a53efe3c2678d71a306323b60eb13b/riscv-abi.pdf [2]

v6:
- Remove unnecessary skel detach ops as it will be covered by skel destroy ops.

v5: https://lore.kernel.org/all/20240702013730.1082285-1-pulehui@huaweicloud.com/
- Remove unnecessary copyright.

v4: https://lore.kernel.org/all/20240622022129.3844473-1-pulehui@huaweicloud.com/
- Separate many args test logic from tracing_struct. (Daniel)

v3: https://lore.kernel.org/all/20240403072818.1462811-1-pulehui@huaweicloud.com/
- Variable and macro name alignment:
  nr_reg_args: number of args in reg
  nr_stack_args: number of args on stack
  RV_MAX_REG_ARGS: macro for riscv max args in reg

v2: https://lore.kernel.org/all/20240403041710.1416369-1-pulehui@huaweicloud.com/
- Add tracing_struct to DENYLIST.aarch64 while aarch64 does not yet support
  bpf trampoline with more than 8 args.
- Change the macro RV_MAX_ARG_REGS to RV_MAX_ARGS_REG to synchronize with
  the variable definition below.
- Add some comments for stk_arg_off and magic number of skip slots for loading
  args on stack.

v1: https://lore.kernel.org/all/20240331092405.822571-1-pulehui@huaweicloud.com/

Pu Lehui (3):
  riscv, bpf: Add 12-argument support for RV64 bpf trampoline
  selftests/bpf: Factor out many args tests from tracing_struct
  selftests/bpf: Add testcase where 7th argment is struct

 arch/riscv/net/bpf_jit_comp64.c               | 66 +++++++++----
 tools/testing/selftests/bpf/DENYLIST.aarch64  |  1 +
 .../selftests/bpf/bpf_testmod/bpf_testmod.c   | 19 ++++
 .../selftests/bpf/prog_tests/tracing_struct.c | 44 ++++++++-
 .../selftests/bpf/progs/tracing_struct.c      | 54 -----------
 .../bpf/progs/tracing_struct_many_args.c      | 95 +++++++++++++++++++
 6 files changed, 202 insertions(+), 77 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/progs/tracing_struct_many_args.c

-- 
2.34.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-07-06  2:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-02 12:19 [PATCH bpf-next v6 0/3] Add 12-argument support for RV64 bpf trampoline Pu Lehui
2024-07-02 12:19 ` [PATCH bpf-next v6 1/3] riscv, bpf: " Pu Lehui
2024-07-02 13:40   ` Puranjay Mohan
2024-07-05 12:51   ` Puranjay Mohan
2024-07-06  2:28     ` Pu Lehui
2024-07-02 12:19 ` [PATCH bpf-next v6 2/3] selftests/bpf: Factor out many args tests from tracing_struct Pu Lehui
2024-07-02 12:19 ` [PATCH bpf-next v6 3/3] selftests/bpf: Add testcase where 7th argment is struct Pu Lehui
2024-07-02 13:57 ` [PATCH bpf-next v6 0/3] Add 12-argument support for RV64 bpf trampoline Jiri Olsa
2024-07-02 14:10 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).