Re: [Patch v2] Make PCI extended config space (MMCONFIG) a driver opt-in

Loic Prylli
2008-01-13T07:20:28Z

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