Hi Nico,
On 15.12.2021 12:21, Nico Huber wrote:
Hi Krystian,
On 14.12.21 13:00, Krystian Hebel wrote:
For our work on POWER9 coreboot port we were using Skiboot [1] packed into FIT payload.
I might just miss it because I never worked with FIT, but maybe I'm not the only one: Can you elaborate why you chose FIT? Reading through your mail (and without further knowledge) it would just seem like the wrong choice.
Good point, I spent so much time in this project that I treat too many things as obvious. Don't hesitate to ask if I omit something important.
Skiboot must be supplied with information about hardware. Some of that is generated by code based on current configuration (e.g. number of cores, their IDs, memory amount and associativity), but a lot is always the same for a given platform or even whole architecture (BMC sensors, interrupt controller, register address space, LPC controller). This can be passed either in HDAT structure (Hostboot data, proprietary and mostly undocumented format in supposedly open firmware) or, as we learned after asking on OpenPower-Firmware mailing list, using FDT:
https://lists.ozlabs.org/pipermail/openpower-firmware/2021-May/000641.html
In our current setup that second, constant part is supplied as FDT in FIT image so it can be added as .dts file, which is easier to read and understand than C code that would be used for creating these nodes.
Note that this doesn't apply to QEMU port that is currently under review on gerrit. In that case FDT is created by QEMU and its address is passed in one of the registers; this is not the case on hardware platform where it has to be created either from scratch or, as in our case, from preexisting skeleton.