From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753744AbcKPO0q (ORCPT ); Wed, 16 Nov 2016 09:26:46 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:44540 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753085AbcKPO0o (ORCPT ); Wed, 16 Nov 2016 09:26:44 -0500 Date: Wed, 16 Nov 2016 06:26:41 -0800 From: "Paul E. McKenney" To: Mark Rutland Cc: linux-kernel@vger.kernel.org, David Howells , Jonathan Corbet , linux-doc@vger.kernel.org Subject: Re: [PATCH] Documentation: circular-buffers: use READ_ONCE() Reply-To: paulmck@linux.vnet.ibm.com References: <1479294769-12723-1-git-send-email-mark.rutland@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1479294769-12723-1-git-send-email-mark.rutland@arm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16111614-0020-0000-0000-00000A45BC81 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006088; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000189; SDB=6.00781485; UDB=6.00376982; IPR=6.00558995; BA=6.00004886; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00013345; XFM=3.00000011; UTC=2016-11-16 14:26:42 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16111614-0021-0000-0000-000057521403 Message-Id: <20161116142641.GE3612@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-11-16_06:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000 definitions=main-1611160233 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 16, 2016 at 11:12:49AM +0000, Mark Rutland wrote: > While the {READ,WRITE}_ONCE() macros should be used in preference to > ACCESS_ONCE(), the circular buffer documentation uses the latter > exclusively. > > To point people in the right direction, and as a step towards the > eventual removal of ACCESS_ONCE(), update the documentation to use > READ_ONCE(), as ACCESS_ONCE() is only used in a reader context in the > circular buffer documentation. > > Signed-off-by: Mark Rutland > Cc: David Howells > Cc: Jonathan Corbet > Cc: Paul E. McKenney > Cc: linux-doc@vger.kernel.org > Cc: linux-kernel@vger.kernel.org Acked-by: Paul E. McKenney > --- > Documentation/circular-buffers.txt | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/Documentation/circular-buffers.txt b/Documentation/circular-buffers.txt > index 88951b1..4a824d2 100644 > --- a/Documentation/circular-buffers.txt > +++ b/Documentation/circular-buffers.txt > @@ -161,7 +161,7 @@ The producer will look something like this: > > unsigned long head = buffer->head; > /* The spin_unlock() and next spin_lock() provide needed ordering. */ > - unsigned long tail = ACCESS_ONCE(buffer->tail); > + unsigned long tail = READ_ONCE(buffer->tail); > > if (CIRC_SPACE(head, tail, buffer->size) >= 1) { > /* insert one item into the buffer */ > @@ -222,7 +222,7 @@ This will instruct the CPU to make sure the index is up to date before reading > the new item, and then it shall make sure the CPU has finished reading the item > before it writes the new tail pointer, which will erase the item. > > -Note the use of ACCESS_ONCE() and smp_load_acquire() to read the > +Note the use of READ_ONCE() and smp_load_acquire() to read the > opposition index. This prevents the compiler from discarding and > reloading its cached value - which some compilers will do across > smp_read_barrier_depends(). This isn't strictly needed if you can > -- > 1.9.1 >