• Sebastian Andrzej Siewior's avatar
    rcu-tasks: Use rcuwait for the rcu_tasks_kthread() · 88db792b
    Sebastian Andrzej Siewior authored
    The waitqueue used by rcu_tasks_kthread() has always only one waiter.
    With a guaranteed only one waiter, this can be replaced with rcuwait
    which is smaller and simpler. With rcuwait based wake counterpart, the
    irqwork function (call_rcu_tasks_iw_wakeup()) can be invoked hardirq
    context because it is only a wake up and no sleeping locks are involved
    (unlike the wait_queue_head).
    As a side effect, this is also one piece of the puzzle to pass the RCU
    selftest at early boot on PREEMPT_RT.
    
    Replace wait_queue_head with rcuwait and let the irqwork run in hardirq
    context on PREEMPT_RT.
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    88db792b
tasks.h 59.6 KB