On Thu, Nov 22, 2012 at 12:45:57PM +0100, lautriv wrote:
On 11/21/2012 07:11 PM, Stefan Reinauer wrote:
- lautrivlautriv@coldplug.net [121121 13:35]:
Hello, 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: http://www.coreboot.org/SeaBIOS#Other_Configuration_items
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.
-Kevin