ollie at lanl.gov
Wed Jun 16 11:18:00 CEST 2004
I am porting LinuxBIOS to the AMD Serenade mainboard and
encountered another problem with the device enumeration/
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.
More information about the coreboot