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

Reply via email to