Hi Steve, On Mon, Feb 5, 2024 at 6:38 PM Steven Rostedt <rost...@goodmis.org> wrote: > > On Mon, 5 Feb 2024 17:57:29 +0800 > richard clark <richard.xnu.cl...@gmail.com> wrote: > > > I try to write below: > > echo 'target_cpus == 11 && reason == "Function call interrupts"' > > > events/ipi/ipi_raise/filter > > You mean when it is sent only to CPU 11? Not when the event is > happening on CPU 11. Like the above example, the event was triggered on > CPU 10, but the mask was for all the other CPUs. > > If you are looking for just CPU 11, you can do: > > echo 'target_cpus == 0x800 && reason == "Function call interrupts"' >
Seems both 'target_cpus == 0x800 && reason == "Function call interrupts"' and 'target_cpus & 0x800 && reason == "Function call interrupts"' don't work: # cat events/ipi/ipi_raise/enable 1 # cat events/ipi/ipi_raise/filter target_cpus == 0x800 && reason == "Function call interrupts" The kernel module code snippet: void ipi_func_run_cpu(void *info) { pr_info("remote function runs on cpu[%d].\n", smp_processor_id()); } static int __init ipi_send_init(void) { int target = (smp_processor_id() + 1) % nr_cpu_ids; int ret = smp_call_function_single(target, ipi_func_run_cpu, NULL, true); pr_info("ipi cpu[%d --> %d] ret = %d\n", smp_processor_id(), target, ret); return 0; } ... module_init(ipi_send_init); module_exit(ipi_send_exit); $ sudo taskset -c 10 insmod ipi_send.ko $ dmesg ... [84931.864273] remote function runs on cpu[11]. [84931.864282] ipi cpu[10 --> 11] ret = 0 The 'cat trace' will output the below message with 'reason == "Function call interrupts"' filter: ... sudo-5726 [007] dn.h1.. 84302.833545: ipi_raise: target_mask=00000000,00000001 (Function call interrupts) sudo-5726 [007] dn.h2.. 84302.837544: ipi_raise: target_mask=00000000,00000001 (Function call interrupts) insmod-5727 [011] dn.h1.. 84302.841545: ipi_raise: target_mask=00000000,00000001 (Function call interrupts) insmod-5727 [010] ....1.. 84302.843966: ipi_raise: target_mask=00000000,00000bff (Function call interrupts) insmod-5727 [010] ....1.. 84302.843975: ipi_raise: target_mask=00000000,00000bff (Function call interrupts) insmod-5727 [010] ....1.. 84302.844184: ipi_raise: target_mask=00000000,00000800 (Function call interrupts) ... I find that 'target_cpus == 0xfff && reason == "Function call interrupts"' doesn't have output in the buffer, but 'target_cpus & 0xfff && reason == "Function call interrupts"' does. I also tried to use 'target_cpus & 0xf00 && reason == "Function call interrupts"' in my case, the trace buffer has nothing after the kmod inserted. Any comments? > > > -- Steve