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.
the seabios was 1.7.1 and master from git
The relevant startup can be found here : http://pastebin.com/wZvRWm1Z
feel free to send me something to test out if there are unanswered questions or contact me in #coreboot on freenode's IRC. I'm not omnipresent but 8-12AM and 9-12PM CET should be fine ;)
Best regards, lautriv.
* lautriv lautriv@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)
Stefan
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)
Stefan
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.
regards , Helmut
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
On 11/23/2012 08:56 AM, Kevin O'Connor wrote:
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
Thanks for all replies, the problem is solved. I have to apologise my limited view on the whole while i was in hurry and finally blamed seabios for something where it not failed.
The very first attempt of all, even before i registered at this list was to add etc/extra-pci-roots. For some reason, that failed. so i checked the debugging output and found seabios doesn't never look behind the northbridge's LDT0 where coreboot already saw the rest of the devices and was also able to init them. All attempts to change SB_HT_CHAIN_ON_BUS0, HT_CHAIN_UNITID_BASE and HT_CHAIN_END_UNITID_BASE and different changes in the devicetree.cb were leading in the same edge, never got seabios to start at LDT1 ( using the right chain as the correct root ).
My conclusion was it must be within seabios and the forced initialisation supported that opinion because it was successful. next step was to get a clue about pci.c, i inserted additional lines to output runtime-values of each step, found that LDT1 was handled afterwards as independent bus ( what it in fact is ) got more and more the impression that code __should__ do the trick but won't.
Finally, i removed all binaries and presets, did the whole thing once again from scratch and this time my ./cbfstool coreboot.rom add -n etc/extra-pci-roots blah blah had the desired effect.
i may mention, the very first flash of coreboot gave me a big empty space between coreboot_ram and the payload of seabios (around 40 k unused) while the working version is aligned on boundary. so maybe the extra-pci-roots were not seen because of unusual issues on the flash. ( happend only the first time )
Thanks again for all suggestions, maybe i come back while tweaking this box now ;)
Regards Helmut