Use PlatformSecPpiLib to get PPI descriptor and remove PPI descriptor related code from SEC.
Cc: Sunil V L <suni...@ventanamicro.com> Cc: Daniel Schaefer <daniel.schae...@hpe.com> Signed-off-by: Abner Chang <abner.ch...@hpe.com> --- .../PeiCoreEntryPoint/PeiCoreEntryPoint.inf | 1 + .../PlatformPkg/Universal/Sec/SecMain.inf | 4 - .../PlatformPkg/Universal/Sec/SecMain.h | 17 ---- .../PeiCoreEntryPoint/PeiCoreEntryPoint.c | 15 +++- .../PlatformPkg/Universal/Sec/SecMain.c | 84 ------------------- 5 files changed, 14 insertions(+), 107 deletions(-) diff --git a/Platform/RISC-V/PlatformPkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf b/Platform/RISC-V/PlatformPkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf index e16a974636..4f3af27bcf 100644 --- a/Platform/RISC-V/PlatformPkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf +++ b/Platform/RISC-V/PlatformPkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf @@ -32,5 +32,6 @@ [LibraryClasses] BaseLib DebugLib + PlatformSecPpiLib RiscVFirmwareContextLib diff --git a/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf b/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf index 4207c83413..9736277fa1 100644 --- a/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf +++ b/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf @@ -52,10 +52,6 @@ RiscVOpensbiPlatformLib RiscVEdk2SbiLib -[Ppis] - gEfiTemporaryRamSupportPpiGuid # PPI ALWAYS_PRODUCED - gEfiTemporaryRamDonePpiGuid # PPI ALWAYS_PRODUCED - [FixedPcd] gUefiRiscVPlatformPkgTokenSpaceGuid.PcdRiscVPeiFvBase gUefiRiscVPlatformPkgTokenSpaceGuid.PcdRiscVPeiFvSize diff --git a/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.h b/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.h index c04ddbad7f..496799efc0 100644 --- a/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.h +++ b/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.h @@ -25,8 +25,6 @@ #include <Library/PeCoffLib.h> #include <Library/PeiServicesLib.h> #include <Library/RiscVCpuLib.h> -#include <Ppi/TemporaryRamDone.h> -#include <Ppi/TemporaryRamSupport.h> int SecPostOpenSbiPlatformEarlylInit( @@ -49,19 +47,4 @@ SecStartupPhase2 ( IN VOID *Context ); -EFI_STATUS -EFIAPI -TemporaryRamMigration ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, - IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, - IN UINTN CopySize - ); - -EFI_STATUS -EFIAPI -TemporaryRamDone ( - VOID - ); - #endif // _SECMAIN_H_ diff --git a/Platform/RISC-V/PlatformPkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.c b/Platform/RISC-V/PlatformPkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.c index 2fd0f2315b..16488b7bc9 100644 --- a/Platform/RISC-V/PlatformPkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.c +++ b/Platform/RISC-V/PlatformPkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.c @@ -17,6 +17,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include <Library/BaseLib.h> #include <Library/DebugLib.h> #include <Library/PeiCoreEntryPoint.h> +#include <Library/PlatformSecPpiLib.h> #include <Library/RiscVFirmwareContextLib.h> /** @@ -49,15 +50,25 @@ _ModuleEntryPoint( IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList ) { + EFI_STATUS Status; EFI_SEC_PEI_HAND_OFF *ThisSecCoreData; EFI_PEI_PPI_DESCRIPTOR *ThisPpiList; EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT *FirmwareContext; FirmwareContext = (EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT *)PpiList; SetFirmwareContextPointer (FirmwareContext); + FirmwareContext->BootHartId = (UINT64)SecCoreData; + ThisSecCoreData = (EFI_SEC_PEI_HAND_OFF *)FirmwareContext->SecPeiHandOffData; - ThisPpiList = (EFI_PEI_PPI_DESCRIPTOR *)FirmwareContext->SecPeiHandoffPpi; - ProcessModuleEntryPointList (ThisSecCoreData, ThisPpiList, NULL); + Status = GetPlatformPrePeiCorePpiDescriptor (&ThisPpiList); + if (EFI_ERROR (Status)) { + ThisPpiList = NULL; + } + + // + // Invoke PEI Core entry point. + // + ProcessModuleEntryPointList(ThisSecCoreData, ThisPpiList, NULL); // // Should never return diff --git a/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.c b/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.c index 44984b0078..fb0adbca54 100644 --- a/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.c +++ b/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.c @@ -312,90 +312,6 @@ FindAndReportEntryPoints ( return; } -/* - Print out the content of firmware context. - -**/ -VOID -DebugPrintFirmwareContext ( - EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT *FirmwareContext - ) -{ - DEBUG ((DEBUG_INFO, "%a: OpenSBI Firmware Context at 0x%x\n", __FUNCTION__, FirmwareContext)); - DEBUG ((DEBUG_INFO, "%a: PEI Service at 0x%x\n\n", __FUNCTION__, FirmwareContext->PeiServiceTable)); -} -/** Temporary RAM migration function. - - This function migrates the data from temporary RAM to permanent - memory. - - @param[in] PeiServices PEI service - @param[in] TemporaryMemoryBase Temporary memory base address - @param[in] PermanentMemoryBase Permanent memory base address - @param[in] CopySize Size to copy - -**/ -EFI_STATUS -EFIAPI -TemporaryRamMigration ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, - IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, - IN UINTN CopySize - ) -{ - VOID *OldHeap; - VOID *NewHeap; - VOID *OldStack; - VOID *NewStack; - EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT *FirmwareContext; - - DEBUG ((DEBUG_INFO, - "%a: Temp Mem Base:0x%Lx, Permanent Mem Base:0x%Lx, CopySize:0x%Lx\n", - __FUNCTION__, - TemporaryMemoryBase, - PermanentMemoryBase, - (UINT64)CopySize - )); - - OldHeap = (VOID*)(UINTN)TemporaryMemoryBase; - NewHeap = (VOID*)((UINTN)PermanentMemoryBase + (CopySize >> 1)); - - OldStack = (VOID*)((UINTN)TemporaryMemoryBase + (CopySize >> 1)); - NewStack = (VOID*)(UINTN)PermanentMemoryBase; - - CopyMem (NewHeap, OldHeap, CopySize >> 1); // Migrate Heap - CopyMem (NewStack, OldStack, CopySize >> 1); // Migrate Stack - - // - // Reset firmware context pointer - // - SbiGetFirmwareContext (&FirmwareContext); - FirmwareContext = (VOID *)FirmwareContext + (unsigned long)((UINTN)NewStack - (UINTN)OldStack); - SbiSetFirmwareContext (FirmwareContext); - - // - // Relocate PEI Service ** - // - FirmwareContext->PeiServiceTable += (unsigned long)((UINTN)NewStack - (UINTN)OldStack); - DEBUG ((DEBUG_INFO, "%a: OpenSBI Firmware Context is relocated to 0x%x\n", __FUNCTION__, FirmwareContext)); - DebugPrintFirmwareContext ((EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT *)FirmwareContext); - - register uintptr_t a0 asm ("a0") = (uintptr_t)((UINTN)NewStack - (UINTN)OldStack); - asm volatile ("add sp, sp, a0"::"r"(a0):); - return EFI_SUCCESS; -} - -/** Temprary RAM done function. - -**/ -EFI_STATUS EFIAPI TemporaryRamDone ( - VOID - ) -{ - DEBUG ((DEBUG_INFO, "%a: 2nd time PEI core, temporary ram done.\n", __FUNCTION__)); - return EFI_SUCCESS; -} /** Handles SBI calls of EDK2's SBI FW extension. -- 2.31.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#82323): https://edk2.groups.io/g/devel/message/82323 Mute This Topic: https://groups.io/mt/86435675/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-