On Fri, Feb 6, 2026 at 1:35 AM Harry Yoo <[email protected]> wrote: > > } else { > + if (unlikely(!allow_spin)) { > + /* call_rcu() does not support NMI context */ > + rcu_sheaf->size--; > + local_unlock(&s->cpu_sheaves->lock); > + goto fail;
As a first step it's ok, but we need to make call_rcu() work too. Shouldn't be too hard. It protects itself with local_irq_save, so if (irqs_disabled()) defer to irq_work and call_rcu there or guard reentrance into __call_rcu_common() with per-cpu busy counter. rcu_head can be reused to form list of objects to be processed in irq work.
