Edit: Comments disabled. No UEFI/ACPI hating will be happening here. The below uses wording such as "Will". You can implement anything, of course. The goal here is to use spec-like language and to provide guidance so that you know a good way to do things. And that is what I will provide: some useful software recommendations, with examples. We have an opportunity here to build a good platform from day one :)

So you're building a 64-bit ARM server? If we're not already talking, reach out to me (I'm prepared to offer as much of my time as it takes to avoid fragmentation occurring, and I will work with you to assist in your hardware and software design process if necessary - it would not be the first time I have done this for 64-bit ARM). I am preparing a position whitepaper on what components and platform software you must provide. Meanwhile, contact me if you would like to receive a draft.

Things you should know:

0. You will implement AArch64 and you will (by definition in UEFI) boot in AArch64 mode. AArch32 is optional and will not be used if implemented. You will support both 4k and 64k pages.

1. You will implement EL3-EL0. EL3 is optional, but strongly encouraged. You will run UEFI at EL2 and you will handoff to the OS loader at EL2 (again, by definition in UEFI). Precise EL2/EL1 configuration register (example) values will be provided.

2. You will boot using exactly UEFI. There will be no U-Boot, and no alternative firmware permitted. You will pass the testsuite. You will handoff using 4k pages per spec but you will align all software and hardware addresses (for stage2 translation in particular) to 64k and anticipate a high remapping by a 64k OS. Precise UEFI calls and environment (examples) to be supported will be made available.

3. You will use precisely ACPI 5.0+ and not Device Tree. If a DTB is present, it shall be totally disregarded by OSPM. Details of this implantation (example) will be made available.

I strongly recommend following what we are building in LEG (Linaro Enterprise Group) and joining the effort, because that is what will be used on 64-bit ARM servers. There's some differentiation from the above in LEG - for example, it doesn't have a position on AArch32 or 64k pages, but I am choosing to take a personal position in the above.
Shared publiclyView activity