This reworks the Overdrive code so that it no longer relies in the ArmMpCore code in SEC and PEI, for two reasons: - ArmMpCore is unsafe on non-XIP platforms, since the initial pen code (the SecondaryMain() function) resides in normal memory rather than NOR flash, which is not protected from being overwritten by DXE if it feels like it - on Styx, the secondaries are not released by the ROM at the same time as the boot CPU, and instead, we explicitly invoke the SCP or the EL3 firmware to boot each secondary in turn, allowing us to boot them straight into the pen we set up for handing over to the OS
Ard Biesheuvel (7): Platforms/AMD/Styx: fix incorrect usage of ASSERT_EFI_ERROR Platforms/AMD/Styx/Library/AmdStyxLib: use [Ppis] section as intended Platforms/AMD: AmdStyxHelperLib: add helper to retrieve core info array Platforms/Styx: stop using the ArmMpCoreInfo configuration table Platforms/Styx/PlatInitPei: don't bring up secondaries in PEI Platforms/Styx/FdtDxe: boot secondaries straight into OS pen Platforms/ARM/Overdrive: move to PrePeiCoreUnicore even on non-PSCI builds
Platforms/AMD/Styx/AcpiTables/Madt.c | 15 +- Platforms/AMD/Styx/Common/AmdStyxHelperLib.h | 5 + Platforms/AMD/Styx/Drivers/FdtDxe/AArch64/BdsLinuxLoader.c | 124 +++++++++-- Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.inf | 8 +- Platforms/AMD/Styx/Drivers/PlatInitPei/PlatInitPei.c | 219 +------------------- Platforms/AMD/Styx/Drivers/PlatInitPei/PlatInitPei.h | 4 - Platforms/AMD/Styx/Drivers/PlatInitPei/PlatInitPei.inf | 3 - Platforms/AMD/Styx/Library/AmdStyxHelperLib/AmdStyxHelperLib.c | 21 ++ Platforms/AMD/Styx/Library/AmdStyxHelperLib/AmdStyxHelperLib.inf | 5 +- Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLib.inf | 3 + Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLibSec.inf | 3 + Platforms/AMD/Styx/Library/AmdStyxLib/Styx.c | 6 +- Platforms/AMD/Styx/OverdriveBoard/OverdriveBoard.dsc | 4 - Platforms/AMD/Styx/OverdriveBoard/OverdriveBoard.fdf | 4 - 14 files changed, 162 insertions(+), 262 deletions(-)