Re: [PATCH v3 00/11] smp: cross CPU call interface

Sven Schnelle
2022-05-18T06:20:38Z

Donghai Qiao <dqiao@redhat.com> writes:

> The motivation of this patch set is intended to make the existing
> cross CPU call mechanism become a formal interface, more friendly
> to the kernel developers.
>
> For the simplicity self-explanatory less code redundancy and no
> ambiguity, the set of functions below can satisfy any existing
> demand for cross call, at the meantime they still carry over the
> same semantics and the similar parameter lists.
> [..]

With this patchset applied i see the following splat on s390 when the
ftrace selftests are run:

[ 1.007231] Running postponed tracer tests:
[ 1.007398] Testing tracer function:
[ 1.036267] Callback from call_rcu_tasks() invoked.
[ 1.117709] BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1
[ 1.117737] caller is __smp_call_mask_cond+0x42/0x5f8
[ 1.117751] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.18.0-rc7-00017-g9cc3e6b66c62 #789
[ 1.117760] Hardware name: IBM 3906 M04 704 (z/VM 7.1.0)
[ 1.117769] Call Trace:
[ 1.117777] [<000000000f571e54>] dump_stack_lvl+0xac/0x100
[ 1.117788] [<000000000f576eec>] check_preemption_disabled+0xf4/0xf8
[ 1.117798] [<000000000e94eb72>] __smp_call_mask_cond+0x42/0x5f8
[ 1.117808] [<000000000e94f35c>] smp_call_mask_others+0x54/0x70
[ 1.117818] [<000000000e9a8d5e>] ftrace_modify_all_code+0x146/0x170
[ 1.117831] [<000000000e9a8e70>] ftrace_run_update_code+0x30/0x88
[ 1.117842] [<000000000e9ad3a2>] ftrace_startup+0xea/0x1a0
[ 1.117852] [<000000000e9ad498>] register_ftrace_function+0x40/0x88
[ 1.117863] [<000000000e9ccaa8>] function_trace_init+0x90/0x108
[ 1.117897] [<00000000102957aa>] trace_selftest_startup_function+0x6a/0x338
[ 1.117910] [<000000000f56149a>] run_tracer_selftest+0x11a/0x1b0
[ 1.117934] [<0000000010294fe8>] init_trace_selftests+0x90/0x140
[ 1.117965] [<000000000e808aa8>] do_one_initcall+0x78/0x390
[ 1.117996] [<0000000010280804>] do_initcalls+0x12c/0x150
[ 1.118009] [<0000000010280af8>] kernel_init_freeable+0x250/0x290
[ 1.118018] [<000000000f5770de>] kernel_init+0x2e/0x170
[ 1.118028] [<000000000e80b924>] __ret_from_fork+0x3c/0x58
[ 1.118038] [<000000000f5881ea>] ret_from_fork+0xa/0x40
[ 1.118049] 2 locks held by swapper/0/1:
[ 1.118058] #0: 000000001012bae0 (trace_types_lock){+.+.}-{3:3}, at: init_trace_selftests+0x30/0x140
[ 1.118085] #1: 000000001012b698 (ftrace_lock){+.+.}-{3:3}, at: register_ftrace_function+0x32/0x88