Re: [Patch v2] Make PCI extended config space (MMCONFIG) a driveropt-in
From: Loic Prylli
Date: Sun Jan 13 2008 - 02:20:33 EST
On 1/13/2008 1:01 AM, Matthew Wilcox wrote:
On Sat, Dec 29, 2007 at 12:12:19AM +0300, Ivan Kokshaysky wrote:
On Fri, Dec 28, 2007 at 12:40:53PM -0500, Loic Prylli wrote:
One thing that could be changed in pci_cfg_space_size() is to avoid
making a special case for PCI-X 266MHz/533Mhz (assume cfg_size == 256
for such devices too, reserve extended cfg-space for pci-express
devices).
I agree, we should remove it. IIRC, this PCI-X check was written
long ago with some draft (not a final spec) in hands. Matthew?
I have what I believe to be the released version of PCI-X 2.0a (July
22, 2003). It is quite clear that Mode 2 devices (ie those running at
266MHz or 533MHz) are required to support all 4096 bytes of extended
config space.
More to the point, I don't think we have any bug reports suggesting that
PCI-X Mode 2 devices/bridges have any problems.
As PCI-X2 bridge/chipset, I only knows about the AMD-8132 (from what I
understand it does PCI-X Mode 2), and some obscure IBM enterprise
chipset (I am sure there are a few more).
Too bad for the spec, but we definitely know for sure the AMD-8132
doesn't do ext-space (and makes it unusable for any device behind it).
There are relatively
few of them in existance, and my impression is that PCI-X2 is only being
implemented on server-class machines.
True.
'Consumer grade' equipment is
where all the problems lie anyway.
mmconfig has been a pain on the servers too (there are a lot of server
class amd machines using one pcie/mmconfig/chipset + amd-8131/2).
While the PCI-X 2.0a spec does not define any Extended Capability IDs,
it simply states that "This field is a PCI-SIG defined ID number that
indicates the nature and format of the Extended Capabilities List item".
The PCIe spec does define Extended Capability IDs, and I would think
it's entirely appropriate to use the same IDs for PCI-X Mode 2 devices.
Sure it might be needed on PCI-X2. But contrary to pcie (where the
driver/pci/pcie/aer subsystem already use ext-conf-space, and other
usages are bound to increase), needing ext-conf-space in the future on
pci-x2 is quite unlikely (pcie is long-lived, whereas PCI-X2 was
short-lived, obsoleted by PCI-E, and nobody has mentioned yet an example
of using ext-registers with a PCI-X2 device).
I was only mentioning that because of the very small trade-off: if you
don't exclude PCI-X2, on platforms with the amd-8132+bad-MCFG, you might
trigger a cfg-read==0xffffffff/master-abort in pci_cfg_space_size() for
such devices with Ivan patch. This is harmless, because a lot of similar
master-abort happen during PCI-probing anyway, so one more won't change
anything.
Anyway, I am equally happy with keeping pci_cfg_space_size() as it is.
Loic
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/