Phantom Devices

Li-Ta Lo ollie at
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/
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 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

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 mailing list