Messages in this thread | | | From | Lai Jiangshan <> | Subject | [PATCH 0/8] rcu: Ensure rcu read site is deadlock-immunity | Date | Wed, 7 Aug 2013 18:24:56 +0800 |
| |
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.
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.
Lai Jiangshan (8): rcu: add a warn to rcu_preempt_note_context_switch() rcu: rcu_read_unlock_special() can be nested in irq/softirq 10f39bb1 rcu: keep irqs disabled in rcu_read_unlock_special() rcu: delay task rcu state cleanup in exit_rcu() rcu: eliminate rcu read site deadlock rcu: call rcu_read_unlock_special() in rcu_preempt_check_callbacks() rcu: add # of deferred _special() statistics rcu: remove irq work for rsp_wakeup()
include/linux/rcupdate.h | 2 +- kernel/rcupdate.c | 2 +- kernel/rcutree.c | 17 +-------- kernel/rcutree.h | 2 +- kernel/rcutree_plugin.h | 82 ++++++++++++++++++++++++++++++++++----------- kernel/rcutree_trace.c | 1 + 6 files changed, 68 insertions(+), 38 deletions(-)
-- 1.7.4.4
| |