All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 bpf-next 0/8] Add BTF_KIND_FLOAT support
@ 2021-02-23 23:14 Ilya Leoshkevich
  2021-02-23 23:14 ` [PATCH v5 bpf-next 1/8] bpf: Add BTF_KIND_FLOAT to uapi Ilya Leoshkevich
                   ` (7 more replies)
  0 siblings, 8 replies; 14+ messages in thread
From: Ilya Leoshkevich @ 2021-02-23 23:14 UTC (permalink / raw)
  To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
	Yonghong Song, Arnaldo Carvalho de Melo, John Fastabend
  Cc: bpf, Heiko Carstens, Vasily Gorbik, Ilya Leoshkevich

Some BPF programs compiled on s390 fail to load, because s390
arch-specific linux headers contain float and double types.
    
Introduce support for such types by representing them using the new
BTF_KIND_FLOAT. This series deals with libbpf, bpftool, in-kernel BTF
parser as well as selftests and documentation.

There are also pahole and LLVM parts:

* https://github.com/iii-i/dwarves/commit/btf-kind-float-v2
* https://reviews.llvm.org/D83289

but they should go in after the libbpf part is integrated.

---

v0: https://lore.kernel.org/bpf/20210210030317.78820-1-iii@linux.ibm.com/
v0 -> v1: Per Andrii's suggestion, remove the unnecessary trailing u32.

v1: https://lore.kernel.org/bpf/20210216011216.3168-1-iii@linux.ibm.com/
v1 -> v2: John noticed that sanitization corrupts BTF, because new and
          old sizes don't match. Per Yonghong's suggestion, use a
          modifier type (which has the same size as the float type) as
          a replacement.
          Per Yonghong's suggestion, add size and alignment checks to
          the kernel BTF parser.

v2: https://lore.kernel.org/bpf/20210219022543.20893-1-iii@linux.ibm.com/
v2 -> v3: Based on Yonghong's suggestions: Use BTF_KIND_CONST instead of
          BTF_KIND_TYPEDEF and make sure that the C code generated from
          the sanitized BTF is well-formed; fix size calculation in
          tests and use NAME_TBD everywhere; limit allowed sizes to 2,
          4, 8, 12 and 16 (this should also fix m68k and nds32le
          builds).

v3: https://lore.kernel.org/bpf/20210220034959.27006-1-iii@linux.ibm.com/
v3 -> v4: More fixes for the Yonghong's findings: fix the outdated
          comment in bpf_object__sanitize_btf() and add the error
          handling there (I've decided to check uint_id and uchar_id
          too in order to simplify debugging); add bpftool output
          example; use div64_u64_rem() instead of % in order to fix the
          linker error.
          Also fix the "invalid BTF_INFO" test (new commit, #4).

v4: https://lore.kernel.org/bpf/20210222214917.83629-1-iii@linux.ibm.com/
v4 -> v5: Fixes for the Andrii's findings: Use BTF_KIND_STRUCT instead
          of BTF_KIND_TYPEDEF for sanitization; check byte_sz in
          libbpf; move btf__add_float; remove relo support; add a dedup
          test (new commit, #7).

Based on Alexei's feedback [1] I'm proceeding with the BTF_KIND_FLOAT
approach.

[1] https://lore.kernel.org/bpf/CAADnVQKWPODWZ2RSJ5FJhfYpxkuV0cvSAL1O+FSr9oP1ercoBg@mail.gmail.com/

Ilya Leoshkevich (8):
  bpf: Add BTF_KIND_FLOAT to uapi
  libbpf: Add BTF_KIND_FLOAT support
  tools/bpftool: Add BTF_KIND_FLOAT support
  selftests/bpf: Use the 25th bit in the "invalid BTF_INFO" test
  bpf: Add BTF_KIND_FLOAT support
  selftest/bpf: Add BTF_KIND_FLOAT tests
  selftests/bpf: Add BTF_KIND_FLOAT to the existing deduplication tests
  bpf: Document BTF_KIND_FLOAT in btf.rst

 Documentation/bpf/btf.rst                    |  17 +-
 include/uapi/linux/btf.h                     |   5 +-
 kernel/bpf/btf.c                             |  79 ++++++++-
 tools/bpf/bpftool/btf.c                      |   8 +
 tools/bpf/bpftool/btf_dumper.c               |   1 +
 tools/include/uapi/linux/btf.h               |   5 +-
 tools/lib/bpf/btf.c                          |  51 +++++-
 tools/lib/bpf/btf.h                          |   6 +
 tools/lib/bpf/btf_dump.c                     |   4 +
 tools/lib/bpf/libbpf.c                       |  26 ++-
 tools/lib/bpf/libbpf.map                     |   5 +
 tools/lib/bpf/libbpf_internal.h              |   2 +
 tools/testing/selftests/bpf/btf_helpers.c    |   4 +
 tools/testing/selftests/bpf/prog_tests/btf.c | 174 +++++++++++++++++--
 tools/testing/selftests/bpf/test_btf.h       |   3 +
 15 files changed, 367 insertions(+), 23 deletions(-)

-- 
2.29.2


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

end of thread, other threads:[~2021-02-24 23:24 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-23 23:14 [PATCH v5 bpf-next 0/8] Add BTF_KIND_FLOAT support Ilya Leoshkevich
2021-02-23 23:14 ` [PATCH v5 bpf-next 1/8] bpf: Add BTF_KIND_FLOAT to uapi Ilya Leoshkevich
2021-02-23 23:14 ` [PATCH v5 bpf-next 2/8] libbpf: Add BTF_KIND_FLOAT support Ilya Leoshkevich
2021-02-24 20:56   ` Andrii Nakryiko
2021-02-24 23:11     ` Ilya Leoshkevich
2021-02-24 23:23       ` Andrii Nakryiko
2021-02-23 23:14 ` [PATCH v5 bpf-next 3/8] tools/bpftool: " Ilya Leoshkevich
2021-02-23 23:14 ` [PATCH v5 bpf-next 4/8] selftests/bpf: Use the 25th bit in the "invalid BTF_INFO" test Ilya Leoshkevich
2021-02-23 23:14 ` [PATCH v5 bpf-next 5/8] bpf: Add BTF_KIND_FLOAT support Ilya Leoshkevich
2021-02-23 23:14 ` [PATCH v5 bpf-next 6/8] selftest/bpf: Add BTF_KIND_FLOAT tests Ilya Leoshkevich
2021-02-24 21:55   ` Andrii Nakryiko
2021-02-23 23:14 ` [PATCH v5 bpf-next 7/8] selftests/bpf: Add BTF_KIND_FLOAT to the existing deduplication tests Ilya Leoshkevich
2021-02-24 20:58   ` Andrii Nakryiko
2021-02-23 23:14 ` [PATCH v5 bpf-next 8/8] bpf: Document BTF_KIND_FLOAT in btf.rst Ilya Leoshkevich

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.