When ARM announced its 64-bit architecture, this was eventually followed by a free (as in beer) software model of that architecture. This model is called the Foundation Model, and although somewhat of an unwanted stepchild next to the commercially available (read expensive) FVP Base model, it is periodically updated.
Unfortunately, these updates are not just feature additions and bugfixes - there have also been substantial changes to the platform in the shape of memory map modifications and the introduction of GICv3 support.
And finally, on the platform software side, both support for UEFI and ARM Trusted Firmware were added substantially later than the Foundation Model was released. And they have changed over time to accomodate the changes in the model.
What this means is that it has not been possible to keep a stable development platform while also being able to update model versions and firmware. I think what is needed is to draw a line in the sand not too far back and make sure everyone developing on the Foundation Model use a minimum version of everything, and a standardised configuration. That is what I am trying to provide with this post.
But aside from complaining, there has also been various software features added that in themselves motivate an upgrade in order to simplify doing the right thing.
So, where is that line?
My suggestion is that the line is drawn as follows:
|Foundation Model||0.8.5206||bugfixes, latest memory map|
|ARM Trusted Firmware||v0.4||New-ish?|
|UEFI||Linaro-edk2 2014.06, or corresponding upstream||Fixes for making efibootmgr functional from within Linux. Linaro build includes a built-in DTB.|
|Linux Kernel||v3.16||UEFI support available for arm64 in upstream kernel|
Furthermore, in order for this all to work, Foundation Model must be called with
--gicv3, or UEFI will fail to boot properly. Also, the DTB provided with mainline Linux does not function at all with modern versions of the model. If you don't use a UEFI image that provides you with one, the only place you can find one is in the ARM Trusted Firmware tree, under 'fdts/'.
fvp-foundation-gicv2-psci.dtb is a safe bet (since the GICv3 implementation is backwards compatible).
If you want to use GRUB, 2.02~beta2 contains full support for arm64 UEFI platforms.