diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2023-04-28 15:03:43 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2023-04-28 15:03:43 -0700 |
commit | f20730efbd305d42eded761f6fbd9a59d6125228 (patch) | |
tree | c9c553ff088fd788ac9149ca3f7a5c83cf8eaed6 /include/linux/smp.h | |
parent | 586b222d748e91c619d68e9239654ebc7fed9b0c (diff) | |
parent | 5c3124975e15c1fadd5af1c61e4d627cf6d97ba2 (diff) | |
download | lwn-f20730efbd305d42eded761f6fbd9a59d6125228.tar.gz lwn-f20730efbd305d42eded761f6fbd9a59d6125228.zip |
Merge tag 'smp-core-2023-04-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull SMP cross-CPU function-call updates from Ingo Molnar:
- Remove diagnostics and adjust config for CSD lock diagnostics
- Add a generic IPI-sending tracepoint, as currently there's no easy
way to instrument IPI origins: it's arch dependent and for some major
architectures it's not even consistently available.
* tag 'smp-core-2023-04-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
trace,smp: Trace all smp_function_call*() invocations
trace: Add trace_ipi_send_cpu()
sched, smp: Trace smp callback causing an IPI
smp: reword smp call IPI comment
treewide: Trace IPIs sent via smp_send_reschedule()
irq_work: Trace self-IPIs sent via arch_irq_work_raise()
smp: Trace IPIs sent via arch_send_call_function_ipi_mask()
sched, smp: Trace IPIs sent via send_call_function_single_ipi()
trace: Add trace_ipi_send_cpumask()
kernel/smp: Make csdlock_debug= resettable
locking/csd_lock: Remove per-CPU data indirection from CSD lock debugging
locking/csd_lock: Remove added data from CSD lock debugging
locking/csd_lock: Add Kconfig option for csd_debug default
Diffstat (limited to 'include/linux/smp.h')
-rw-r--r-- | include/linux/smp.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/include/linux/smp.h b/include/linux/smp.h index 7b93504eed26..91ea4a67f8ca 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h @@ -125,8 +125,15 @@ extern void smp_send_stop(void); /* * sends a 'reschedule' event to another CPU: */ -extern void smp_send_reschedule(int cpu); - +extern void arch_smp_send_reschedule(int cpu); +/* + * scheduler_ipi() is inline so can't be passed as callback reason, but the + * callsite IP should be sufficient for root-causing IPIs sent from here. + */ +#define smp_send_reschedule(cpu) ({ \ + trace_ipi_send_cpu(cpu, _RET_IP_, NULL); \ + arch_smp_send_reschedule(cpu); \ +}) /* * Prepare machine for booting other CPUs. |