]> git.baikalelectronics.ru Git - kernel.git/commit
bpftool: Probe for instruction set extensions
authorPaul Chaignon <paul@isovalent.com>
Tue, 4 Jan 2022 18:00:13 +0000 (19:00 +0100)
committerDaniel Borkmann <daniel@iogearbox.net>
Wed, 5 Jan 2022 12:31:40 +0000 (13:31 +0100)
commit3618f19a61a6a4410c7c3d98f559137aa04b36b5
tree8359e6ca88de5515d3fdbf0673c4d1cc53446213
parent96bd156ff27b85203a4867c6aa828c525f9e3cb2
bpftool: Probe for instruction set extensions

This patch introduces new probes to check whether the kernel supports
instruction set extensions v2 and v3. The first introduced eBPF
instructions BPF_J{LT,LE,SLT,SLE} in commit ff0afc351777 ("bpf: add
BPF_J{LT,LE,SLT,SLE} instructions"). The second introduces 32-bit
variants of all jump instructions in commit e82b80a8a0a2 ("bpf:
verifier support JMP32").

These probes are useful for userspace BPF projects that want to use newer
instruction set extensions on newer kernels, to reduce the programs'
sizes or their complexity. LLVM already provides an mcpu=probe option to
automatically probe the kernel and select the newest-supported
instruction set extension. That is however not flexible enough for all
use cases. For example, in Cilium, we only want to use the v3
instruction set extension on v5.10+, even though it is supported on all
kernels v5.1+.

Signed-off-by: Paul Chaignon <paul@isovalent.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Quentin Monnet <quentin@isovalent.com>
Link: https://lore.kernel.org/bpf/3bfedcd9898c1f41ac67ca61f144fec84c6c3a92.1641314075.git.paul@isovalent.com
tools/bpf/bpftool/feature.c