From cc35f70515cb0f3b8032b8fb68f9f37a844e74c8 Mon Sep 17 00:00:00 2001 From: Rong Tao Date: Fri, 10 Feb 2023 23:28:55 +0800 Subject: [PATCH] tools/compactsnoop.py: Fix raw_tracepoint Invalid argument error kernel commit abd4349ff9b8("mm: compaction: cleanup the compaction trace events") change the arguments of 'mm_compaction_begin' from (start_pfn, migrate_pfn, free_pfn, end_pfn, sync) to (cc, start_pfn, end_pfn, sync), and change the arguments of 'mm_compaction_end' from (start_pfn, migrate_pfn, free_pfn, end_pfn, sync, ret) to (cc, start_pfn, end_pfn, sync, ret). Replacing RAW_TRACEPOINT_PROBE with TRACEPOINT_PROBE solves this problem and guarantees compatibility. $ sudo ./compactsnoop.py bpf_attach_raw_tracepoint (mm_compaction_begin): Invalid argument Traceback (most recent call last): File "/home/sdb/Git/bcc/tools/./compactsnoop.py", line 292, in b = BPF(text=bpf_text) ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/bcc/__init__.py", line 483, in __init__ self._trace_autoload() File "/usr/lib/python3.11/site-packages/bcc/__init__.py", line 1462, in _trace_autoload self.attach_raw_tracepoint(tp=tp, fn_name=fn.name) File "/usr/lib/python3.11/site-packages/bcc/__init__.py", line 1055, in attach_raw_tracepoint raise Exception("Failed to attach BPF to raw tracepoint") Exception: Failed to attach BPF to raw tracepoint Signed-off-by: Rong Tao --- tools/compactsnoop.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/tools/compactsnoop.py b/tools/compactsnoop.py index 2643e8ed..2b395dec 100755 --- a/tools/compactsnoop.py +++ b/tools/compactsnoop.py @@ -237,11 +237,9 @@ RAW_TRACEPOINT_PROBE(mm_compaction_suitable) return 0; } -RAW_TRACEPOINT_PROBE(mm_compaction_begin) +TRACEPOINT_PROBE(compaction, mm_compaction_begin) { - // TP_PROTO(unsigned long zone_start, unsigned long migrate_pfn, - // unsigned long free_pfn, unsigned long zone_end, bool sync) - bool sync = (bool)ctx->args[4]; + bool sync = args->sync; u64 id = bpf_get_current_pid_tgid(); struct val_t *valp = start.lookup(&id); @@ -255,12 +253,9 @@ RAW_TRACEPOINT_PROBE(mm_compaction_begin) return 0; } -RAW_TRACEPOINT_PROBE(mm_compaction_end) +TRACEPOINT_PROBE(compaction, mm_compaction_end) { - // TP_PROTO(unsigned long zone_start, unsigned long migrate_pfn, - // unsigned long free_pfn, unsigned long zone_end, bool sync, - // int status) - submit_event(ctx, ctx->args[5]); + submit_event(args, args->status); return 0; } """ -- 2.39.2