On Wed, Apr 1, 2026 at 3:24 AM Christian König <[email protected]> wrote: > > On 3/31/26 19:12, Mikhail Gavrilov wrote: > > On Tue, Mar 31, 2026 at 7:38 PM Alex Deucher <[email protected]> wrote: > >> > >> Applied. Thanks! > >> > > > > Hi Christian, Alex, > > > > While testing v7, I noticed that xa_erase() and xa_alloc_cyclic() > > use plain xa_lock()/xa_unlock() regardless of XA_FLAGS_LOCK_IRQ — > > the flag only affects lockdep annotations, not runtime locking. > > > > The XArray API provides separate _irq variants for this: > > xa_alloc_cyclic_irq() and xa_erase_irq(), both defined as inlines > > in include/linux/xarray.h using xa_lock_irq/xa_unlock_irq. > > Ah, crap I wanted to double check exactly that but then had no time for it. > > > > > I confirmed this by hitting the same lockdep WARNING with v6 > > (which has the same locking), and by reading lib/xarray.c: > > > > void *xa_erase(struct xarray *xa, unsigned long index) > > { > > xa_lock(xa); // plain spin_lock, not _irq > > entry = __xa_erase(xa, index); > > xa_unlock(xa); > > return entry; > > } > > > > Should I send a v8 using xa_alloc_cyclic_irq() and xa_erase_irq()? > > Alex already applied the v7 so it would probably be best if you provide a > delta patch on top of that. > > It's then up to Alex if he can squash the patches together before upstreaming.
I dropped v7 so I can either apply v8 or squash v7 with the fixup patch. Alex > > Regards, > Christian. > > > > > Thanks, > > Mikhail >
