RCU's rcu_iw irq-work (rcu_iw_handler()) acquires the raw spinlock rnp->lock without disabling interrupts. The lock is held normally with disabled interrupts for a short time. Mark irq-work as IRQ_WORK_HARD_IRQ so it is invoked in IRQ context like on !RT. Reported-by: John Ogness <john.ogness@xxxxxxxxxxxxx> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> --- kernel/rcu/tree.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 5a9c5abb17da..4fb983f4b9fd 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -1294,6 +1294,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp) !rdp->rcu_iw_pending && rdp->rcu_iw_gpnum != rnp->gpnum && (rnp->ffmask & rdp->grpmask)) { init_irq_work(&rdp->rcu_iw, rcu_iw_handler); + rdp->rcu_iw.flags = IRQ_WORK_HARD_IRQ; rdp->rcu_iw_pending = true; rdp->rcu_iw_gpnum = rnp->gpnum; irq_work_queue_on(&rdp->rcu_iw, rdp->cpu); -- 2.18.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html