diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile index 7627f996b5e5cdc7c5200d0468d9bbe75130ec41..6d4767f7e25027f22c5c8bf995b8e7bdbf73aeac 100644 --- a/samples/bpf/Makefile +++ b/samples/bpf/Makefile @@ -149,10 +149,12 @@ always-y += task_fd_query_kern.o always-y += ibumad_kern.o always-y += hbm_out_kern.o always-y += hbm_edt_kern.o + +# build for bpf_rvi ifeq ($(ARCH), x86) -always-$(CONFIG_BPF_RVI) += bpf_rvi_cpuinfo_x86.bpf.o +always-$(CONFIG_BPF_RVI) += bpf_rvi/bpf_rvi_cpuinfo_x86.bpf.o endif -always-$(CONFIG_BPF_RVI) += bpf_rvi_cpu_online.bpf.o +always-$(CONFIG_BPF_RVI) += bpf_rvi/bpf_rvi_cpu_online.bpf.o ifeq ($(ARCH), arm) # Strip all except -D__LINUX_ARM_ARCH__ option needed to handle linux diff --git a/samples/bpf/bpf_rvi_cpu_online.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_cpu_online.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_cpu_online.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_cpu_online.bpf.c diff --git a/samples/bpf/bpf_rvi_cpuinfo_arm64.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_cpuinfo_arm64.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_cpuinfo_arm64.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_cpuinfo_arm64.bpf.c diff --git a/samples/bpf/bpf_rvi_cpuinfo_x86.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_cpuinfo_x86.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_cpuinfo_x86.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_cpuinfo_x86.bpf.c diff --git a/samples/bpf/bpf_rvi_diskstats.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_diskstats.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_diskstats.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_diskstats.bpf.c diff --git a/samples/bpf/bpf_rvi_loadavg.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_loadavg.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_loadavg.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_loadavg.bpf.c diff --git a/samples/bpf/bpf_rvi_meminfo.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_meminfo.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_meminfo.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_meminfo.bpf.c diff --git a/samples/bpf/bpf_rvi_partitions.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_partitions.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_partitions.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_partitions.bpf.c diff --git a/samples/bpf/bpf_rvi_stat.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_stat.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_stat.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_stat.bpf.c diff --git a/samples/bpf/bpf_rvi_swaps.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_swaps.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_swaps.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_swaps.bpf.c diff --git a/samples/bpf/bpf_rvi_uptime.bpf.c b/samples/bpf/bpf_rvi/bpf_rvi_uptime.bpf.c similarity index 100% rename from samples/bpf/bpf_rvi_uptime.bpf.c rename to samples/bpf/bpf_rvi/bpf_rvi_uptime.bpf.c diff --git a/tools/testing/selftests/bpf/prog_tests/fill_link_info.c b/tools/testing/selftests/bpf/prog_tests/fill_link_info.c index e0208b0e53f1626712ad7ebb3e333c86a8892b43..86d133805f4d4c9ef19fc6e31c0363fa71968019 100644 --- a/tools/testing/selftests/bpf/prog_tests/fill_link_info.c +++ b/tools/testing/selftests/bpf/prog_tests/fill_link_info.c @@ -30,8 +30,6 @@ static noinline void uprobe_func(void) asm volatile (""); } -#define PERF_EVENT_COOKIE 0xdeadbeef - static int verify_perf_link_info(int fd, enum bpf_perf_event_type type, long addr, ssize_t offset, ssize_t entry_offset) { @@ -63,10 +61,8 @@ static int verify_perf_link_info(int fd, enum bpf_perf_event_type type, long add ASSERT_EQ(info.perf_event.kprobe.addr, addr + entry_offset, "kprobe_addr"); - ASSERT_EQ(info.perf_event.kprobe.cookie, PERF_EVENT_COOKIE, "kprobe_cookie"); - ASSERT_EQ(info.perf_event.kprobe.name_len, strlen(KPROBE_FUNC) + 1, - "name_len"); + "name_len"); if (!info.perf_event.kprobe.func_name) { info.perf_event.kprobe.func_name = ptr_to_u64(&buf); info.perf_event.kprobe.name_len = sizeof(buf); @@ -86,8 +82,6 @@ static int verify_perf_link_info(int fd, enum bpf_perf_event_type type, long add goto again; } - ASSERT_EQ(info.perf_event.tracepoint.cookie, PERF_EVENT_COOKIE, "tracepoint_cookie"); - err = strncmp(u64_to_ptr(info.perf_event.tracepoint.tp_name), TP_NAME, strlen(TP_NAME)); ASSERT_EQ(err, 0, "cmp_tp_name"); @@ -104,8 +98,6 @@ static int verify_perf_link_info(int fd, enum bpf_perf_event_type type, long add goto again; } - ASSERT_EQ(info.perf_event.uprobe.cookie, PERF_EVENT_COOKIE, "uprobe_cookie"); - err = strncmp(u64_to_ptr(info.perf_event.uprobe.file_name), UPROBE_FILE, strlen(UPROBE_FILE)); ASSERT_EQ(err, 0, "cmp_file_name"); @@ -149,17 +141,16 @@ static void test_kprobe_fill_link_info(struct test_fill_link_info *skel, DECLARE_LIBBPF_OPTS(bpf_kprobe_opts, opts, .attach_mode = PROBE_ATTACH_MODE_LINK, .retprobe = type == BPF_PERF_EVENT_KRETPROBE, - .bpf_cookie = PERF_EVENT_COOKIE, ); ssize_t entry_offset = 0; - struct bpf_link *link; int link_fd, err; - link = bpf_program__attach_kprobe_opts(skel->progs.kprobe_run, KPROBE_FUNC, &opts); - if (!ASSERT_OK_PTR(link, "attach_kprobe")) + skel->links.kprobe_run = bpf_program__attach_kprobe_opts(skel->progs.kprobe_run, + KPROBE_FUNC, &opts); + if (!ASSERT_OK_PTR(skel->links.kprobe_run, "attach_kprobe")) return; - link_fd = bpf_link__fd(link); + link_fd = bpf_link__fd(skel->links.kprobe_run); if (!invalid) { /* See also arch_adjust_kprobe_addr(). */ if (skel->kconfig->CONFIG_X86_KERNEL_IBT) @@ -173,48 +164,39 @@ static void test_kprobe_fill_link_info(struct test_fill_link_info *skel, } else { kprobe_fill_invalid_user_buffer(link_fd); } - bpf_link__destroy(link); + bpf_link__detach(skel->links.kprobe_run); } static void test_tp_fill_link_info(struct test_fill_link_info *skel) { - DECLARE_LIBBPF_OPTS(bpf_tracepoint_opts, opts, - .bpf_cookie = PERF_EVENT_COOKIE, - ); - struct bpf_link *link; int link_fd, err; - link = bpf_program__attach_tracepoint_opts(skel->progs.tp_run, TP_CAT, TP_NAME, &opts); - if (!ASSERT_OK_PTR(link, "attach_tp")) + skel->links.tp_run = bpf_program__attach_tracepoint(skel->progs.tp_run, TP_CAT, TP_NAME); + if (!ASSERT_OK_PTR(skel->links.tp_run, "attach_tp")) return; - link_fd = bpf_link__fd(link); + link_fd = bpf_link__fd(skel->links.tp_run); err = verify_perf_link_info(link_fd, BPF_PERF_EVENT_TRACEPOINT, 0, 0, 0); ASSERT_OK(err, "verify_perf_link_info"); - bpf_link__destroy(link); + bpf_link__detach(skel->links.tp_run); } static void test_uprobe_fill_link_info(struct test_fill_link_info *skel, enum bpf_perf_event_type type) { - DECLARE_LIBBPF_OPTS(bpf_uprobe_opts, opts, - .retprobe = type == BPF_PERF_EVENT_URETPROBE, - .bpf_cookie = PERF_EVENT_COOKIE, - ); - struct bpf_link *link; int link_fd, err; - link = bpf_program__attach_uprobe_opts(skel->progs.uprobe_run, - 0, /* self pid */ - UPROBE_FILE, uprobe_offset, - &opts); - if (!ASSERT_OK_PTR(link, "attach_uprobe")) + skel->links.uprobe_run = bpf_program__attach_uprobe(skel->progs.uprobe_run, + type == BPF_PERF_EVENT_URETPROBE, + 0, /* self pid */ + UPROBE_FILE, uprobe_offset); + if (!ASSERT_OK_PTR(skel->links.uprobe_run, "attach_uprobe")) return; - link_fd = bpf_link__fd(link); + link_fd = bpf_link__fd(skel->links.uprobe_run); err = verify_perf_link_info(link_fd, type, 0, uprobe_offset, 0); ASSERT_OK(err, "verify_perf_link_info"); - bpf_link__destroy(link); + bpf_link__detach(skel->links.uprobe_run); } static int verify_kmulti_link_info(int fd, bool retprobe) @@ -303,24 +285,24 @@ static void test_kprobe_multi_fill_link_info(struct test_fill_link_info *skel, bool retprobe, bool invalid) { LIBBPF_OPTS(bpf_kprobe_multi_opts, opts); - struct bpf_link *link; int link_fd, err; opts.syms = kmulti_syms; opts.cnt = KMULTI_CNT; opts.retprobe = retprobe; - link = bpf_program__attach_kprobe_multi_opts(skel->progs.kmulti_run, NULL, &opts); - if (!ASSERT_OK_PTR(link, "attach_kprobe_multi")) + skel->links.kmulti_run = bpf_program__attach_kprobe_multi_opts(skel->progs.kmulti_run, + NULL, &opts); + if (!ASSERT_OK_PTR(skel->links.kmulti_run, "attach_kprobe_multi")) return; - link_fd = bpf_link__fd(link); + link_fd = bpf_link__fd(skel->links.kmulti_run); if (!invalid) { err = verify_kmulti_link_info(link_fd, retprobe); ASSERT_OK(err, "verify_kmulti_link_info"); } else { verify_kmulti_invalid_user_buffer(link_fd); } - bpf_link__destroy(link); + bpf_link__detach(skel->links.kmulti_run); } void test_fill_link_info(void)