Hello! This is version 2 of a sneak preview of a series providing diagnostics to help track down problems that would result in excessive csd_unlock() latencies:
1. Add source and destination CPUs to __call_single_data. I freely admit that I found the union declaration a bit confusing! 2. Provide CSD lock timeout diagnostics. 3. Add "static" to a local variable. Changes since v1: o Fix stack-out-of-bounds read in csd_lock_record located by syzbot. o Fix KASAN-detected use-after-free issue reported by Qian Cai. o Fix botched nr_cpu_ids comparison reported by Dan Carpenter. o Fix numerous issues reported by Peter Zijlstra, including annoying CPP macros, #ifdef consolidation, another use-after-free issue, memory-ordering/comment issues, {} code-style issues. This now has no effect unless CONFIG_CSD_LOCK_WAIT_DEBUG=y. It also uses NSEC_PER_MSEC instead of cubing 1000. Times are now printed in nanoseconds instead of decimal seconds. Switched to C-language Classic Comment style. Moved to x-mas tree variable-declaration order from alphabetic. Avoided two prints via "CPU-1". o This version still "handles" 32-bit VDSO build errors by prohibiting CONFIG_CSD_LOCK_WAIT_DEBUG=y in 32-bit builds. Thanx, Paul ------------------------------------------------------------------------ include/linux/smp.h | 3 + include/linux/smp_types.h | 3 + kernel/smp.c | 136 +++++++++++++++++++++++++++++++++++++++++++++- lib/Kconfig.debug | 11 +++ 4 files changed, 152 insertions(+), 1 deletion(-)