![]() Applying RCU to the task structure broke oprofile, because free_task_notify() can now be called from softirq. This means that the task_mortuary lock must be acquired with irq disabled in order to avoid intermittent self-deadlock. Since irq is now disabled, the critical section within process_task_mortuary() has been restructured to be O(1) in order to maximize scalability and minimize realtime latency degradation. Kudos to Wu Fengguang for finding this problem! CC: Wu Fengguang <wfg@mail.ustc.edu.cn> Cc: Philippe Elie <phil.el@wanadoo.fr> Cc: John Levon <levon@movementarian.org> Signed-off-by: "Paul E. McKenney" <paulmck@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org> |
||
---|---|---|
.. | ||
buffer_sync.c | ||
buffer_sync.h | ||
cpu_buffer.c | ||
cpu_buffer.h | ||
event_buffer.c | ||
event_buffer.h | ||
oprof.c | ||
oprof.h | ||
oprofile_files.c | ||
oprofile_stats.c | ||
oprofile_stats.h | ||
oprofilefs.c | ||
timer_int.c |