[SeaBIOS] Issues on initialization of PCI devices below root.
kevin at koconnor.net
Fri Nov 23 08:56:47 CET 2012
On Thu, Nov 22, 2012 at 12:45:57PM +0100, lautriv wrote:
> On 11/21/2012 07:11 PM, Stefan Reinauer wrote:
> >* lautriv<lautriv at coldplug.net> [121121 13:35]:
> >>i tried to get seabios up via payload from coreboot and failed on
> >>the initialisation
> >>of neccessary devices.
> >>The board in Question is a Tyan S4882, consisting of K8 northbridge,
> >>8131 southbridge, 8111 southbridge and Winbond w83627hf SuperIO.
> >>You will see on the following pastebin-url that coreboot does a
> >>proper init and can see all relevant devices.
> >>I was also able to get VGA up via coreboot ( to reflect an
> >>accessible device below root ) but not from within seabios. It
> >>probes only against PCI 00:18.0 ... 00:18.3 which are on the
> >>northbridge itself.
> >>I had a look on the sources and found it should see and init the
> >>whole tree, also checked my sources against some patches i found on
> >>the net and they are all applied or superseded.
> >I think you need to change the board's HT configuration so that the
> >southbridge ends up on bus 0 instead of 1 (with no pci bridge pointing
> >to bus 1)
> ok, i investigated a few hours on the coreboot part of
> hardware-init, device-tree and surrounding stuff.
> where i found coreboot itself can always find and init devices while
> seabios fails right after the northbridge, mentioning "MaxPCIBus 00"
> which was always a miracle to me.
> however, after the init was already working, and i could not see a
> problem on the fly, i took a crossbar and changed one line in pci.h
> from "extern int MaxPCIBus;" to "extern int MaxPCIBus = 5;". this is
> no solution or even gentlemen like but overrides the tree-building
> loops with success.
> finally i got this --> http://pastebin.com/iqQJ1m7C
> not perfect and needs more tuning but shows clearly something in the
> routines of PCI initialisation returns too early in the process.
One can get the same effect by modifying the extra-pci-roots variable
as described at:
This variable can be used to tell SeaBIOS about multiple independent
pci root buses.
However, in previous communications it was indicated that your board
does not have extra root buses, but instead has standard PCI bridges.
If this is the case, then the bridges are not being configured
properly in coreboot, as SeaBIOS will find and probe standard PCI
bridges when they are configured properly.
More information about the SeaBIOS