As pointed out by Eugene, the use of the ArmPlatformGlobalVariableLib to store the PEI services pointer violates the PI spec, since it prevents PEI modules built from a different code base from running under our firmware.
So instead, use the thread ID CPU registers, both for the PEI services table pointer (as the PI spec mandates), but also for the HOB list pointer that is recorded in the ArmGlobalVariable region when running under PrePi. After this change, no users of ArmPlatformGlobalVariableLib remain, so we can remove all implementations, and all plubming in the early init code in the various PrePi and PrePeiCore modules that allocate the global variable region. Ard Biesheuvel (23): ArmPlatformPkg/PrePiHobListPointerLib: use thread ID register ArmPkg: remove ArmPlatformGlobalVariableLib resolution from ArmPkg.dsc BeagleBoardPkg: remove ArmPlatformGlobalVariableLib resolution ArmVirtPkg/ArmVirtQemu: move to ArmPkg version of PeiServicesTablePointerLib ArmVirtPkg: drop ArmPlatformGlobalVariableLib dependency ArmPlatformPkg: move to ArmPkg version of PeiServicesTablePointerLib ArmPlatformPkg: drop ArmPlatformGlobalVariableLib resolutions ArmPlatformPkg: remove PeiServicesTablePointerLib implementation ArmPlatformPkg: remove all ArmPlatformGlobalVariableLib implementations ArmVirtPkg/PrePi: remove global variable allocation from lowlevel init ArmPlatformPkg/PrePi: remove global variable allocation from lowlevel init ArmPlatformPkg/PlatformPeim: remove ArmGlobalVariable lowlevel init ArmPlatformPkg/PrePeiCore: remove global variable allocation from lowlevel init ArmPlatformPkg/Sec: remove global variable allocation from lowlevel init EmbeddedPkg/AndroidFastboot: drop bogus gArmGlobalVariableGuid dependency ArmPkg/BdsLib: drop bogus gArmGlobalVariableGuid dependency ArmPlatformPkg/Bds: drop bogus ArmGlobalVariable dependencies ArmPlatformPkg/ArmJunoDxe: drop bogus gArmGlobalVariableGuid dependency ArmPlatformPkg/ArmVExpressFastBootDxe: drop bogus gArmGlobalVariableGuid dep ArmPlatformPkg/EblCmdLib: drop bogus ArmGlobalVariableHob.h include ArmPlatformPkg/PlatformIntelBdsLib: drop bogus gArmGlobalVariableGuid dep ArmPlatformPkg: remove ArmGlobalVariable PCD, GUID and PPI definitions ArmPkg: remove SetPrimaryStack and InitializePrimaryStack macros ArmPkg/ArmPkg.dsc | 3 - ArmPkg/Include/AsmMacroIoLib.h | 36 ------- ArmPkg/Include/AsmMacroIoLib.inc | 38 ------- ArmPkg/Include/AsmMacroIoLibV8.h | 35 ------- ArmPkg/Library/BdsLib/BdsLib.inf | 1 - ArmPlatformPkg/ArmJunoPkg/ArmJuno.dsc | 5 +- ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.inf | 1 - ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc | 3 - ArmPlatformPkg/ArmPlatformPkg.dec | 18 ---- ArmPlatformPkg/ArmPlatformPkg.dsc | 13 +-- ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA15-A7.dsc | 1 - ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc | 6 +- ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.dsc | 6 +- ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc | 8 +- ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBootDxe.inf | 3 - ArmPlatformPkg/Bds/Bds.inf | 1 - ArmPlatformPkg/Bds/BootMenu.c | 2 - ArmPlatformPkg/Bds/BootOption.c | 1 - ArmPlatformPkg/Include/Guid/ArmGlobalVariableHob.h | 51 ---------- ArmPlatformPkg/Include/Library/ArmPlatformGlobalVariableLib.h | 38 ------- ArmPlatformPkg/Include/Ppi/ArmGlobalVariable.h | 55 ---------- ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Dxe/DxeArmPlatformGlobalVariableLib.c | 76 -------------- ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Dxe/DxeArmPlatformGlobalVariableLib.inf | 44 -------- ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Pei/PeiArmPlatformGlobalVariableLib.c | 84 --------------- ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Pei/PeiArmPlatformGlobalVariableLib.inf | 40 -------- ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/PrePi/PrePiArmPlatformGlobalVariableLib.c | 107 -------------------- ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/PrePi/PrePiArmPlatformGlobalVariableLib.inf | 44 -------- ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Sec/SecArmPlatformGlobalVariableLib.c | 81 --------------- ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Sec/SecArmPlatformGlobalVariableLib.inf | 39 ------- ArmPlatformPkg/Library/EblCmdLib/EblCmdFdt.c | 1 - ArmPlatformPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c | 91 ----------------- ArmPlatformPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf | 44 -------- ArmPlatformPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf | 1 - ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointer.c | 12 +-- ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf | 7 +- ArmPlatformPkg/PlatformPei/PlatformPeim.c | 33 ------ ArmPlatformPkg/PlatformPei/PlatformPeim.inf | 6 -- ArmPlatformPkg/PrePeiCore/AArch64/PrePeiCoreEntryPoint.S | 7 +- ArmPlatformPkg/PrePeiCore/Arm/PrePeiCoreEntryPoint.S | 7 +- ArmPlatformPkg/PrePeiCore/Arm/PrePeiCoreEntryPoint.asm | 7 +- ArmPlatformPkg/PrePeiCore/PrePeiCore.c | 23 ----- ArmPlatformPkg/PrePeiCore/PrePeiCore.h | 5 - ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf | 3 - ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf | 3 - ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S | 7 -- ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.S | 6 -- ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.asm | 7 -- ArmPlatformPkg/PrePi/MainMPCore.c | 3 +- ArmPlatformPkg/PrePi/MainUniCore.c | 3 +- ArmPlatformPkg/PrePi/PeiMPCore.inf | 3 - ArmPlatformPkg/PrePi/PeiUniCore.inf | 3 - ArmPlatformPkg/PrePi/PrePi.c | 31 +----- ArmPlatformPkg/PrePi/PrePi.h | 2 - ArmPlatformPkg/Sec/AArch64/SecEntryPoint.S | 6 +- ArmPlatformPkg/Sec/Arm/SecEntryPoint.S | 6 +- ArmPlatformPkg/Sec/Arm/SecEntryPoint.asm | 6 +- ArmPlatformPkg/Sec/Sec.inf | 2 - ArmVirtPkg/ArmVirt.dsc.inc | 10 +- ArmVirtPkg/ArmVirtQemu.dsc | 5 +- ArmVirtPkg/ArmVirtXen.dsc | 1 - ArmVirtPkg/Library/ArmVirtPlatformLib/VirtMem.c | 1 - ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S | 7 -- ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf | 3 - ArmVirtPkg/PrePi/PrePi.c | 33 +----- ArmVirtPkg/PrePi/PrePi.h | 1 - BeagleBoardPkg/BeagleBoardPkg.dsc | 2 - EmbeddedPkg/Application/AndroidFastboot/AndroidFastbootApp.inf | 3 - EmbeddedPkg/Application/AndroidFastboot/Arm/BootAndroidBootImg.c | 2 - 68 files changed, 29 insertions(+), 1214 deletions(-) delete mode 100644 ArmPlatformPkg/Include/Guid/ArmGlobalVariableHob.h delete mode 100644 ArmPlatformPkg/Include/Library/ArmPlatformGlobalVariableLib.h delete mode 100644 ArmPlatformPkg/Include/Ppi/ArmGlobalVariable.h delete mode 100644 ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Dxe/DxeArmPlatformGlobalVariableLib.c delete mode 100644 ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Dxe/DxeArmPlatformGlobalVariableLib.inf delete mode 100644 ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Pei/PeiArmPlatformGlobalVariableLib.c delete mode 100644 ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Pei/PeiArmPlatformGlobalVariableLib.inf delete mode 100644 ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/PrePi/PrePiArmPlatformGlobalVariableLib.c delete mode 100644 ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/PrePi/PrePiArmPlatformGlobalVariableLib.inf delete mode 100644 ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Sec/SecArmPlatformGlobalVariableLib.c delete mode 100644 ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Sec/SecArmPlatformGlobalVariableLib.inf delete mode 100644 ArmPlatformPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c delete mode 100644 ArmPlatformPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf -- 1.9.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel