All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Higdon <jeremy@sgi.com>
To: Jack Steiner <steiner@sgi.com>
Cc: Matthew Wilcox <matthew@wil.cx>,
	Roland Dreier <rdreier@cisco.com>, Jeff Garzik <jeff@garzik.org>,
	linux-pci@atrey.karlin.mff.cuni.cz, linux-ia64@vger.kernel.org,
	linux-kernel@vger.kernel.org, openib-general@openib.org,
	John Partridge <johnip@sgi.com>
Subject: Re: Ordering between PCI config space writes and MMIO reads?
Date: Thu, 02 Nov 2006 03:05:11 +0000	[thread overview]
Message-ID: <20061102030511.GS150820@sgi.com> (raw)
In-Reply-To: <20061024232755.GA26521@sgi.com>

On Tue, Oct 24, 2006 at 06:27:55PM -0500, Jack Steiner wrote:
> On Tue, Oct 24, 2006 at 04:36:32PM -0600, Matthew Wilcox wrote:
> > On Tue, Oct 24, 2006 at 02:51:30PM -0700, Roland Dreier wrote:
> > >  > I think the right way to fix this is to ensure mmio write ordering in
> > >  > the pci_write_config_*() implementations.  Like this.
> > > 
> > > I'm happy to fix this in the PCI core and not force drivers to worry
> > > about this.
> > > 
> > > John, can you confirm that this patch fixes the issue for you?
> > 
> > Hang on.  I wasn't thinking clearly.  mmiowb() only ensures the write
> > has got as far as the shub.  
> 
> I think mmiowb() should work on SN hardware. mmiowb() delays until shub
> reports that all previously issued PIO writes have completed. 
> 
> The processor "mf.a" guarantees "platform acceptance" which on SN means
> that shub has accepted the write - not that it has actually completed (or
> even forwarded anywhere by shub). That makes "mf.a" more-or-less useless
> on SN. However, shub has an additional MMR register (PIO_WRITE_COUNT) that
> counts actual outstanding PIOs.  mmiob() delays until that count goes to
> zero.
> 
> I'll check if there is any additional reordering that can occur AFTER the
> PIO_WRITE_COUNT goes to zero.  If so, it would be at bus level - not in
> shub or routers.

As I understand it, the mmiowb on the shub waits only for the PIO write
to be accepted by the destination node (shub or tio) that the I/O device
is attached to, thus guaranteeing that no reordering will happen within
the NL.

If the PPB can reorder the write, then mmiowb is not sufficient.  You'd
have to do a readback from a chip register (assuming you can trust the
PPB not to reorder reads and writes), or some other work around I haven't
thought of.

jeremy

WARNING: multiple messages have this Message-ID (diff)
From: Jeremy Higdon <jeremy@sgi.com>
To: Jack Steiner <steiner@sgi.com>
Cc: Matthew Wilcox <matthew@wil.cx>,
	Roland Dreier <rdreier@cisco.com>, Jeff Garzik <jeff@garzik.org>,
	linux-pci@atrey.karlin.mff.cuni.cz, linux-ia64@vger.kernel.org,
	linux-kernel@vger.kernel.org, openib-general@openib.org,
	John Partridge <johnip@sgi.com>
Subject: Re: Ordering between PCI config space writes and MMIO reads?
Date: Wed, 1 Nov 2006 19:05:11 -0800	[thread overview]
Message-ID: <20061102030511.GS150820@sgi.com> (raw)
In-Reply-To: <20061024232755.GA26521@sgi.com>

On Tue, Oct 24, 2006 at 06:27:55PM -0500, Jack Steiner wrote:
> On Tue, Oct 24, 2006 at 04:36:32PM -0600, Matthew Wilcox wrote:
> > On Tue, Oct 24, 2006 at 02:51:30PM -0700, Roland Dreier wrote:
> > >  > I think the right way to fix this is to ensure mmio write ordering in
> > >  > the pci_write_config_*() implementations.  Like this.
> > > 
> > > I'm happy to fix this in the PCI core and not force drivers to worry
> > > about this.
> > > 
> > > John, can you confirm that this patch fixes the issue for you?
> > 
> > Hang on.  I wasn't thinking clearly.  mmiowb() only ensures the write
> > has got as far as the shub.  
> 
> I think mmiowb() should work on SN hardware. mmiowb() delays until shub
> reports that all previously issued PIO writes have completed. 
> 
> The processor "mf.a" guarantees "platform acceptance" which on SN means
> that shub has accepted the write - not that it has actually completed (or
> even forwarded anywhere by shub). That makes "mf.a" more-or-less useless
> on SN. However, shub has an additional MMR register (PIO_WRITE_COUNT) that
> counts actual outstanding PIOs.  mmiob() delays until that count goes to
> zero.
> 
> I'll check if there is any additional reordering that can occur AFTER the
> PIO_WRITE_COUNT goes to zero.  If so, it would be at bus level - not in
> shub or routers.

As I understand it, the mmiowb on the shub waits only for the PIO write
to be accepted by the destination node (shub or tio) that the I/O device
is attached to, thus guaranteeing that no reordering will happen within
the NL.

If the PPB can reorder the write, then mmiowb is not sufficient.  You'd
have to do a readback from a chip register (assuming you can trust the
PPB not to reorder reads and writes), or some other work around I haven't
thought of.

jeremy

  parent reply	other threads:[~2006-11-02  3:05 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-24 19:13 Ordering between PCI config space writes and MMIO reads? Roland Dreier
2006-10-24 19:13 ` Roland Dreier
2006-10-24 19:22 ` Jeff Garzik
2006-10-24 19:22   ` Jeff Garzik
2006-10-24 21:47   ` Matthew Wilcox
2006-10-24 21:47     ` Matthew Wilcox
2006-10-24 21:51     ` Roland Dreier
2006-10-24 21:51       ` Roland Dreier
2006-10-24 22:12       ` John Partridge
2006-10-24 22:12         ` John Partridge
2006-10-24 22:36       ` Matthew Wilcox
2006-10-24 22:36         ` Matthew Wilcox
2006-10-24 22:43         ` David Miller
2006-10-24 22:43           ` David Miller
2006-10-25 14:15           ` Roland Dreier
2006-10-25 14:15             ` Roland Dreier
2006-10-31 19:02             ` Roland Dreier
2006-10-31 19:02               ` Roland Dreier
2006-10-31 19:53               ` Michael S. Tsirkin
2006-10-31 19:53                 ` Michael S. Tsirkin
2006-10-31 19:53                 ` Roland Dreier
2006-10-31 19:53                   ` Roland Dreier
2006-10-31 19:58                   ` Matthew Wilcox
2006-10-31 19:58                     ` Matthew Wilcox
2006-10-31 20:28                   ` Michael S. Tsirkin
2006-10-31 20:28                     ` Michael S. Tsirkin
2006-10-31 20:34                 ` Richard B. Johnson
2006-10-31 20:34                   ` Richard B. Johnson
2006-10-31 20:47                   ` Matthew Wilcox
2006-10-31 20:47                     ` Matthew Wilcox
2006-10-31 22:30                     ` Roland Dreier
2006-10-31 22:30                       ` Roland Dreier
2006-11-01 16:27                       ` John Partridge
2006-11-01 16:27                         ` John Partridge
2006-11-01 16:46                         ` Matthew Wilcox
2006-11-01 16:46                           ` Matthew Wilcox
2006-11-01 17:08                           ` John Partridge
2006-11-01 17:08                             ` John Partridge
2006-11-01 17:14                             ` Matthew Wilcox
2006-11-01 17:14                               ` Matthew Wilcox
2006-11-01 23:04                         ` David Miller
2006-11-01 23:04                           ` David Miller
2006-11-02  1:08                           ` John Partridge
2006-11-02  1:08                             ` John Partridge
2006-10-31 20:50                   ` Michael S. Tsirkin
2006-10-31 20:50                     ` Michael S. Tsirkin
2006-10-24 22:59         ` [openib-general] " Jason Gunthorpe
2006-10-24 22:59           ` Jason Gunthorpe
2006-10-25 14:04           ` Roland Dreier
2006-10-25 14:04             ` Roland Dreier
2006-10-24 23:09         ` Michael S. Tsirkin
2006-10-24 23:09           ` Michael S. Tsirkin
2006-10-24 23:27         ` Jack Steiner
2006-10-24 23:27           ` Jack Steiner
2006-10-25 14:05           ` Roland Dreier
2006-10-25 14:05             ` Roland Dreier
2006-11-02  3:05           ` Jeremy Higdon [this message]
2006-11-02  3:05             ` Jeremy Higdon
2006-10-24 21:01 ` [openib-general] " JWM
2006-10-24 21:01   ` JWM
2006-10-24 21:24 ` Alan Cox
2006-10-24 21:24   ` Alan Cox
2006-10-24 21:29   ` Roland Dreier
2006-10-24 21:29     ` Roland Dreier
2006-10-24 21:37     ` Jeff Garzik
2006-10-24 21:37       ` Jeff Garzik
2006-10-25  6:30 ` Grant Grundler
2006-10-25  6:30   ` Grant Grundler
2006-10-25 14:11   ` Roland Dreier
2006-10-25 14:11     ` Roland Dreier
2006-10-25 14:18   ` Matthew Wilcox
2006-10-25 14:18     ` Matthew Wilcox
2006-10-25 17:15     ` [openib-general] " Jason Gunthorpe
2006-10-25 17:15       ` Jason Gunthorpe
2006-10-25 18:22     ` Michael S. Tsirkin
2006-10-25 18:22       ` Michael S. Tsirkin

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=20061102030511.GS150820@sgi.com \
    --to=jeremy@sgi.com \
    --cc=jeff@garzik.org \
    --cc=johnip@sgi.com \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@atrey.karlin.mff.cuni.cz \
    --cc=matthew@wil.cx \
    --cc=openib-general@openib.org \
    --cc=rdreier@cisco.com \
    --cc=steiner@sgi.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.