Re: [PATCH 8/8] locking/lockdep: Use shazptr to protect the key hashlist
From: Boqun Feng
Date: Wed Jun 25 2025 - 10:20:11 EST
On Wed, Jun 25, 2025 at 01:59:29PM +0200, Peter Zijlstra wrote:
> On Tue, Jun 24, 2025 at 08:11:01PM -0700, Boqun Feng wrote:
>
> > + /* Need preemption disable for using shazptr. */
> > + guard(preempt)();
> > +
> > + /* Protect the list search with shazptr. */
> > + guard(shazptr)(hash_head);
>
> OK, this is the end of the series, and so far every single user is doing
> both a preempt and a shazptr guard. Why can't we simplify this and have
> the shazptr guard imply preempt-disable?
You're right. The background story is that in the beginning, the hazard
pointer protection was placed at the callsites of is_dynamic_key(): one
in register_lock_class() and one in lockdep_init_map_type(), and in
register_lock_class() I could use the fact that it's called with irq
disabled to save the preempt-disable.
So given the current users, it makes sense to fold the preempt disabling
into shazptr guard.
Regards,
Boqun