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