On Mon, Mar 07, 2022 at 06:57:59PM +0100, Sebastian Andrzej Siewior wrote: > On 2022-03-07 07:09:13 [-0800], Paul E. McKenney wrote: > > > Correct. Possible due to the removal of wait_queue_head (plus there is > > > nothing else that would stand in the way otherwise). > > > > Very good! > > > > If the overhead becomes a problem in mainline, presumably we can do > > a compile-time switch based on CONFIG_PREEMPT_RT or similar. > > the rcuwake is a lot cheaper than waitqueue in terms of code or data > involved, locks, …. The _HARD flag is a nop on !RT. > So it should be a win-win situation here. Even better! > > > > If so, I am wondering if there are other > > > > irq_work instances that need to move to _HARD. > > > > > > We already have: > > > kernel/rcu/tree.c: rdp->rcu_iw = IRQ_WORK_INIT_HARD(rcu_iw_handler); > > > > Because you prompted me to change it from IRQ_WORK_INIT() some time > > back? ;-) > > Right. We have printk() for instance using the !HARD irq-work so this > mostly a case-by-case decision usually avoiding HARD. Sounds about right. ;-) Thanx, Paul