[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1efd9535-82df-43f9-92e1-8c931354b945@gmail.com>
Date: Fri, 21 Feb 2025 18:03:02 +0800
From: Tao Chen <chen.dylane@...il.com>
To: Eduard Zingerman <eddyz87@...il.com>, ast@...nel.org,
daniel@...earbox.net, andrii@...nel.org, haoluo@...gle.com,
jolsa@...nel.org, qmo@...nel.org
Cc: bpf@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH RESEND bpf-next v7 0/4] Add prog_kfunc feature probe
在 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
Powered by blists - more mailing lists