Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu
Pull v5.10 RCU changes from Paul E. McKenney: - Debugging for smp_call_function(). - Strict grace periods for KASAN. The point of this series is to find RCU-usage bugs, so the corresponding new RCU_STRICT_GRACE_PERIOD Kconfig option depends on both DEBUG_KERNEL and RCU_EXPERT, and is further disabled by dfefault. Finally, the help text includes a goodly list of scary caveats. - New smp_call_function() torture test. - Torture-test updates. - Documentation updates. - Miscellaneous fixes. Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -1367,6 +1367,27 @@ config WW_MUTEX_SELFTEST
|
||||
Say M if you want these self tests to build as a module.
|
||||
Say N if you are unsure.
|
||||
|
||||
config SCF_TORTURE_TEST
|
||||
tristate "torture tests for smp_call_function*()"
|
||||
depends on DEBUG_KERNEL
|
||||
select TORTURE_TEST
|
||||
help
|
||||
This option provides a kernel module that runs torture tests
|
||||
on the smp_call_function() family of primitives. The kernel
|
||||
module may be built after the fact on the running kernel to
|
||||
be tested, if desired.
|
||||
|
||||
config CSD_LOCK_WAIT_DEBUG
|
||||
bool "Debugging for csd_lock_wait(), called from smp_call_function*()"
|
||||
depends on DEBUG_KERNEL
|
||||
depends on 64BIT
|
||||
default n
|
||||
help
|
||||
This option enables debug prints when CPUs are slow to respond
|
||||
to the smp_call_function*() IPI wrappers. These debug prints
|
||||
include the IPI handler function currently executing (if any)
|
||||
and relevant stack traces.
|
||||
|
||||
endmenu # lock debugging
|
||||
|
||||
config TRACE_IRQFLAGS
|
||||
|
||||
+5
-1
@@ -85,12 +85,16 @@ void nmi_trigger_cpumask_backtrace(const cpumask_t *mask,
|
||||
put_cpu();
|
||||
}
|
||||
|
||||
// Dump stacks even for idle CPUs.
|
||||
static bool backtrace_idle;
|
||||
module_param(backtrace_idle, bool, 0644);
|
||||
|
||||
bool nmi_cpu_backtrace(struct pt_regs *regs)
|
||||
{
|
||||
int cpu = smp_processor_id();
|
||||
|
||||
if (cpumask_test_cpu(cpu, to_cpumask(backtrace_mask))) {
|
||||
if (regs && cpu_in_idle(instruction_pointer(regs))) {
|
||||
if (!READ_ONCE(backtrace_idle) && regs && cpu_in_idle(instruction_pointer(regs))) {
|
||||
pr_warn("NMI backtrace for cpu %d skipped: idling at %pS\n",
|
||||
cpu, (void *)instruction_pointer(regs));
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user