Re: [RFC PATCH 08/21] Revert "list: Use WRITE_ONCE() when initializing list_head structures"

From: Paul E. McKenney
Date: Tue Mar 31 2020 - 09:47:28 EST


On Tue, Mar 31, 2020 at 02:11:54PM +0100, Will Deacon wrote:
> On Mon, Mar 30, 2020 at 04:25:05PM -0700, Paul E. McKenney wrote:
> > On Tue, Mar 24, 2020 at 03:36:30PM +0000, Will Deacon wrote:
> > > This reverts commit 2f073848c3cc8aff2655ab7c46d8c0de90cf4e50.
> > >
> > > There is no need to use WRITE_ONCE() to initialise a non-RCU 'list_head'.
> > >
> > > Cc: Paul E. McKenney <paulmck@xxxxxxxxxx>
> > > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> > > Signed-off-by: Will Deacon <will@xxxxxxxxxx>
> >
> > And attention to lockless uses of list_empty() here, correct?
> >
> > Depending on the outcome of discussions on 3/21, I should have added in
> > all three cases.
>
> Yes, patch 3 is where this will get sorted. It looks like we'll have to
> disable KCSAN around the READ_ONCE() over there, but I also need to finish
> wrapping my head around list_empty_careful() because I'm deeply suspicious!

At the very least, it does have the disadvantage of touching an additional
cache line, and up to two additional cache lines in the non-empty case. :-(

Thanx, Paul