Ron/Stefan?
I'm not sure if we can perform generic hiding of devices behind a bridge. Could you look at the mail below?
Thanks! Carl-Daniel
On 08.05.2008 18:06, Carl-Daniel Hailfinger wrote:
On 08.05.2008 17:14, Stefan Reinauer wrote:
ron minnich wrote:
On Thu, May 8, 2008 at 7:51 AM, Stefan Reinauer stepan@coresystems.de wrote:
Are devices behind a disabled bridge completely invisible or do their PCI headers show up?
I can't find any bridge in v2 from a quick scan that would stay un-enabled.
If we don't know whether the OS wants the device, we enable it, not leave it or disable it.
We disable or hide the device, if that functionality is not there on the _board_, ie. because it is not wired.
Commerical BIOS sometimes have the ability to disable/hide otherwise functional onboard devices, which is useful if the machine is severely resource constrained in the IRQ area and/or the user doesn't want the OS to drive the device.
If we start thinking about what the OS wants in this context, we have to call this ACPI and make distinctions between OSes in the DTS. ;-)
Mind bleach! Now!
Look in pci_probe_dev for example: device is unconditionally enabled, so we can scan it.
IIRC one case that drove this was multiple VGA cards -- you want to set up the BARs etc. for all but you really don't know what the OS will do -- maybe nothing -- but you want them there if it will do something.
Unless the bios disables one of the devices, in which case the OS should find nothing.
What about devices which cause periodic interrupts once they are enabled? Enabling them has the undesirable effect of causing unhandled interrupts which irritate Linux a lot.
There really is a difference between un-enabled (or disabled) and hidden; as you pointed out, hidden means no config space, or "will not show up in lspci".
So disabled devices do show up in lspci?
I could try to dig up a lspci from a mail someone sent last year, but if Uwe has seen this on one of his machines, I'd be glad if he could track it down.