[PATCH RFC tip/core/rcu 0/2] Avoid sending IPIs to offline CPUs

From: Paul E. McKenney
Date: Sat Oct 14 2017 - 13:51:25 EST


Hello!

This RFC series contains a couple of small patches that avoid splats due
to resched_cpu() and rt_mutex_setprio() sending IPIs to offline CPUs.
They make the obvious (and thus perhaps inappropriate) changes to
avoid this. Nevertheless, they do seem effective in rcutorture testing.
The patches are as follows:

1. Stop resched_cpu() from sending IPIs to offline CPUs, unless
that offline CPU happens to be the current CPU. (This last
proviso is required to preserve resched_cpu()'s unconditional
semantics for expedited RCU grace periods.) I am reasonably
confident in this patch.

2. Stop switched_to_rt() from sending IPIs to offline CPUs, in
particular, when invoked via rt_mutex_lock(). This -looks-
correct to me, but I am assuming that the fact that the current
CPU is holding the target task's CPU's rq lock is preventing
the to-be-boosted task from doing anything, and that a later
migration of the target task will finalize the priority boosting.
But there might be an odd corner case involving offlining an
extremely heavily loaded CPU with lots of preempted tasks, one of
which is blocking a high-priority real-time task somewhere else.

Note: The first patch depends on a patch intended for the upcoming
merge window, and this latter patch may be found here:
lkml.kernel.org/r/1507152575-11055-6-git-send-email-paulmck@xxxxxxxxxxxxxxxxxx

Thanx, Paul

------------------------------------------------------------------------

core.c | 3 ++-
rt.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)