Hello,
I am porting LinuxBIOS to the AMD Serenade mainboard and encountered another problem with the device enumeration/ resource allcation.
The Serenade is almost exactly like the HDAMA or E325 but the two CPUs are connected by LDT0 on each one and the NCHT to 8131/8111 is on LDT2 on CPU0. I reused the mainboard/hdama and CAREFULLY change the .c code to reflaect the difference in LDT. I didn't change the Config.lb because the "bus" hierachy is the same. After I boot with the image I found that the dynamic device structures converted from the static device structures are NOT connected to the real devices found in the pci bus scan. So I have a set of dynamic device strucures without any corresponding physical device (PHANTOMs) and another set of dynamic devices structures having no "static" device information from the Config.lb.
The problem is caused by having uninitialized or incorrectly initialized bus->children. The dynamic device structures converted from static devices are on the other "link" (I would rather call it 'branch') of the "parent" i.e. they are the children of another "bus". The pci_scan_get_dev() or ht_scan_get_devs() can not find the pre-created device structures on this WRONG "bus/link" when scaning the bus/chain so it created a new instance.
How can I solve this problem ? Does the "link" keyword in the config file actually been used ? I tried to change the "link" for 8131/8111 in the config file but it made no difference.
Ollie