UefiCpuPkg/SecCore: Support EFI_PEI_CORE_FV_LOCATION_PPI
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1524 EFI_PEI_CORE_FV_LOCATION_PPI may be passed by platform when PeiCore not in BFV so SecCore has to search PeiCore either from the FV location provided by EFI_PEI_CORE_FV_LOCATION_PPI or from BFV. Test: Verified on internal platform and booting successfully. Cc: Eric Dong <eric.dong@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Chasel Chiu <chasel.chiu@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
parent
9b23c7ba9c
commit
373c2c5b88
|
@ -7,7 +7,7 @@
|
|||
# protected mode, setup flat memory model, enable temporary memory and
|
||||
# call into SecStartup().
|
||||
#
|
||||
# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||
# This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -73,6 +73,7 @@
|
|||
## NOTIFY
|
||||
## SOMETIMES_CONSUMES
|
||||
gPeiSecPerformancePpiGuid
|
||||
gEfiPeiCoreFvLocationPpiGuid
|
||||
|
||||
[Guids]
|
||||
## SOMETIMES_PRODUCES ## HOB
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
C functions in SEC
|
||||
|
||||
Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2008 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -232,22 +232,45 @@ SecStartupPhase2(
|
|||
EFI_PEI_PPI_DESCRIPTOR *AllSecPpiList;
|
||||
EFI_PEI_CORE_ENTRY_POINT PeiCoreEntryPoint;
|
||||
|
||||
PeiCoreEntryPoint = NULL;
|
||||
SecCoreData = (EFI_SEC_PEI_HAND_OFF *) Context;
|
||||
AllSecPpiList = (EFI_PEI_PPI_DESCRIPTOR *) SecCoreData->PeiTemporaryRamBase;
|
||||
|
||||
//
|
||||
// Find Pei Core entry point. It will report SEC and Pei Core debug information if remote debug
|
||||
// is enabled.
|
||||
//
|
||||
FindAndReportEntryPoints ((EFI_FIRMWARE_VOLUME_HEADER *) SecCoreData->BootFirmwareVolumeBase, &PeiCoreEntryPoint);
|
||||
if (PeiCoreEntryPoint == NULL)
|
||||
{
|
||||
CpuDeadLoop ();
|
||||
PpiList = SecPlatformMain (SecCoreData);
|
||||
if (PpiList != NULL) {
|
||||
for (Index = 0;
|
||||
(PpiList[Index].Flags & EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST) != EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST;
|
||||
Index++) {
|
||||
if (CompareGuid (PpiList[Index].Guid, &gEfiPeiCoreFvLocationPpiGuid) && (((EFI_PEI_CORE_FV_LOCATION_PPI *) PpiList[Index].Ppi)->PeiCoreFvLocation != 0)) {
|
||||
FindAndReportEntryPoints ((EFI_FIRMWARE_VOLUME_HEADER *) ((EFI_PEI_CORE_FV_LOCATION_PPI *) PpiList[Index].Ppi)->PeiCoreFvLocation, &PeiCoreEntryPoint);
|
||||
if (PeiCoreEntryPoint != NULL) {
|
||||
break;
|
||||
} else {
|
||||
//
|
||||
// PeiCore not found
|
||||
//
|
||||
CpuDeadLoop ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// If EFI_PEI_CORE_FV_LOCATION_PPI not found, try to locate PeiCore from BFV.
|
||||
//
|
||||
if (PeiCoreEntryPoint == NULL) {
|
||||
FindAndReportEntryPoints ((EFI_FIRMWARE_VOLUME_HEADER *) SecCoreData->BootFirmwareVolumeBase, &PeiCoreEntryPoint);
|
||||
if (PeiCoreEntryPoint == NULL) {
|
||||
CpuDeadLoop ();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Perform platform specific initialization before entering PeiCore.
|
||||
//
|
||||
PpiList = SecPlatformMain (SecCoreData);
|
||||
if (PpiList != NULL) {
|
||||
//
|
||||
// Remove the terminal flag from the terminal PPI
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
Master header file for SecCore.
|
||||
|
||||
Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2008 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -20,6 +20,7 @@
|
|||
#include <Ppi/SecPlatformInformation2.h>
|
||||
#include <Ppi/TemporaryRamDone.h>
|
||||
#include <Ppi/SecPerformance.h>
|
||||
#include <Ppi/PeiCoreFvLocation.h>
|
||||
|
||||
#include <Guid/FirmwarePerformance.h>
|
||||
|
||||
|
|
Loading…
Reference in New Issue