Re: [PATCH hazptr v3 0/4] Hazard pointer updates
From: Kai Ma
Date: Tue Oct 27 2026 - 09:02:57 EST
"Paul E. McKenney" <paulmck@xxxxxxxxxx> writes:
> On Mon, Oct 26, 2026 at 01:01:18PM +0100, Kai Ma wrote:
>> "Paul E. McKenney" <paulmck@xxxxxxxxxx> writes:
>>
>> > On Sun, Oct 11, 2026 at 03:48:46PM -0400, Mathieu Desnoyers wrote:
>> >> Hi Paul,
>> >>
>> >> This series applies on top of "hazptr: handle NULL address in
>> >> hazptr_detach" you have in your rcu dev tree.
>> >>
>> >> This first patch addresses a race identified by Boqun Feng in the
>> >> two-phase wildcard scheme. (no change since the last series)
>> >>
>> >> Patches 2-3 are prerequisites for using ptr_eq() in the 4th patch.
>> >> Those were discussed at length in a prior version of hazard pointer
>> >> patches.
>> >>
>> >> Since the last series, I have renamed ptreq.h to ptr_eq.h, addressing
>> >> the feedback received from Boqun and Gary.
>> >>
>> >> Patch 4 introduces a "try acquire" helper to allow the fast path
>> >> to not rely on wildcards, while keeping the wildcard forward
>> >> progress guarantees in the acquire slow path, used on fast path
>> >> failure.
>> >
>> > I have pulled this in for additional review and testing, thank you!
>> > (With Bradley's Reviewed-by on 4/4.) Still subject to rebase, which means
>> > that I can easily replace it with an updated series from you, if you
>> > wish.
>>
>> Hi Paul, Mathieu, and everyone,
>>
>> I've been following the hazard pointer work and have done some testing
>> on earlier versions. I'd be interested in getting more involved,
>> particularly in concurrency correctness testing.
>>
>> If there are WIP patches or early design discussions where additional
>> review or testing would be useful, could you please CC me? I'd
>> appreciate the opportunity to get involved earlier and help identify
>> potential concurrency issues.
>
> The current stack is in my -rcu tree [1] at v7.3-rc1..c3aea7747975,
> with these patches on top:
>
> 5df49d76ff3a3 hazptr: Fix two-phase hazptr_synchronize race with detach
> b41c6c2d4a33f ptr_eq.h: Introduce ptr_eq() to preserve address dependency
> 97ff14db1c381 Documentation: RCU: Refer to ptr_eq()
> 451174c765179 hazptr: Introduce "try acquire" fast path, fallback to overflow list
> 633f91e3408cc hazptr: Record per-CPU slot owner after claiming the slot
>
> The biggest need is use cases, with the most likely ones being cases
> where per-CPU reference counts consume too much memory or a reference
> count is suffering from memory contention. However, we are still finding
> critical bugs both in the mechanism and the torture tests, so as you say,
> review or testing is also very important.
>
> These patches CC the rcu@xxxxxxxxxxxxxxx list, so the best way to get
> involved in the discussions is to join that list.
>
> And welcome aboard!!!
Thank you and also Bradley!
Kai
>
> Thanx, Paul
>
> [1] git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
>
>> Thanks,
>> Kai
>>
>> > But in the meantime, some additional testing. ;-)
>> >
>> > Thanx, Paul
>> >
>> >> Thanks,
>> >>
>> >> Mathieu
>> >>
>> >> Mathieu Desnoyers (4):
>> >> hazptr: Fix two-phase hazptr_synchronize race with detach
>> >> ptr_eq.h: Introduce ptr_eq() to preserve address dependency
>> >> Documentation: RCU: Refer to ptr_eq()
>> >> hazptr: Introduce "try acquire" fast path, fallback to overflow list
>> >>
>> >> Cc: Paul E. McKenney <paulmck@xxxxxxxxxx>
>> >> Cc: Boqun Feng <boqun@xxxxxxxxxx>
>> >> Cc: Bradley Morgan <brads@xxxxxxxxxxxxxx>
>> >> Cc: Gary Guo <gary@xxxxxxxxxxx>
>> >> Cc: <rcu@xxxxxxxxxxxxxxx>
>> >> Cc: <lkmm@xxxxxxxxxxxxxxx>
>> >> Cc: Lian Wang <lianux.mm@xxxxxxxxx>
>> >> Cc: Kunwu Chan <kunwu.chan@xxxxxxxxx>
>> >>
>> >> Documentation/RCU/rcu_dereference.rst | 38 +++++++-
>> >> arch/x86/include/asm/ptr_eq.h | 16 +++
>> >> include/asm-generic/Kbuild | 1 +
>> >> include/asm-generic/ptr_eq.h | 16 +++
>> >> include/linux/hazptr.h | 48 +++++----
>> >> include/linux/ptr_eq.h | 63 ++++++++++++
>> >> kernel/hazptr.c | 135 +++++++++++++++-----------
>> >> 7 files changed, 237 insertions(+), 80 deletions(-)
>> >> create mode 100644 arch/x86/include/asm/ptr_eq.h
>> >> create mode 100644 include/asm-generic/ptr_eq.h
>> >> create mode 100644 include/linux/ptr_eq.h
>> >>
>> >> --
>> >> 2.43.0
>> >>