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

Linus Torvalds
2007-12-23T05:19:00Z

On Sun, 23 Dec 2007, Jeff Garzik wrote:
>
> Then let's do it right: disable mmconfig by default on x86, and enable it
> when passed "pci=mmconfig".

I'm certainly ok with that, but then you say:

> > And yes, if you want the capability following to notice automatically when
> > capabilities really do go into the 0x100+ range, that's fine. I suspect
>
> Yes, we /must/ do this checking, if we don't already.

Hell no. If the user asked for mmconfig to be disabled, it needs to be
disabled, because it may well be broken and non-working. It's better to
not see some capabilities than to lock up the machine.

So what is it? Is it "some machines do it automatically when needed" or is
it "always disabled"?

You seem to now say that "always disabled by default" isn't good either.

What do I need to do to convince you that the *right* thing to do is:

- disabled by default, unless user *explicitly* asks for it with
"pci=mmconfig"

- but certain events will enable it automatically, unless the user
*explicitly* said (or we had a quirk that explicitly disabled it)
something like pci=mmconfig

See what I'm saying? You don't really seem to be disagreeing. It seems to
be, in fact, exactly what you want.

I'm saying that yes, the PCI capability code might be one such "enable
mmconfig if not explicitly disabled" user.

But I also suspect that some drivers might want to do it, and I'm almost
certain that some DMI quirks will want to do it (ie "I recognize this
machine, and this machine is from 2011, and wants MMCONFIG"). So we need
to have an interface for those quirks or other events to also do it, it
cannot be just a "PCI capabilities do it".

Quite frankly, the fewer drivers that do it, the happier I am. Maybe *no*
drivers will do it. If so, "Hallelujah, brother, give me an Amen!". But we
clearly want an interface for _some_ things to say "we might want to have
mmconfig". Maybe it's only PCI capabilities.

Regardless. Even if *no* driver ever does it, the logical interface will
clearly be "pci_enable_mmio(pdev)".

You can then argue all you want against individual drivers actually ever
using it, and I'll support you on that. I think MMCONFIG was/is a total
waste of everybodys time.

Linus