[LinuxBIOS] PCI: Left over static devices. Check your Config.lb

Uwe Hermann uwe at hermann-uwe.de
Mon Dec 10 21:25:20 CET 2007

On Mon, Dec 10, 2007 at 10:08:30AM -0800, Steve Isaacs wrote:
> > For the PCI parts, LinuxBIOS sets up the static/onboard devices and scans
> > for other devices dynamically, if I'm not mistaken.
> > This means you do not specify PCI/AGP/PCIe extention cards in Config.lb,
> > they're rather detected at runtime.
> > 
> By "dynamic" is it meant devices for which it is possible to set the
> device ID (DID) in the PCI configuration space? Which means that devices
> for which the DID cannot be configured are considered "static"?

No, I don't think this has anything to do with the DID. But I'm not
really an expert here, better listen to Ron (see other mail).

> > For Super I/O stuff, the (PnP) settings are hardcoded from the options
> > in the 'chip superio/foo/bar' section of Config.lb
> If I understand this then it is correct to have the Super I/O as a
> subsection under the southbridge?


> Do the sections in Config.lb point to code that is executed

Sort of, yes. E.g. the keywords "io" and "irq" etc. in the Super I/O
section are "translated" to function calls in src/device/pnp_device.c
and others. PCI entries are translated into function calls in
> > >   device pci_domain 0 on
> > >     chip northbridge/amd/amdk8
> > >       device pci 18.0 on #  northbridge
> > >                          #  devices on link 0
> > >         chip southbridge/broadcom/bcm21000
> The document shows names being appended to these (e.g.
> northbridge/amd/amdk8 "mc0"). What effect does that have?

None. It's just a comment for humans to better understand the file.

> > >           device pci 6.2 on
> > 
> > What device is 6.2? The Super I/O section below should be a child of
> > the ISA/LPC device usually.
> > 
> 6.2 is the LPC device on the southbridge.

OK, good, that's correct then.

> > Do you have the sch4304 datasheet? If so, it would be nice if you
> > could add support for this chip to superiotool, see
> > http://linuxbios.org/Superiotool
> > 
> Yes I do. I might have an opportunity to do as you ask when the
> development schedule will allow more time.

Great, thanks.

> > Where does this come from? I don't see 6.3, 6.4 etc. in the lspci output.
> > 
> This is part of my confusion. I installed a Phoenix BIOS to boot Linux
> and be able to run lspci. I have no visibility into what it's (Phoenix
> BIOS) design is for this board. I suspect there are several devices it
> hides (a feature of the chipset) because the assumption is they won't be
> needed for the reference board.

Hm, not sure. I usually use lspci from the vendor BIOS (Phoenix in your
case) for comparison purposes. Yes, some devices may not appear (some
depend on the BIOS config menu settings; e.g. the menu may allow to
enable/disable an AC97 modem or not, etc), but the majority of devices
(and their IDs) should be correct. 

> > Can you also post the 'lspci' output? Your version of lspci doesn't
> > attach the device names to the -tvnn output.
> > 
> One thing that keeps tripping me is it appears that some device numbers
> are 0 based and others are 1 based. For example 18.0 agrees with a PCI
> bus scan as well as 19.0 but 6.0 in the Config shows up as 7.0 in the
> scan and 0.0 as 1.0. What's up with that?

Hm, good question. Someone else will have to answer it.

> Here's the output you requested. I've included the output from
> print_pci_devices() (debug.c).

Please also post the lspci from the vendor BIOS for comparison.

Thanks, Uwe.
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org

More information about the coreboot mailing list