mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Tao Chen <chen.dylane@gmail.com>
To: Eduard Zingerman <eddyz87@gmail.com>,
	ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org,
	haoluo@google.com, jolsa@kernel.org, qmo@kernel.org
Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RESEND bpf-next v7 0/4] Add prog_kfunc feature probe
Date: Fri, 21 Feb 2025 18:03:02 +0800	[thread overview]
Message-ID: <1efd9535-82df-43f9-92e1-8c931354b945@gmail.com> (raw)
In-Reply-To: <475831c7d175529df4cc638506217c67010bf8da.camel@gmail.com>

在 2025/2/21 02:43, Eduard Zingerman 写道:
> On Fri, 2025-02-21 at 02:09 +0800, Tao Chen wrote:
> 
> [...]
> 
>> Hi Eduard,
>>
>> I try to run your test case, but it seems btf_is_decl_tag always return
>> false, Are there any special restrictions for the tag feature of btf?
> 
> Hi Tao,
>   
>> My compilation environment:
>>
>> pahole --version
>> v1.29
>> clang --version
>> Ubuntu clang version 18.1.3 (1ubuntu1)
> 
> Hm, pahole should generate kfunc tags since 1.27.
> I use pahole 'next' branch, but it is the same as 1.29 at the moment.
> Do you see kfunc prototypes at the bottom of vmlinux.h?
> They look like so:
> 
>    ...
>    extern u32 tcp_reno_undo_cwnd(struct sock *sk) __weak __ksym;
>    ...
> 
> These are generated by bpftool from decl tags I look for in the test case.
> Decl tags are inserted by pahole, see btf_encoder.c:btf_encoder__tag_kfuncs().
> 

It's all right now, when i use make 
PAHOLE=/home/dylane/sdb/dwarves/build/pahole -j4, thanks.

> Anyways, below is the list of all kfuncs from my config,
> it is possible to adapt the test case with something like this:
> 
>          for (i = 0; i < ARRAY_SIZE(all_kfuncs); ++i) {
>                  kfunc = all_kfuncs[i];
>                  kfunc_id = btf__find_by_name_kind(vmlinux_btf, kfunc, BTF_KIND_FUNC);
>                  printf("%-42s ", kfunc);
>                  if (kfunc_id < 0) {
>                          printf("<not found>\n");
>                          continue;
>                  }
>                  ...
>          }
> 

Well, i try it.

> --- 8< --------------------------------------
> 
> static const char *all_kfuncs[] = {
> 	"bbr_cwnd_event",
> 	"bbr_init",
> 	"bbr_main",
> 	"bbr_min_tso_segs",
> 	"bbr_set_state",
> 	"bbr_sndbuf_expand",
> 	"bbr_ssthresh",
> 	"bbr_undo_cwnd",
> 	"bpf_arena_alloc_pages",
> 	"bpf_arena_free_pages",
> 	"bpf_cast_to_kern_ctx",
> 	"bpf_cgroup_acquire",
> 	"bpf_cgroup_ancestor",
> 	"bpf_cgroup_from_id",
> 	"bpf_cgroup_release",
> 	"bpf_copy_from_user_str",
> 	"bpf_cpumask_acquire",
> 	"bpf_cpumask_and",
> 	"bpf_cpumask_any_and_distribute",
> 	"bpf_cpumask_any_distribute",
> 	"bpf_cpumask_clear",
> 	"bpf_cpumask_clear_cpu",
> 	"bpf_cpumask_copy",
> 	"bpf_cpumask_create",
> 	"bpf_cpumask_empty",
> 	"bpf_cpumask_equal",
> 	"bpf_cpumask_first",
> 	"bpf_cpumask_first_and",
> 	"bpf_cpumask_first_zero",
> 	"bpf_cpumask_full",
> 	"bpf_cpumask_intersects",
> 	"bpf_cpumask_or",
> 	"bpf_cpumask_release",
> 	"bpf_cpumask_set_cpu",
> 	"bpf_cpumask_setall",
> 	"bpf_cpumask_subset",
> 	"bpf_cpumask_test_and_clear_cpu",
> 	"bpf_cpumask_test_and_set_cpu",
> 	"bpf_cpumask_test_cpu",
> 	"bpf_cpumask_weight",
> 	"bpf_cpumask_xor",
> 	"bpf_crypto_ctx_acquire",
> 	"bpf_crypto_ctx_create",
> 	"bpf_crypto_ctx_release",
> 	"bpf_crypto_decrypt",
> 	"bpf_crypto_encrypt",
> 	"bpf_ct_change_status",
> 	"bpf_ct_change_timeout",
> 	"bpf_ct_insert_entry",
> 	"bpf_ct_release",
> 	"bpf_ct_set_nat_info",
> 	"bpf_ct_set_status",
> 	"bpf_ct_set_timeout",
> 	"bpf_dynptr_adjust",
> 	"bpf_dynptr_clone",
> 	"bpf_dynptr_from_skb",
> 	"bpf_dynptr_from_xdp",
> 	"bpf_dynptr_is_null",
> 	"bpf_dynptr_is_rdonly",
> 	"bpf_dynptr_size",
> 	"bpf_dynptr_slice",
> 	"bpf_dynptr_slice_rdwr",
> 	"bpf_fentry_test1",
> 	"bpf_get_dentry_xattr",
> 	"bpf_get_file_xattr",
> 	"bpf_get_fsverity_digest",
> 	"bpf_get_kmem_cache",
> 	"bpf_get_task_exe_file",
> 	"bpf_iter_bits_destroy",
> 	"bpf_iter_bits_new",
> 	"bpf_iter_bits_next",
> 	"bpf_iter_css_destroy",
> 	"bpf_iter_css_new",
> 	"bpf_iter_css_next",
> 	"bpf_iter_css_task_destroy",
> 	"bpf_iter_css_task_new",
> 	"bpf_iter_css_task_next",
> 	"bpf_iter_kmem_cache_destroy",
> 	"bpf_iter_kmem_cache_new",
> 	"bpf_iter_kmem_cache_next",
> 	"bpf_iter_num_destroy",
> 	"bpf_iter_num_new",
> 	"bpf_iter_num_next",
> 	"bpf_iter_scx_dsq_destroy",
> 	"bpf_iter_scx_dsq_new",
> 	"bpf_iter_scx_dsq_next",
> 	"bpf_iter_task_destroy",
> 	"bpf_iter_task_new",
> 	"bpf_iter_task_next",
> 	"bpf_iter_task_vma_destroy",
> 	"bpf_iter_task_vma_new",
> 	"bpf_iter_task_vma_next",
> 	"bpf_key_put",
> 	"bpf_kfunc_call_memb_release",
> 	"bpf_kfunc_call_test_release",
> 	"bpf_list_pop_back",
> 	"bpf_list_pop_front",
> 	"bpf_list_push_back_impl",
> 	"bpf_list_push_front_impl",
> 	"bpf_local_irq_restore",
> 	"bpf_local_irq_save",
> 	"bpf_lookup_system_key",
> 	"bpf_lookup_user_key",
> 	"bpf_map_sum_elem_count",
> 	"bpf_modify_return_test",
> 	"bpf_modify_return_test2",
> 	"bpf_modify_return_test_tp",
> 	"bpf_obj_drop_impl",
> 	"bpf_obj_new_impl",
> 	"bpf_path_d_path",
> 	"bpf_percpu_obj_drop_impl",
> 	"bpf_percpu_obj_new_impl",
> 	"bpf_preempt_disable",
> 	"bpf_preempt_enable",
> 	"bpf_put_file",
> 	"bpf_rbtree_add_impl",
> 	"bpf_rbtree_first",
> 	"bpf_rbtree_remove",
> 	"bpf_rcu_read_lock",
> 	"bpf_rcu_read_unlock",
> 	"bpf_rdonly_cast",
> 	"bpf_refcount_acquire_impl",
> 	"bpf_remove_dentry_xattr",
> 	"bpf_send_signal_task",
> 	"bpf_session_cookie",
> 	"bpf_session_is_return",
> 	"bpf_set_dentry_xattr",
> 	"bpf_sk_assign_tcp_reqsk",
> 	"bpf_skb_ct_alloc",
> 	"bpf_skb_ct_lookup",
> 	"bpf_skb_get_fou_encap",
> 	"bpf_skb_get_xfrm_info",
> 	"bpf_skb_set_fou_encap",
> 	"bpf_skb_set_xfrm_info",
> 	"bpf_sock_addr_set_sun_path",
> 	"bpf_sock_destroy",
> 	"bpf_task_acquire",
> 	"bpf_task_from_pid",
> 	"bpf_task_from_vpid",
> 	"bpf_task_get_cgroup1",
> 	"bpf_task_release",
> 	"bpf_task_under_cgroup",
> 	"bpf_throw",
> 	"bpf_verify_pkcs7_signature",
> 	"bpf_wq_init",
> 	"bpf_wq_set_callback_impl",
> 	"bpf_wq_start",
> 	"bpf_xdp_ct_alloc",
> 	"bpf_xdp_ct_lookup",
> 	"bpf_xdp_flow_lookup",
> 	"bpf_xdp_get_xfrm_state",
> 	"bpf_xdp_metadata_rx_hash",
> 	"bpf_xdp_metadata_rx_timestamp",
> 	"bpf_xdp_metadata_rx_vlan_tag",
> 	"bpf_xdp_xfrm_state_release",
> 	"cgroup_rstat_flush",
> 	"cgroup_rstat_updated",
> 	"crash_kexec",
> 	"cubictcp_acked",
> 	"cubictcp_cong_avoid",
> 	"cubictcp_cwnd_event",
> 	"cubictcp_init",
> 	"cubictcp_recalc_ssthresh",
> 	"cubictcp_state",
> 	"dctcp_cwnd_event",
> 	"dctcp_cwnd_undo",
> 	"dctcp_init",
> 	"dctcp_ssthresh",
> 	"dctcp_state",
> 	"dctcp_update_alpha",
> 	"scx_bpf_consume",
> 	"scx_bpf_cpu_rq",
> 	"scx_bpf_cpuperf_cap",
> 	"scx_bpf_cpuperf_cur",
> 	"scx_bpf_cpuperf_set",
> 	"scx_bpf_create_dsq",
> 	"scx_bpf_destroy_dsq",
> 	"scx_bpf_dispatch",
> 	"scx_bpf_dispatch_cancel",
> 	"scx_bpf_dispatch_from_dsq",
> 	"scx_bpf_dispatch_from_dsq_set_slice",
> 	"scx_bpf_dispatch_from_dsq_set_vtime",
> 	"scx_bpf_dispatch_nr_slots",
> 	"scx_bpf_dispatch_vtime",
> 	"scx_bpf_dispatch_vtime_from_dsq",
> 	"scx_bpf_dsq_insert",
> 	"scx_bpf_dsq_insert_vtime",
> 	"scx_bpf_dsq_move",
> 	"scx_bpf_dsq_move_set_slice",
> 	"scx_bpf_dsq_move_set_vtime",
> 	"scx_bpf_dsq_move_to_local",
> 	"scx_bpf_dsq_move_vtime",
> 	"scx_bpf_dsq_nr_queued",
> 	"scx_bpf_dump_bstr",
> 	"scx_bpf_error_bstr",
> 	"scx_bpf_exit_bstr",
> 	"scx_bpf_get_idle_cpumask",
> 	"scx_bpf_get_idle_smtmask",
> 	"scx_bpf_get_online_cpumask",
> 	"scx_bpf_get_possible_cpumask",
> 	"scx_bpf_kick_cpu",
> 	"scx_bpf_now",
> 	"scx_bpf_nr_cpu_ids",
> 	"scx_bpf_pick_any_cpu",
> 	"scx_bpf_pick_idle_cpu",
> 	"scx_bpf_put_cpumask",
> 	"scx_bpf_put_idle_cpumask",
> 	"scx_bpf_reenqueue_local",
> 	"scx_bpf_select_cpu_dfl",
> 	"scx_bpf_task_cgroup",
> 	"scx_bpf_task_cpu",
> 	"scx_bpf_task_running",
> 	"scx_bpf_test_and_clear_cpu_idle",
> 	"tcp_cong_avoid_ai",
> 	"tcp_reno_cong_avoid",
> 	"tcp_reno_ssthresh",
> 	"tcp_reno_undo_cwnd",
> 	"tcp_slow_start",
> };
> 
> -------------------------------------- >8 ---
> 
> [...]
> 


-- 
Best Regards
Tao Chen

  reply	other threads:[~2025-02-21 10:03 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-12 15:39 Tao Chen
2025-02-12 15:39 ` [PATCH bpf-next v7 1/4] libbpf: Extract prog load type check from libbpf_probe_bpf_helper Tao Chen
2025-02-12 15:39 ` [PATCH bpf-next v7 2/4] libbpf: Init fd_array when prog probe load Tao Chen
2025-02-12 15:39 ` [PATCH bpf-next v7 3/4] libbpf: Add libbpf_probe_bpf_kfunc API Tao Chen
2025-02-12 15:39 ` [PATCH bpf-next v7 4/4] selftests/bpf: Add libbpf_probe_bpf_kfunc API selftests Tao Chen
2025-02-17  5:21 ` [PATCH RESEND bpf-next v7 0/4] Add prog_kfunc feature probe Tao Chen
2025-02-18 22:51   ` Eduard Zingerman
2025-02-20 18:09     ` Tao Chen
2025-02-20 18:43       ` Eduard Zingerman
2025-02-21 10:03         ` Tao Chen [this message]
2025-02-21  1:07     ` Andrii Nakryiko
2025-02-21  1:11       ` Eduard Zingerman
2025-02-21 10:03         ` Tao Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1efd9535-82df-43f9-92e1-8c931354b945@gmail.com \
    --to=chen.dylane@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eddyz87@gmail.com \
    --cc=haoluo@google.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=qmo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®