linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Richard B. Johnson" <root@chaos.analogic.com>
To: Jeff Garzik <jgarzik@pobox.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Ross Biro <rossb@google.com>, Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Alan Cox <alan@redhat.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Linux 2.4.21-pre3-ac4
Date: Mon, 13 Jan 2003 16:40:37 -0500 (EST)	[thread overview]
Message-ID: <Pine.LNX.3.95.1030113162939.30920A-100000@chaos.analogic.com> (raw)
In-Reply-To: <20030113212406.GA13531@gtf.org>

On Mon, 13 Jan 2003, Jeff Garzik wrote:

> On Mon, Jan 13, 2003 at 08:03:29PM +0100, Benjamin Herrenschmidt wrote:
> > Exactly. My problem right now is with enforcing that 400ns delay on
> > non-DMA path as with PCI write posting on one side, and other fancy bus
> > store queues etc... you are really not sure when your outb for the
> > command byte will really reach the disk.
> 
> As a slight tangent, PCI write posting is quite annoying because on some
> hardware one simply cannot perform a read immediately after a write,
> without pausing for a hardware-specified amount of time.
> 
> ...but, at the same time, who knows how long the write posting may take,
> so one doesn't know how long the delay really needs to be.
> 
> It would be nice if there was an arch-specific flush-posted-writes hook
> [wmb_mmio() ?], if that was possible on write-posting CPUs.  Currently
> right now the canonical solution ("MMIO read") doesn't work in some
> situations, and I do think we have a solution at all for those "some
> situations."
> 
> 	Jeff
> 

There is a well-defined procedure for this. Any "read" anywhere
in the PCI address space, will force all posted writes to complete.
However, the "read" will not be the data one would obtain after
the write completes. Therefore, to guarantee that all posted
writes complete before you read, for instance, status that could
be affected by that write, you execute a dummy read anywhere in
PCI address space, somewhere that will not screw up your
status. In other words, you don't read your device status twice,
once to post the writes and once to get the status because some
hardware will detect the read and fail to give you the correct
status on the second read. Instead, you read some 'harmless' register
that your hardware will decode, but not muck up the status. You
don't want to read a nonexistant register because this will cause
a lonnnnnnng bus-timeout. It will work to flush pending writes, but
it's slow.


Cheers,
Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips).
Why is the government concerned about the lunatic fringe? Think about it.



  reply	other threads:[~2003-01-13 21:28 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-12 18:07 Linux 2.4.21-pre3-ac4 Alan Cox
2003-01-12 19:29 ` Benjamin Herrenschmidt
     [not found]   ` <1042403235.16288.14.camel@irongate.swansea.linux.org.uk>
2003-01-12 19:51     ` Benjamin Herrenschmidt
2003-01-12 19:57       ` Benjamin Herrenschmidt
2003-01-12 20:51         ` Alan Cox
2003-01-13 16:56           ` Benjamin Herrenschmidt
2003-01-12 20:40       ` Alan Cox
2003-01-12 20:02         ` Benjamin Herrenschmidt
2003-01-13 18:49       ` Ross Biro
2003-01-13 19:03         ` Benjamin Herrenschmidt
2003-01-13 19:19           ` Ross Biro
2003-01-13 19:32             ` Ross Biro
2003-01-13 21:05               ` Alan Cox
2003-01-13 20:36                 ` Ross Biro
2003-01-13 19:46             ` Alan Cox
2003-01-14 17:38               ` Benjamin Herrenschmidt
2003-01-14 17:49                 ` Ross Biro
2003-01-14 17:52                   ` Benjamin Herrenschmidt
2003-01-14 21:17                     ` Andre Hedrick
2003-01-15  0:23                       ` Benjamin Herrenschmidt
2003-01-15  5:07                         ` Andre Hedrick
     [not found]                 ` <1043105473.12609.5.camel@dhcp22.swansea.linux.org.uk>
2003-01-21 17:07                   ` Benjamin Herrenschmidt
2003-01-13 20:56             ` Benjamin Herrenschmidt
2003-01-13 21:36               ` Ross Biro
2003-01-14  1:35                 ` Ross Biro
2003-01-14  1:44                   ` Andre Hedrick
2003-01-14  9:18                   ` Benjamin Herrenschmidt
2003-01-20  6:13                   ` Alan Cox
2003-01-13 19:34           ` John Alvord
2003-01-13 19:48             ` Ross Biro
2003-01-13 21:24           ` Jeff Garzik
2003-01-13 21:40             ` Richard B. Johnson [this message]
2003-01-13 22:02               ` Benjamin Herrenschmidt
2003-01-13 22:07               ` Benjamin Herrenschmidt
2003-01-14  1:20                 ` Richard B. Johnson
2003-01-14  9:06                   ` Benjamin Herrenschmidt
2003-01-14 14:04                     ` Richard B. Johnson
2003-01-14 14:35                       ` Benjamin Herrenschmidt
2003-01-21 11:15 ` Linux 2.4.21-pre3-ac4 [PATCH] Paul Gortmaker
2003-01-21 13:21   ` Hugh Dickins
2003-01-21 11:46 ` small patch for Via Pro 266T agp-support Jurriaan

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=Pine.LNX.3.95.1030113162939.30920A-100000@chaos.analogic.com \
    --to=root@chaos.analogic.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=alan@redhat.com \
    --cc=benh@kernel.crashing.org \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rossb@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).