This is RFC for UEFI implementation for new machine based on Qemu Virt which is faithful as possible to real hardware. In opposition to existing Qemu Virt machine which is suited for performing workloads, the purpose of this machine is development of firmware and OS for AARCH64 server alike platforms (like in situation where real HW is not available yet or the debugging is easier to control under emulation). The SBSAQemu name, was chosen because the modeled HW is aimed to follow way that server-style armv8 machines are recommended to be set up.
Support for Sbsa-ref machine was added into Qemu in v4.1.0 Implementation does not use fw-cfg nor DT provided by Qemu. The ATF part is curently under review: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/1568/1 The compilation of edk2-platforms is described under: Platform/Qemu/SbsaQemu/Readme.md
This patch is provided as presentation for progress, not functional UEFI implementation. You cannot boot system at current state. To mention just few missing features: - Qemu <-> ATF <-> UEFI communication channel for dynamic parameters like DRAM size - Related dynamic initialization in UEFI is for now with static PCD's - ACPI platform driver - SMBIOS Support
Please provide feedback which might be helpfull for future development.
Radoslaw Biernacki (1): SbsaQemu: EFI implementation for SbsaQemu platform
Silicon/Qemu/SbsaQemuPkg.dec | 45 ++ Platform/Qemu/SbsaQemu/SbsaQemu.dsc | 744 ++++++++++++++++++ Platform/Qemu/SbsaQemu/SbsaQemu.fdf | 328 ++++++++ .../SbsaQemuPlatformDxe.inf | 48 ++ .../Qemu/Library/SbsaQemuLib/SbsaQemuLib.inf | 53 ++ .../SbsaQemuNorFlashLib.inf | 35 + .../SbsaQemuPciHostBridgeLib.inf | 55 ++ .../SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.c | 61 ++ .../Qemu/Library/SbsaQemuLib/SbsaQemuLib.c | 148 ++++ .../Qemu/Library/SbsaQemuLib/SbsaQemuMem.c | 109 +++ .../SbsaQemuNorFlashLib/SbsaQemuNorFlashLib.c | 46 ++ .../SbsaQemuPciHostBridgeLib.c | 224 ++++++ Maintainers.txt | 12 + Platform/Qemu/SbsaQemu/Readme.md | 162 ++++ Readme.md | 3 + .../Qemu/Library/SbsaQemuLib/SbsaQemuHelper.S | 62 ++ 16 files changed, 2135 insertions(+) create mode 100644 Silicon/Qemu/SbsaQemuPkg.dec create mode 100644 Platform/Qemu/SbsaQemu/SbsaQemu.dsc create mode 100644 Platform/Qemu/SbsaQemu/SbsaQemu.fdf create mode 100644 Silicon/Qemu/Drivers/SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.inf create mode 100644 Silicon/Qemu/Library/SbsaQemuLib/SbsaQemuLib.inf create mode 100644 Silicon/Qemu/Library/SbsaQemuNorFlashLib/SbsaQemuNorFlashLib.inf create mode 100644 Silicon/Qemu/Library/SbsaQemuPciHostBridgeLib/SbsaQemuPciHostBridgeLib.inf create mode 100644 Silicon/Qemu/Drivers/SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.c create mode 100644 Silicon/Qemu/Library/SbsaQemuLib/SbsaQemuLib.c create mode 100644 Silicon/Qemu/Library/SbsaQemuLib/SbsaQemuMem.c create mode 100644 Silicon/Qemu/Library/SbsaQemuNorFlashLib/SbsaQemuNorFlashLib.c create mode 100644 Silicon/Qemu/Library/SbsaQemuPciHostBridgeLib/SbsaQemuPciHostBridgeLib.c create mode 100644 Platform/Qemu/SbsaQemu/Readme.md create mode 100644 Silicon/Qemu/Library/SbsaQemuLib/SbsaQemuHelper.S