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-paul...@linux.vnet.ibm.com Thanx, Paul ------------------------------------------------------------------------ core.c | 3 ++- rt.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-)