All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Valdis.Kletnieks@vt.edu
Cc: Randy Dunlap <randy.dunlap@oracle.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Ben Hutchings <bhutchings@solarflare.com>,
	Mikulas Patocka <mpatocka@redhat.com>,
	linux-kernel@vger.kernel.org, linux-mm@vger.kernel.org
Subject: Re: [PATCH] documentation: explain memory barriers
Date: Fri, 10 Oct 2008 04:35:47 +1100	[thread overview]
Message-ID: <200810100435.48010.nickpiggin@yahoo.com.au> (raw)
In-Reply-To: <8119.1223517003@turing-police.cc.vt.edu>

On Thursday 09 October 2008 12:50, Valdis.Kletnieks@vt.edu wrote:
> On Wed, 08 Oct 2008 18:12:23 PDT, Randy Dunlap said:
> > +
> > +24: All memory barriers {e.g., barrier(), rmb(), wmb()} need a comment
> > in the +    source code that explains the logic of what they are doing
> > and why.
>
> "what they are doing" will almost always be "flush value to RAM" or
> similar.

Memory barriers don't flush anything anywhere. It's simple: you must
explain which operations you are ordering against which.


> How about this instead: 
>
> + 24: All memory barriers ({e.g., barrier(), rmb(), wmb()} need a comment
> in the +    source code that explains the race condition being prevented,
> and states +    the location of the other code or hardware feature that
> races with this. +
> +    An example comment:
> +
> + 	/*
> + 	 * If we don't do a wmb() here, the RBFROBNIZ register on the XU293
> + 	 * card will get confused and wedge the hardware...
> + 	 */
> +	wmb();

This comment is no good, because it doesn't tell you what the memory barrier
does. It tells you what might happen if you omit it.

 /*
  * If we don't do a wmb() here, the store to the RBFROBNIZ,
  * above, might reach the device before the store X, below.
  * 
  * If that happens, then the XU293  card will get confused
  * and wedge the hardware...
  */
  wmb();

If you don't comment like that, then how does the reader know that the wmb
is not *also* supposed to order the store with any other of the limitless
subsequent stores until the next memory ordering operation? Or any of the
previous stores since the last one?

  reply	other threads:[~2008-10-09  6:36 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20080911101616.GA24064@agk.fab.redhat.com>
2008-09-22 21:10 ` [PATCH] Memory management livelock Mikulas Patocka
2008-09-23  0:48   ` Andrew Morton
2008-09-23 22:34   ` Mikulas Patocka
2008-09-23 22:49     ` Andrew Morton
2008-09-23 23:11       ` Mikulas Patocka
2008-09-23 23:46         ` Andrew Morton
2008-09-24 18:50           ` Mikulas Patocka
2008-09-24 18:51           ` [PATCH 1/3] " Mikulas Patocka
2008-09-24 18:52           ` [PATCH 2/3] " Mikulas Patocka
2008-10-02  5:54             ` Andrew Morton
2008-10-05 22:11               ` RFC: one-bit mutexes (was: Re: [PATCH 2/3] Memory management livelock) Mikulas Patocka
2008-10-11 12:06                 ` Nick Piggin
2008-10-20 20:14                   ` Mikulas Patocka
2008-10-21  1:51                     ` Nick Piggin
2008-10-05 22:14               ` [PATCH 1/3] bit mutexes Mikulas Patocka
2008-10-05 22:14               ` [PATCH 2/3] Fix fsync livelock Mikulas Patocka
2008-10-05 22:33                 ` Arjan van de Ven
2008-10-05 23:02                   ` Mikulas Patocka
2008-10-05 23:07                     ` Arjan van de Ven
2008-10-05 23:18                       ` Mikulas Patocka
2008-10-05 23:28                         ` Arjan van de Ven
2008-10-06  0:01                           ` Mikulas Patocka
2008-10-06  0:30                             ` Arjan van de Ven
2008-10-06  3:30                               ` Mikulas Patocka
2008-10-06  4:20                                 ` Arjan van de Ven
2008-10-06 13:00                                   ` Mikulas Patocka
2008-10-06 13:50                                     ` Arjan van de Ven
2008-10-06 20:44                                       ` Mikulas Patocka
2008-10-08 10:56                               ` Pavel Machek
2008-10-06  2:51                             ` Dave Chinner
2008-10-05 22:16               ` [PATCH 3/3] Fix fsync-vs-write misbehavior Mikulas Patocka
2008-10-09  1:12               ` [PATCH] documentation: explain memory barriers Randy Dunlap
2008-10-09  1:17                 ` Chris Snook
2008-10-09  1:31                   ` Andrew Morton
2008-10-09  5:51                     ` Chris Snook
2008-10-09  9:58                       ` Ben Hutchings
2008-10-09 21:27                         ` Nick Piggin
2008-10-09 17:29                       ` Nick Piggin
2008-10-09  1:50                 ` Valdis.Kletnieks
2008-10-09 17:35                   ` Nick Piggin [this message]
2008-10-09  6:52                     ` Valdis.Kletnieks
2008-09-24 18:53           ` [PATCH 3/3] Memory management livelock Mikulas Patocka
2008-10-03  2:32       ` [PATCH] " Nick Piggin
2008-10-03  2:40         ` Andrew Morton
2008-10-03  2:59           ` Nick Piggin
2008-10-03  3:14             ` Andrew Morton
2008-10-03  3:47               ` Nick Piggin
2008-10-03  3:56                 ` Andrew Morton
2008-10-03  4:07                   ` Nick Piggin
2008-10-03  4:17                     ` Andrew Morton
2008-10-03  4:29                       ` Nick Piggin
2008-10-03 11:43                   ` Mikulas Patocka
2008-10-03 12:27                     ` Nick Piggin
2008-10-03 13:53                       ` Mikulas Patocka
2008-10-03  2:54         ` Nick Piggin
2008-10-03 11:26           ` Mikulas Patocka
2008-10-03 12:31             ` Nick Piggin
2008-10-03 13:50               ` Mikulas Patocka
2008-10-03 14:50                 ` Alasdair G Kergon
2008-10-03 14:36               ` Alasdair G Kergon
2008-10-03 15:52           ` application syncing options (was Re: [PATCH] Memory management livelock) david
2008-10-06  0:04             ` Mikulas Patocka
2008-10-06  0:19               ` david
2008-10-06  3:42                 ` Mikulas Patocka
2008-10-07  3:37                   ` david
2008-10-07 15:44                     ` Mikulas Patocka
2008-10-07 17:16                       ` david

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200810100435.48010.nickpiggin@yahoo.com.au \
    --to=nickpiggin@yahoo.com.au \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=akpm@linux-foundation.org \
    --cc=bhutchings@solarflare.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@vger.kernel.org \
    --cc=mpatocka@redhat.com \
    --cc=randy.dunlap@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.