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