UEFI is a firmware specification created by Intel with portability in mind. The UEFI way of doing that was to provide special UEFI byte code (EBC). Unfortunately nobody really cared so compiler, firmware support and providers of EBC option roms ceased and basically every UEFI option rom today contains native x86(_64) machine code.
If you now want to plug a PCIe card into your shiny ARM server, that means even though firmware would be compatible it still can’t execute the option rom. Until you add QEMU to the mix.
Join me in exploring the depth of UEFI binary interfaces, marshalling between different architecture’s function call ABIs on the fly and learn how to integrate all of this into a working firmware, running on real
hardware, driving a real PCIe adapter.
UEFI is a firmware specification created by Intel with portability in mind. The UEFI way of doing that was to provide special UEFI byte code (EBC). Unfortunately nobody really cared so compiler, firmware support
and providers of EBC option roms ceased and basically every UEFI option rom today contains native x86(_64) machine code.
If you now want to plug a PCIe card into your shiny ARM server, that means even though firmware would be compatible it still can’t execute the option rom. Until you add QEMU to the mix.
Join me in exploring the depth of UEFI binary interfaces, marshalling between different architecture’s function call ABIs on the fly and learn how to integrate all of this into a working firmware, running on real
hardware, driving a real PCIe adapter.
Alexander GRAF, SUSE