All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next 0/3] support nocsr patterns for calls to kfuncs
@ 2024-08-12 23:43 Eduard Zingerman
  2024-08-12 23:43 ` [PATCH bpf-next 1/3] bpf: " Eduard Zingerman
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Eduard Zingerman @ 2024-08-12 23:43 UTC (permalink / raw)
  To: bpf, ast
  Cc: andrii, daniel, martin.lau, kernel-team, yonghong.song,
	Eduard Zingerman

As an extension of [1], allow nocsr patterns recognition for kfuncs:
- pattern rules are the same as for helpers;
- spill/fill removal is allowed only for kfuncs marked with KF_NOCSR
  flag;

Mark bpf_cast_to_kern_ctx() and bpf_rdonly_cast() kfuncs as KF_NOCSR
in order to conjure selftests for this feature.

After this patch-set verifier would rewrite the program below:

  r2 = 1
  *(u64 *)(r10 - 32) = r2
  call %[bpf_cast_to_kern_ctx]
  r2 = *(u64 *)(r10 - 32)
  r0 = r2;"

As follows:

  r2 = 1   /* spill/fill at r10[-32] is removed */
  r0 = r1  /* replacement for bpf_cast_to_kern_ctx() */
  r0 = r2
  exit

[1] no_caller_saved_registers attribute for helper calls
    https://lore.kernel.org/bpf/20240722233844.1406874-1-eddyz87@gmail.com/

Eduard Zingerman (3):
  bpf: support nocsr patterns for calls to kfuncs
  bpf: mark bpf_cast_to_kern_ctx and bpf_rdonly_cast as KF_NOCSR
  selftests/bpf: check if nocsr pattern is recognized for kfuncs

 include/linux/btf.h                           |  1 +
 kernel/bpf/helpers.c                          |  4 +-
 kernel/bpf/verifier.c                         | 37 ++++++++++++++
 .../selftests/bpf/progs/verifier_nocsr.c      | 50 +++++++++++++++++++
 4 files changed, 90 insertions(+), 2 deletions(-)

-- 
2.45.2


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

end of thread, other threads:[~2024-08-15 22:29 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-12 23:43 [PATCH bpf-next 0/3] support nocsr patterns for calls to kfuncs Eduard Zingerman
2024-08-12 23:43 ` [PATCH bpf-next 1/3] bpf: " Eduard Zingerman
2024-08-13  5:36   ` Yonghong Song
2024-08-13  7:55     ` Eduard Zingerman
2024-08-13 15:18       ` Yonghong Song
2024-08-13 18:57         ` Eduard Zingerman
2024-08-15 21:24   ` Andrii Nakryiko
2024-08-15 22:07     ` Eduard Zingerman
2024-08-15 22:23       ` Yonghong Song
2024-08-15 22:29         ` Eduard Zingerman
2024-08-15 22:16     ` Yonghong Song
2024-08-15 22:22       ` Yonghong Song
2024-08-12 23:43 ` [PATCH bpf-next 2/3] bpf: mark bpf_cast_to_kern_ctx and bpf_rdonly_cast as KF_NOCSR Eduard Zingerman
2024-08-15 21:25   ` Andrii Nakryiko
2024-08-15 21:59     ` Eduard Zingerman
2024-08-15 22:12       ` Andrii Nakryiko
2024-08-15 22:14         ` Eduard Zingerman
2024-08-12 23:43 ` [PATCH bpf-next 3/3] selftests/bpf: check if nocsr pattern is recognized for kfuncs Eduard Zingerman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.