summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python
diff options
context:
space:
mode:
authorAlexei Starovoitov <ast@kernel.org>2026-02-23 17:37:06 -0800
committerAlexei Starovoitov <ast@kernel.org>2026-02-23 17:37:21 -0800
commit0d6bc03d73673ad54945c0f7d7ee2f4e3979c2a5 (patch)
tree6d7f94232c2320da8a90de8bde29c155d2f24eee /tools/perf/scripts/python
parent3ecf0b4a0e0ed4783aa32c5f3e42d23c7021e1c8 (diff)
parented8fa4b8894f7e80d3a6bf63e4cb880c7545c63a (diff)
Merge branch 'bpf-expand-the-usage-scenarios-of-bpf_kptr_xchg'
Kaitao Cheng says: ==================== When using bpf_kptr_xchg, we triggered the following error: 31: (85) call bpf_kptr_xchg#194 function calls are not allowed while holding a lock bpf_kptr_xchg can now be used in lock-held contexts, so we extended its usage scope in [patch 1/5]. When writing test cases using bpf_kptr_xchg and bpf_rbtree_*, the following approach must be followed: bpf_spin_lock(&lock); rb_n = bpf_rbtree_root(&root); while (rb_n && can_loop) { rb_n = bpf_rbtree_remove(&root, rb_n); if (!rb_n) goto fail; tnode = container_of(rb_n, struct tree_node, node); node_data = bpf_kptr_xchg(&tnode->node_data, NULL); if (!node_data) goto fail; data = node_data->data; /* use data to do something */ node_data = bpf_kptr_xchg(&tnode->node_data, node_data); if (node_data) goto fail; bpf_rbtree_add(&root, rb_n, less); if (lookup_key < tnode->key) rb_n = bpf_rbtree_left(&root, rb_n); else rb_n = bpf_rbtree_right(&root, rb_n); } bpf_spin_unlock(&lock); The above illustrates a lock-remove-read-add-unlock workflow, which exhibits lower performance. To address this, we introduced support for a streamlined lock-read-unlock operation in [patch 2/5] and [patch 4/5]. Changes in v7: - Add a comma to the variable declaration in enum bpf_reg_type - Modify the prefixes Changes in v6: - allow using bpf_kptr_xchg even if the MEM_RCU flag is set - Add test case Changes in v5: - add lastname Changes in v4: - Fix the dead logic issue in the test case Changes in v3: - Fix compilation errors Changes in v2: - Allow using bpf_kptr_xchg even if the NON_OWN_REF flag is set - Add test case Link to v6: https://lore.kernel.org/all/20260208024846.18653-1-pilgrimtao@gmail.com/ Link to v5: https://lore.kernel.org/all/20260203022712.99347-1-pilgrimtao@gmail.com/ Link to v4: https://lore.kernel.org/all/20260202090051.87802-1-pilgrimtao@gmail.com/ Link to V3: https://lore.kernel.org/all/20260202055818.78231-1-pilgrimtao@gmail.com/ Link to V2: https://lore.kernel.org/all/20260201031607.32940-1-pilgrimtao@gmail.com/ Link to V1: https://lore.kernel.org/all/20260122081426.78472-1-pilgrimtao@gmail.com/ ==================== Link: https://patch.msgid.link/20260214124042.62229-1-pilgrimtao@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions