[LinuxBIOS] multiple devices in mainboard Config.lb

Stephen.Kimball at bench.com Stephen.Kimball at bench.com
Fri Mar 18 22:01:23 CET 2005


I'm trying to write the mainboard Config.lb file to support a CK804 and an IO4 on one Opteron.  

I can write a mainboard Config.lb file that will boot the system from an IDE device, but that's only because new device table entries are created for the IDE device.  So I'm not using the static on_mainboard=1 entries.

I can write a Config.lb file to use the CK804, but incoherent.c bumps up the device numbers and northbridge.c moves the device to bus 1.  Then I get the PCI bus configured like this

Bus# 00, Dev# 18, Func# 0  --->  Vendor ID = 1022   Device ID = 1100
Bus# 00, Dev# 18, Func# 1  --->  Vendor ID = 1022   Device ID = 1101
Bus# 00, Dev# 18, Func# 2  --->  Vendor ID = 1022   Device ID = 1102
Bus# 00, Dev# 18, Func# 3  --->  Vendor ID = 1022   Device ID = 1103
Bus# 00, Dev# 19, Func# 0  --->  Vendor ID = 1022   Device ID = 1100
Bus# 00, Dev# 19, Func# 1  --->  Vendor ID = 1022   Device ID = 1101
Bus# 00, Dev# 19, Func# 2  --->  Vendor ID = 1022   Device ID = 1102
Bus# 00, Dev# 19, Func# 3  --->  Vendor ID = 1022   Device ID = 1103
Bus# 01, Dev# 01, Func# 0  --->  Vendor ID = 10DE   Device ID = 005E
Bus# 01, Dev# 02, Func# 0  --->  Vendor ID = 10DE   Device ID = 0051
Bus# 01, Dev# 02, Func# 1  --->  Vendor ID = 10DE   Device ID = 0052
Bus# 01, Dev# 02, Func# 2  --->  Vendor ID = 10DE   Device ID = 005F
Bus# 01, Dev# 03, Func# 0  --->  Vendor ID = 10DE   Device ID = 005A
Bus# 01, Dev# 03, Func# 1  --->  Vendor ID = 10DE   Device ID = 005B
Bus# 01, Dev# 05, Func# 0  --->  Vendor ID = 10DE   Device ID = 0059
Bus# 01, Dev# 05, Func# 1  --->  Vendor ID = 10DE   Device ID = 0058
Bus# 01, Dev# 07, Func# 0  --->  Vendor ID = 10DE   Device ID = 0053
Bus# 01, Dev# 08, Func# 0  --->  Vendor ID = 10DE   Device ID = 0054
Bus# 01, Dev# 09, Func# 0  --->  Vendor ID = 10DE   Device ID = 0055
Bus# 01, Dev# 0A, Func# 0  --->  Vendor ID = 10DE   Device ID = 005C
Bus# 01, Dev# 0B, Func# 0  --->  Vendor ID = 10DE   Device ID = 0056
Bus# 01, Dev# 0C, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 01, Dev# 0D, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 01, Dev# 0E, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 01, Dev# 0F, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 03, Dev# 01, Func# 0  --->  Vendor ID = 10DE   Device ID = 005E
Bus# 03, Dev# 02, Func# 0  --->  Vendor ID = 10DE   Device ID = 00D3
Bus# 03, Dev# 02, Func# 1  --->  Vendor ID = 10DE   Device ID = 0052
Bus# 03, Dev# 02, Func# 2  --->  Vendor ID = 10DE   Device ID = 005F
Bus# 03, Dev# 08, Func# 0  --->  Vendor ID = 10DE   Device ID = 0054
Bus# 03, Dev# 09, Func# 0  --->  Vendor ID = 10DE   Device ID = 0055
Bus# 03, Dev# 0B, Func# 0  --->  Vendor ID = 10DE   Device ID = 0056
Bus# 03, Dev# 0C, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 03, Dev# 0D, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 03, Dev# 0E, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 03, Dev# 0F, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D


If I add "device pci_domain" statements before the devices, I get this
                                                                                                                                                             
Bus# 00, Dev# 18, Func# 0  --->  Vendor ID = 1022   Device ID = 1100
Bus# 00, Dev# 18, Func# 1  --->  Vendor ID = 1022   Device ID = 1101
Bus# 00, Dev# 18, Func# 2  --->  Vendor ID = 1022   Device ID = 1102
Bus# 00, Dev# 18, Func# 3  --->  Vendor ID = 1022   Device ID = 1103
Bus# 00, Dev# 19, Func# 0  --->  Vendor ID = 1022   Device ID = 1100
Bus# 00, Dev# 19, Func# 1  --->  Vendor ID = 1022   Device ID = 1101
Bus# 00, Dev# 19, Func# 2  --->  Vendor ID = 1022   Device ID = 1102
Bus# 00, Dev# 19, Func# 3  --->  Vendor ID = 1022   Device ID = 1103
Bus# 01, Dev# 00, Func# 0  --->  Vendor ID = 10DE   Device ID = 005E
Bus# 01, Dev# 01, Func# 0  --->  Vendor ID = 10DE   Device ID = 0051
Bus# 01, Dev# 01, Func# 1  --->  Vendor ID = 10DE   Device ID = 0052
Bus# 01, Dev# 01, Func# 2  --->  Vendor ID = 10DE   Device ID = 005F
Bus# 01, Dev# 02, Func# 0  --->  Vendor ID = 10DE   Device ID = 005A
Bus# 01, Dev# 02, Func# 1  --->  Vendor ID = 10DE   Device ID = 005B
Bus# 01, Dev# 04, Func# 0  --->  Vendor ID = 10DE   Device ID = 0059
Bus# 01, Dev# 04, Func# 1  --->  Vendor ID = 10DE   Device ID = 0058
Bus# 01, Dev# 06, Func# 0  --->  Vendor ID = 10DE   Device ID = 0053
Bus# 01, Dev# 07, Func# 0  --->  Vendor ID = 10DE   Device ID = 0054
Bus# 01, Dev# 08, Func# 0  --->  Vendor ID = 10DE   Device ID = 0055
Bus# 01, Dev# 09, Func# 0  --->  Vendor ID = 10DE   Device ID = 005C
Bus# 01, Dev# 0A, Func# 0  --->  Vendor ID = 10DE   Device ID = 0056
Bus# 01, Dev# 0B, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 01, Dev# 0C, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 01, Dev# 0D, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 01, Dev# 0E, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 02, Dev# 00, Func# 0  --->  Vendor ID = 10DE   Device ID = 005E
Bus# 02, Dev# 01, Func# 0  --->  Vendor ID = 10DE   Device ID = 00D3
Bus# 02, Dev# 01, Func# 1  --->  Vendor ID = 10DE   Device ID = 0052
Bus# 02, Dev# 01, Func# 2  --->  Vendor ID = 10DE   Device ID = 005F
Bus# 02, Dev# 07, Func# 0  --->  Vendor ID = 10DE   Device ID = 0054
Bus# 02, Dev# 08, Func# 0  --->  Vendor ID = 10DE   Device ID = 0055
Bus# 02, Dev# 0A, Func# 0  --->  Vendor ID = 10DE   Device ID = 0056
Bus# 02, Dev# 0B, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 02, Dev# 0C, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 02, Dev# 0D, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
Bus# 02, Dev# 0E, Func# 0  --->  Vendor ID = 10DE   Device ID = 005D
                                                                                                                                                             
So why does incoherent.c need to bump up the device numbers when the devices are on different busses?  There should be no device number conflicts?  No matter what I do, LinuxBIOS always creates new device table entries, because my Config.lb file has the devices on the wrong bus - 0.  The config file doesn't specify a device's bus and it doesn't assume a bus from the domain statement.  How is this suppose to work?

Attached is my Config.lb file.

Thanks for the help.

Steve Kimball     
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Config.lb
Type: application/octet-stream
Size: 6228 bytes
Desc: Config.lb
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20050318/67c3d011/attachment.obj>


More information about the coreboot mailing list