History

Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next

Alexei Starovoitov says: ==================== pull-request: bpf-next 2021-09-17 We've added 63 non-merge commits during the last 12 day(s) which contain a total of 65 files changed, 2653 insertions(+), 751 deletions(-). The main changes are: 1) Streamline internal BPF program sections handling and bpf_program__set_attach_target() in libbpf, from Andrii. 2) Add support for new btf kind BTF_KIND_TAG, from Yonghong. 3) Introduce bpf_get_branch_snapshot() to capture LBR, from Song. 4) IMUL optimization for x86-64 JIT, from Jie. 5) xsk selftest improvements, from Magnus. 6) Introduce legacy kprobe events support in libbpf, from Rafael. 7) Access hw timestamp through BPF's __sk_buff, from Vadim. * https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next: (63 commits) selftests/bpf: Fix a few compiler warnings libbpf: Constify all high-level program attach APIs libbpf: Schedule open_opts.attach_prog_fd deprecation since v0.7 selftests/bpf: Switch fexit_bpf2bpf selftest to set_attach_target() API libbpf: Allow skipping attach_func_name in bpf_program__set_attach_target() libbpf: Deprecated bpf_object_open_opts.relaxed_core_relocs selftests/bpf: Stop using relaxed_core_relocs which has no effect libbpf: Use pre-setup sec_def in libbpf_find_attach_btf_id() bpf: Update bpf_get_smp_processor_id() documentation libbpf: Add sphinx code documentation comments selftests/bpf: Skip btf_tag test if btf_tag attribute not supported docs/bpf: Add documentation for BTF_KIND_TAG selftests/bpf: Add a test with a bpf program with btf_tag attributes selftests/bpf: Test BTF_KIND_TAG for deduplication selftests/bpf: Add BTF_KIND_TAG unit tests selftests/bpf: Change NAME_NTH/IS_NAME_NTH for BTF_KIND_TAG format selftests/bpf: Test libbpf API function btf__add_tag() bpftool: Add support for BTF_KIND_TAG libbpf: Add support for BTF_KIND_TAG libbpf: Rename btf_{hash,equal}_int to btf_{hash,equal}_int_tag ... ====================

Jakub Kicinski committed 5 years ago

Commit af54faa2 parents f68d08c ca21a3e65 files · +2653 −751Browse files

Showing the changes to tools/include/uapi/linux (2 of 65 files). Show all

Unified · Split

2 files
  1. tools/include/uapi/linux/bpf.h +25 −1
  2. tools/include/uapi/linux/btf.h +35 −20
tools/include/uapi/linux/bpf.h+25−1
@@ -1629,7 +1629,7 @@ union bpf_attr { · 1628 unmodified lines
1629 * u32 bpf_get_smp_processor_id(void)1629 * u32 bpf_get_smp_processor_id(void)
1630 * Description1630 * Description
1631 * Get the SMP (symmetric multiprocessing) processor id. Note that1631 * Get the SMP (symmetric multiprocessing) processor id. Note that
1632 * all programs run with preemption disabled, which means that the1632 * all programs run with migration disabled, which means that the
1633 * SMP processor id is stable during all the execution of the1633 * SMP processor id is stable during all the execution of the
1634 * program.1634 * program.
1635 * Return1635 * Return
@@ -4877,6 +4877,27 @@ union bpf_attr { · 3241 unmodified lines
4877 * Get the struct pt_regs associated with **task**.4877 * Get the struct pt_regs associated with **task**.
4878 * Return4878 * Return
4879 * A pointer to struct pt_regs.4879 * A pointer to struct pt_regs.
4880 *
4881 * long bpf_get_branch_snapshot(void *entries, u32 size, u64 flags)
4882 * Description
4883 * Get branch trace from hardware engines like Intel LBR. The
4884 * hardware engine is stopped shortly after the helper is
4885 * called. Therefore, the user need to filter branch entries
4886 * based on the actual use case. To capture branch trace
4887 * before the trigger point of the BPF program, the helper
4888 * should be called at the beginning of the BPF program.
4889 *
4890 * The data is stored as struct perf_branch_entry into output
4891 * buffer *entries*. *size* is the size of *entries* in bytes.
4892 * *flags* is reserved for now and must be zero.
4893 *
4894 * Return
4895 * On success, number of bytes written to *buf*. On error, a
4896 * negative value.
4897 *
4898 * **-EINVAL** if *flags* is not zero.
4899 *
4900 * **-ENOENT** if architecture does not support branch records.
4880 */4901 */
4881#define __BPF_FUNC_MAPPER(FN) \4902#define __BPF_FUNC_MAPPER(FN) \
4882 FN(unspec), \4903 FN(unspec), \
@@ -5055,6 +5076,7 @@ union bpf_attr { · 172 unmodified lines
5055 FN(get_func_ip), \5076 FN(get_func_ip), \
5056 FN(get_attach_cookie), \5077 FN(get_attach_cookie), \
5057 FN(task_pt_regs), \5078 FN(task_pt_regs), \
5079 FN(get_branch_snapshot), \
5058 /* */5080 /* */
5059 5081
5060/* integer value in 'imm' field of BPF_CALL instruction selects which helper5082/* integer value in 'imm' field of BPF_CALL instruction selects which helper
@@ -5284,6 +5306,8 @@ struct __sk_buff { · 223 unmodified lines
5284 __u32 gso_segs;5306 __u32 gso_segs;
5285 __bpf_md_ptr(struct bpf_sock *, sk);5307 __bpf_md_ptr(struct bpf_sock *, sk);
5286 __u32 gso_size;5308 __u32 gso_size;
5309 __u32 :32; /* Padding, future use. */
5310 __u64 hwtstamp;
5287};5311};
5288 5312
5289struct bpf_tunnel_key {5313struct bpf_tunnel_key {
tools/include/uapi/linux/btf.h+35−20
@@ -43,7 +43,7 @@ struct btf_type { · 42 unmodified lines
43 * "size" tells the size of the type it is describing.43 * "size" tells the size of the type it is describing.
44 *44 *
45 * "type" is used by PTR, TYPEDEF, VOLATILE, CONST, RESTRICT,45 * "type" is used by PTR, TYPEDEF, VOLATILE, CONST, RESTRICT,
46 * FUNC, FUNC_PROTO and VAR.46 * FUNC, FUNC_PROTO, VAR and TAG.
47 * "type" is a type_id referring to another type.47 * "type" is a type_id referring to another type.
48 */48 */
49 union {49 union {
@@ -56,25 +56,29 @@ struct btf_type { · 6 unmodified lines
56#define BTF_INFO_VLEN(info) ((info) & 0xffff)56#define BTF_INFO_VLEN(info) ((info) & 0xffff)
57#define BTF_INFO_KFLAG(info) ((info) >> 31)57#define BTF_INFO_KFLAG(info) ((info) >> 31)
58 58
59#define BTF_KIND_UNKN 0 /* Unknown */59enum {
60#define BTF_KIND_INT 1 /* Integer */60 BTF_KIND_UNKN = 0, /* Unknown */
61#define BTF_KIND_PTR 2 /* Pointer */61 BTF_KIND_INT = 1, /* Integer */
62#define BTF_KIND_ARRAY 3 /* Array */62 BTF_KIND_PTR = 2, /* Pointer */
63#define BTF_KIND_STRUCT 4 /* Struct */63 BTF_KIND_ARRAY = 3, /* Array */
64#define BTF_KIND_UNION 5 /* Union */64 BTF_KIND_STRUCT = 4, /* Struct */
65#define BTF_KIND_ENUM 6 /* Enumeration */65 BTF_KIND_UNION = 5, /* Union */
66#define BTF_KIND_FWD 7 /* Forward */66 BTF_KIND_ENUM = 6, /* Enumeration */
67#define BTF_KIND_TYPEDEF 8 /* Typedef */67 BTF_KIND_FWD = 7, /* Forward */
68#define BTF_KIND_VOLATILE 9 /* Volatile */68 BTF_KIND_TYPEDEF = 8, /* Typedef */
69#define BTF_KIND_CONST 10 /* Const */69 BTF_KIND_VOLATILE = 9, /* Volatile */
70#define BTF_KIND_RESTRICT 11 /* Restrict */70 BTF_KIND_CONST = 10, /* Const */
71#define BTF_KIND_FUNC 12 /* Function */71 BTF_KIND_RESTRICT = 11, /* Restrict */
72#define BTF_KIND_FUNC_PROTO 13 /* Function Proto */72 BTF_KIND_FUNC = 12, /* Function */
73#define BTF_KIND_VAR 14 /* Variable */73 BTF_KIND_FUNC_PROTO = 13, /* Function Proto */
74#define BTF_KIND_DATASEC 15 /* Section */74 BTF_KIND_VAR = 14, /* Variable */
75#define BTF_KIND_FLOAT 16 /* Floating point */75 BTF_KIND_DATASEC = 15, /* Section */
76#define BTF_KIND_MAX BTF_KIND_FLOAT76 BTF_KIND_FLOAT = 16, /* Floating point */
77#define NR_BTF_KINDS (BTF_KIND_MAX + 1)77 BTF_KIND_TAG = 17, /* Tag */
78
79 NR_BTF_KINDS,
80 BTF_KIND_MAX = NR_BTF_KINDS - 1,
81};
78 82
79/* For some specific BTF_KIND, "struct btf_type" is immediately83/* For some specific BTF_KIND, "struct btf_type" is immediately
80 * followed by extra data.84 * followed by extra data.
@@ -170,4 +174,15 @@ struct btf_var_secinfo { · 89 unmodified lines
170 __u32 size;174 __u32 size;
171};175};
172 176
177/* BTF_KIND_TAG is followed by a single "struct btf_tag" to describe
178 * additional information related to the tag applied location.
179 * If component_idx == -1, the tag is applied to a struct, union,
180 * variable or function. Otherwise, it is applied to a struct/union
181 * member or a func argument, and component_idx indicates which member
182 * or argument (0 ... vlen-1).
183 */
184struct btf_tag {
185 __s32 component_idx;
186};
187
173#endif /* _UAPI__LINUX_BTF_H__ */188#endif /* _UAPI__LINUX_BTF_H__ */