On Tue, Jun 28, 2022 at 7:35 PM Christoph Lameter <cl@xxxxxxxxx> wrote: > > On Tue, 28 Jun 2022, Alexei Starovoitov wrote: > > > > That is a relatively new feature due to RT logic support. without RT this > > > would be a simple irq disable. > > > > Not just RT. > > It's a slow path: > > if (IS_ENABLED(CONFIG_PREEMPT_RT) || > > unlikely(!object || !slab || !node_match(slab, node))) { > > local_unlock_irqrestore(&s->cpu_slab->lock,...); > > and that's not the only lock in there. > > new_slab->allocate_slab... alloc_pages grabbing more locks. > > > Its not a lock for !RT. > > The fastpath is lockless if hardware allows that but then we go into more > and more serialiation needs as the allocation gets more into the page > allocator logic. On RT fast path == slow path with a lock. On !RT fast path is lock less. That's all correct. bpf side has to make sure safety in all possible paths therefore RT or !RT makes no difference.