Re: [PATCH 0/8] rcu: Ensure rcu read site is deadlock-immunity

From: Carsten Emde
Date: Wed Aug 07 2013 - 16:03:31 EST


Hi Paul,

Although all articles declare that rcu read site is deadlock-immunity.
It is not true for rcu-preempt, it will be deadlock if rcu read site
overlaps with scheduler lock.

The real rule is that if the scheduler does its outermost rcu_read_unlock()
with one of those locks held, it has to have avoided enabling preemption
through the entire RCU read-side critical section.

That said, avoiding the need for this rule would be a good thing.

How did you test this? The rcutorture tests will not exercise this.
(Intentionally so, given that it can deadlock!)

ec433f0c, 10f39bb1 and 016a8d5b just partially solve it. But rcu read site
is still not deadlock-immunity. And the problem described in 016a8d5b
is still existed(rcu_read_unlock_special() calls wake_up).

The problem is fixed in patch5.

This is going to require some serious review and testing. One requirement
is that RCU priority boosting not persist significantly beyond the
re-enabling of interrupts associated with the irq-disabled lock. To do
otherwise breaks RCU priority boosting. At first glance, the added
set_need_resched() might handle this, but that is part of the review
and testing required.

Steven, would you and Carsten be willing to try this and see if it
helps with the issues you are seeing in -rt? (My guess is "no", since
a deadlock would block forever rather than waking up after a couple
thousand seconds, but worth a try.)
Your guess was correct, applying this patch doesn't heal the NO_HZ_FULL+PREEMPT_RT_FULL 3.10.4 based system; it still is hanging at -> synchronize_rcu -> wait_rcu_gp.

-Carsten.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/