Hi, 06.12.2013, 19:24, "Paul Gortmaker" <[email protected]>: > Peter pointed out[1] that the simple wait queues in RT could > run any number of wakeups with the wait queue head lock held. > > It turns out that this isnt really specific to RT, but it is > mainline too -- all the __wake_up_XYZ that in turn use the > __wake_up_common boiler plate end up looping over all the > callbacks (normally ttwu) while holding the head lock. <snip>
One more problem with wait queues in RT case. Wait queues moving from spinlocks to rt_mutexes makes timerfd not irqsafe on RT. This makes it unusable for some user tasks. > fs/timerfd.c | 26 ++++++------- > include/linux/wait.h | 36 +++++++++++++++--- > kernel/sched/completion.c | 24 ++++++------ > kernel/sched/core.c | 8 ++-- > kernel/sched/wait.c | 44 > +++++++++++----------- > mm/filemap.c | 4 +- > net/sunrpc/sched.c | 4 +- > 14 files changed, 150 insertions(+), 126 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

