All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jesse Barnes <jesse.barnes@intel.com>
To: Pierre Ossman <drzeus-list@drzeus.cx>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: Re: When to use mmiowb()?
Date: Thu, 31 Aug 2006 09:31:37 -0700	[thread overview]
Message-ID: <200608310931.37617.jesse.barnes@intel.com> (raw)
In-Reply-To: <44F699CE.8050803@drzeus.cx>

On Thursday, August 31, 2006 1:11 am, Pierre Ossman wrote:
> I'm been trying to wrap my head around all this memory barrier
> business, and I'm slowly grasping the inter-CPU behaviours. Barriers
> with regard to devices still has me a bit confused though.
>
> The deviceiobook document and memory-barriers.txt both make it clear
> that memory operations to devices are strictly ordered from a single
> CPU. When more CPUs are involved, things get a bit fuzzier.
> memory-barriers.txt seems to suggest that mmiowb() is only needed
> before an unlock under special circumstances, but deviceiobook states
> that mmiowb() should be used before all unlocks where the writeX():s
> aren't followed by a readX() (which would flush the writes anyway).
>
> Grepping the tree indicates that mmiowb() isn't used that often, but
> according to deviceiobook, they should be plentiful. This leads me to
> believe that memory-barriers.txt is closer to the truth, but then the
> question is what those special cirumstances that require mmiowb() are.

AFAICT, they're both right.  Generally, mmiowb() should be used prior to 
unlock in a critical section whose last PIO operation is a writeX.

You're right though: for portability, many more drivers should use this 
type of barrier.  However, rather than doing an audit of the tree and 
inserting mmiowb() everywhere (w/o testing it), we chose to add it on an 
as-needed basis for drivers that run on platforms that have weak I/O 
ordering.  Feel free to add it in other places if you want though (esp. 
if you have the hardware to test your changes).

Jesse

  reply	other threads:[~2006-08-31 16:33 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-31  8:11 When to use mmiowb()? Pierre Ossman
2006-08-31 16:31 ` Jesse Barnes [this message]
2006-08-31 18:16 ` Peter Grandi

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=200608310931.37617.jesse.barnes@intel.com \
    --to=jesse.barnes@intel.com \
    --cc=drzeus-list@drzeus.cx \
    --cc=linux-kernel@vger.kernel.org \
    /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.