Re: [RFC 0/1] wait queue head; locking considerations

From: Kirill Tkhai
Date: Fri Dec 06 2013 - 11:34:14 EST


Hi,

06.12.2013, 19:24, "Paul Gortmaker" <paul.gortmaker@xxxxxxxxxxxxx>:
> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/