From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin KaFai Lau Subject: Re: [PATCH bpf-next v5 00/10] BTF: BPF Type Format Date: Thu, 19 Apr 2018 13:58:24 -0700 Message-ID: <20180419205822.n33d64yst5n37isx@kafai-mbp.dhcp.thefacebook.com> References: <20180418225606.2771620-1-kafai@fb.com> <20180419194034.GB3254@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Cc: , Alexei Starovoitov , Daniel Borkmann , To: Arnaldo Carvalho de Melo Return-path: Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:37878 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753011AbeDSU7d (ORCPT ); Thu, 19 Apr 2018 16:59:33 -0400 Content-Disposition: inline In-Reply-To: <20180419194034.GB3254@kernel.org> Sender: netdev-owner@vger.kernel.org List-ID: On Thu, Apr 19, 2018 at 04:40:34PM -0300, Arnaldo Carvalho de Melo wrote: > Em Wed, Apr 18, 2018 at 03:55:56PM -0700, Martin KaFai Lau escreveu: > > This patch introduces BPF Type Format (BTF). > > > > BTF (BPF Type Format) is the meta data format which describes > > the data types of BPF program/map. Hence, it basically focus > > on the C programming language which the modern BPF is primary > > using. The first use case is to provide a generic pretty print > > capability for a BPF map. > > > > A modified pahole that can convert dwarf to BTF is here: > > https://github.com/iamkafai/pahole/tree/btf > > (Arnaldo, there is some BTF_KIND numbering changes on > > Apr 18th, d61426c1571) > > Thanks for letting me know, I'm starting to look at this, Thanks for reviewing. Feel free to comment directly on the github diff. Also, I think it may make sense to wait for the kernel pieces to land first. > > - Arnaldo > > > Please see individual patch for details. > > > > v5: > > - Remove BTF_KIND_FLOAT and BTF_KIND_FUNC which are not > > currently used. They can be added in the future. > > Some bpf_df_xxx() are removed together. > > - Add comment in patch 7 to clarify that the new bpffs_map_fops > > should not be extended further. > > > > v4: > > - Fix warning (remove unneeded semicolon) > > - Remove a redundant variable (nr_bytes) from btf_int_check_meta() in > > patch 1. Caught by W=1. > > > > v3: > > - Rebase to bpf-next > > - Fix sparse warning (by adding static) > > - Add BTF header logging: btf_verifier_log_hdr() > > - Fix the alignment test on btf->type_off > > - Add tests for the BTF header > > - Lower the max BTF size to 16MB. It should be enough > > for some time. We could raise it later if it would > > be needed. > > > > v2: > > - Use kvfree where needed in patch 1 and 2 > > - Also consider BTF_INT_OFFSET() in the btf_int_check_meta() > > in patch 1 > > - Fix an incorrect goto target in map_create() during > > the btf-error-path in patch 7 > > - re-org some local vars to keep the rev xmas tree in btf.c > > > > Martin KaFai Lau (10): > > bpf: btf: Introduce BPF Type Format (BTF) > > bpf: btf: Validate type reference > > bpf: btf: Check members of struct/union > > bpf: btf: Add pretty print capability for data with BTF type info > > bpf: btf: Add BPF_BTF_LOAD command > > bpf: btf: Add BPF_OBJ_GET_INFO_BY_FD support to BTF fd > > bpf: btf: Add pretty print support to the basic arraymap > > bpf: btf: Sync bpf.h and btf.h to tools/ > > bpf: btf: Add BTF support to libbpf > > bpf: btf: Add BTF tests > > > > include/linux/bpf.h | 20 +- > > include/linux/btf.h | 48 + > > include/uapi/linux/bpf.h | 12 + > > include/uapi/linux/btf.h | 130 ++ > > kernel/bpf/Makefile | 1 + > > kernel/bpf/arraymap.c | 50 + > > kernel/bpf/btf.c | 2064 ++++++++++++++++++++++++++ > > kernel/bpf/inode.c | 156 +- > > kernel/bpf/syscall.c | 51 +- > > tools/include/uapi/linux/bpf.h | 12 + > > tools/include/uapi/linux/btf.h | 130 ++ > > tools/lib/bpf/Build | 2 +- > > tools/lib/bpf/bpf.c | 92 +- > > tools/lib/bpf/bpf.h | 16 + > > tools/lib/bpf/btf.c | 374 +++++ > > tools/lib/bpf/btf.h | 22 + > > tools/lib/bpf/libbpf.c | 148 +- > > tools/lib/bpf/libbpf.h | 3 + > > tools/testing/selftests/bpf/Makefile | 26 +- > > tools/testing/selftests/bpf/test_btf.c | 1669 +++++++++++++++++++++ > > tools/testing/selftests/bpf/test_btf_haskv.c | 48 + > > tools/testing/selftests/bpf/test_btf_nokv.c | 43 + > > 22 files changed, 5076 insertions(+), 41 deletions(-) > > create mode 100644 include/linux/btf.h > > create mode 100644 include/uapi/linux/btf.h > > create mode 100644 kernel/bpf/btf.c > > create mode 100644 tools/include/uapi/linux/btf.h > > create mode 100644 tools/lib/bpf/btf.c > > create mode 100644 tools/lib/bpf/btf.h > > create mode 100644 tools/testing/selftests/bpf/test_btf.c > > create mode 100644 tools/testing/selftests/bpf/test_btf_haskv.c > > create mode 100644 tools/testing/selftests/bpf/test_btf_nokv.c > > > > -- > > 2.9.5