From: John Partridge <johnip@sgi.com>
To: Matthew Wilcox <matthew@wil.cx>
Cc: Roland Dreier <rdreier@cisco.com>,
"Richard B. Johnson" <jmodem@AbominableFirebug.com>,
"Michael S. Tsirkin" <mst@mellanox.co.il>,
linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org,
jeff@garzik.org, openib-general@openib.org,
linux-pci@atrey.karlin.mff.cuni.cz,
David Miller <davem@davemloft.net>
Subject: Re: Ordering between PCI config space writes and MMIO reads?
Date: Wed, 01 Nov 2006 17:08:08 +0000 [thread overview]
Message-ID: <4548D478.2080704@sgi.com> (raw)
In-Reply-To: <20061101164643.GH11399@parisc-linux.org>
Matthew,
So, if I understand correctly, you are saying because we cannot guarantee
the "flush" a config write even by doing a config read of the same register
(because the PPB can re-order) we have to make sure we block or spin on the
config write completion at the lowest level of the config write ?
Thanks
John
Matthew Wilcox wrote:
> On Wed, Nov 01, 2006 at 10:27:19AM -0600, John Partridge wrote:
>
>>Sorry, but I find this change a bit puzzling. The problem is particular to
>>the PPB on the HCA and not Altix.
>
>
> That's not true; it's more likely on Altix, but it's not unique. *any*
> PCI-PCI bridge can reorder pci config reads and writes. Apparently the
> normal PCI host bridge implementation avoids this problem by blocking
> until the completion comes back. If you put a quad-port tulip card into
> an Altix, you could experience the same problem (but it would be
> massively unlikely. You'd probably have to bring up three interfaces,
> saturate them with traffic, then bring up the fourth to see it. And
> even then it would be rare).
>
>
>>I can't see anywhere that a PCI Config
>>Write
>>is required to block until completion, it is the driver and the HCA ,not the
>>Altix hardware that requires the Config Write to have completed before we
>>leave mthca_reset()
>
>
> There's several places in the PCI midlayer that require the config write
> to have completed before we do a config read. The MWI code relies on
> this to see if the device supports MWI. If it gets out of order, we'll
> think that the device doesn't support MWI when it thinks it's been told
> to use MWI. Data corruption could result.
>
>
>>Changing pci_write_config_xxx() will change the behavior
>>for ALL drivers and the possibility of breaking something else. The fix was
>>very low risk in mthca_reset(), changing the PCI code to fix this is much
>>more onerous.
>
>
> I really don't think so. At worst you'll be changing the timing.
--
John Partridge
Silicon Graphics Inc
Tel: 651-683-3428
Vnet: 233-3428
E-Mail: johnip@sgi.com
WARNING: multiple messages have this Message-ID (diff)
From: John Partridge <johnip@sgi.com>
To: Matthew Wilcox <matthew@wil.cx>
Cc: Roland Dreier <rdreier@cisco.com>,
"Richard B. Johnson" <jmodem@AbominableFirebug.com>,
"Michael S. Tsirkin" <mst@mellanox.co.il>,
linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org,
jeff@garzik.org, openib-general@openib.org,
linux-pci@atrey.karlin.mff.cuni.cz,
David Miller <davem@davemloft.net>
Subject: Re: Ordering between PCI config space writes and MMIO reads?
Date: Wed, 01 Nov 2006 11:08:08 -0600 [thread overview]
Message-ID: <4548D478.2080704@sgi.com> (raw)
In-Reply-To: <20061101164643.GH11399@parisc-linux.org>
Matthew,
So, if I understand correctly, you are saying because we cannot guarantee
the "flush" a config write even by doing a config read of the same register
(because the PPB can re-order) we have to make sure we block or spin on the
config write completion at the lowest level of the config write ?
Thanks
John
Matthew Wilcox wrote:
> On Wed, Nov 01, 2006 at 10:27:19AM -0600, John Partridge wrote:
>
>>Sorry, but I find this change a bit puzzling. The problem is particular to
>>the PPB on the HCA and not Altix.
>
>
> That's not true; it's more likely on Altix, but it's not unique. *any*
> PCI-PCI bridge can reorder pci config reads and writes. Apparently the
> normal PCI host bridge implementation avoids this problem by blocking
> until the completion comes back. If you put a quad-port tulip card into
> an Altix, you could experience the same problem (but it would be
> massively unlikely. You'd probably have to bring up three interfaces,
> saturate them with traffic, then bring up the fourth to see it. And
> even then it would be rare).
>
>
>>I can't see anywhere that a PCI Config
>>Write
>>is required to block until completion, it is the driver and the HCA ,not the
>>Altix hardware that requires the Config Write to have completed before we
>>leave mthca_reset()
>
>
> There's several places in the PCI midlayer that require the config write
> to have completed before we do a config read. The MWI code relies on
> this to see if the device supports MWI. If it gets out of order, we'll
> think that the device doesn't support MWI when it thinks it's been told
> to use MWI. Data corruption could result.
>
>
>>Changing pci_write_config_xxx() will change the behavior
>>for ALL drivers and the possibility of breaking something else. The fix was
>>very low risk in mthca_reset(), changing the PCI code to fix this is much
>>more onerous.
>
>
> I really don't think so. At worst you'll be changing the timing.
--
John Partridge
Silicon Graphics Inc
Tel: 651-683-3428
Vnet: 233-3428
E-Mail: johnip@sgi.com
next prev parent reply other threads:[~2006-11-01 17:08 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 [this message]
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
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=4548D478.2080704@sgi.com \
--to=johnip@sgi.com \
--cc=davem@davemloft.net \
--cc=jeff@garzik.org \
--cc=jmodem@AbominableFirebug.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=mst@mellanox.co.il \
--cc=openib-general@openib.org \
--cc=rdreier@cisco.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.