Messages in this thread | | | Date | Mon, 20 Jan 2020 21:44:29 +0100 | From | Andrea Parri <> | Subject | Re: [PATCH] workqueue: Document (some) memory-ordering properties of {queue,schedule}_work() |
| |
On Sun, Jan 19, 2020 at 06:02:35PM -0800, Paul E. McKenney wrote: > On Sat, Jan 18, 2020 at 10:58:20PM +0100, Andrea Parri wrote: > > It's desirable to be able to rely on the following property: All stores > > preceding (in program order) a call to a successful queue_work() will be > > visible from the CPU which will execute the queued work by the time such > > work executes, e.g., > > > > { x is initially 0 } > > > > CPU0 CPU1 > > > > WRITE_ONCE(x, 1); [ "work" is being executed ] > > r0 = queue_work(wq, work); r1 = READ_ONCE(x); > > > > Forbids: r0 == true && r1 == 0 > > > > The current implementation of queue_work() provides such memory-ordering > > property: > > > > - In __queue_work(), the ->lock spinlock is acquired. > > > > - On the other side, in worker_thread(), this same ->lock is held > > when dequeueing work. > > > > So the locking ordering makes things work out. > > > > Add this property to the DocBook headers of {queue,schedule}_work(). > > > > Suggested-by: Paul E. McKenney <paulmck@kernel.org> > > Signed-off-by: Andrea Parri <parri.andrea@gmail.com> > > Acked-by: Paul E. McKenney <paulmck@kernel.org>
Thanks!
> > An alternative to Randy's suggestion of dropping the comma following > the "cf." is to just drop that whole phrase. I will let you and Randy > work that one out, though. ;-)
Either way works for me.
I'd give Tejun and Lai some more time to review this and send a non-RFC with your Ack and this nit fixed later this week (unless I hear some objections).
Thanks, Andrea
| |