Merge branch of PI tree to main trunk
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3918 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -29,11 +29,14 @@ Revision History
|
||||
#include <Guid/StatusCodeDataTypeId.h>
|
||||
#include <Ppi/DxeIpl.h>
|
||||
#include <Ppi/MemoryDiscovered.h>
|
||||
#include <Ppi/FindFv.h>
|
||||
#include <Ppi/StatusCode.h>
|
||||
#include <Ppi/Security.h>
|
||||
#include <Ppi/Reset.h>
|
||||
#include <Ppi/FvLoadFile.h>
|
||||
#include <Ppi/FirmwareVolume.h>
|
||||
#include <Ppi/FirmwareVolumeInfo.h>
|
||||
#include <Ppi/Decompress.h>
|
||||
#include <Ppi/GuidedSectionExtraction.h>
|
||||
#include <Ppi/LoadFile.h>
|
||||
#include <Ppi/Security2.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/PeiCoreEntryPoint.h>
|
||||
#include <Library/BaseLib.h>
|
||||
@ -43,11 +46,15 @@ Revision History
|
||||
#include <Library/ReportStatusCodeLib.h>
|
||||
#include <Library/PeCoffGetEntryPointLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/CacheMaintenanceLib.h>
|
||||
#include <Library/TimerLib.h>
|
||||
#include <Library/PeCoffLoaderLib.h>
|
||||
#include <IndustryStandard/PeImage.h>
|
||||
#include <Library/PeiServicesTablePointerLib.h>
|
||||
|
||||
extern EFI_GUID gEfiPeiCorePrivateGuid;
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Guid/FirmwareFileSystem2.h>
|
||||
#include <Guid/AprioriFileName.h>
|
||||
#include <Guid/PeiPeCoffLoader.h>
|
||||
|
||||
#define PEI_CORE_INTERNAL_FFS_FILE_DISPATCH_TYPE 0xff
|
||||
|
||||
@ -94,18 +101,6 @@ typedef struct {
|
||||
BOOLEAN ScanFv;
|
||||
} PEI_CORE_FV_HANDLE;
|
||||
|
||||
typedef struct {
|
||||
UINT8 CurrentPeim;
|
||||
UINT8 CurrentFv;
|
||||
UINT32 DispatchedPeimBitMap;
|
||||
UINT32 PreviousPeimBitMap;
|
||||
EFI_FFS_FILE_HEADER *CurrentPeimAddress;
|
||||
EFI_FIRMWARE_VOLUME_HEADER *CurrentFvAddress;
|
||||
EFI_FIRMWARE_VOLUME_HEADER *BootFvAddress;
|
||||
EFI_PEI_FIND_FV_PPI *FindFv;
|
||||
} PEI_CORE_DISPATCH_DATA;
|
||||
|
||||
|
||||
//
|
||||
// Pei Core private data structure instance
|
||||
//
|
||||
@ -116,7 +111,6 @@ typedef struct{
|
||||
UINTN Signature;
|
||||
EFI_PEI_SERVICES *PS; // Point to ServiceTableShadow
|
||||
PEI_PPI_DATABASE PpiData;
|
||||
PEI_CORE_DISPATCH_DATA DispatchData;
|
||||
UINTN FvCount;
|
||||
PEI_CORE_FV_HANDLE Fv[PEI_CORE_MAX_FV_SUPPORTED];
|
||||
EFI_PEI_FILE_HANDLE CurrentFvFileHandles[PEI_CORE_MAX_PEIM_PER_FV];
|
||||
@ -134,10 +128,12 @@ typedef struct{
|
||||
VOID *BottomOfCarHeap;
|
||||
VOID *TopOfCarHeap;
|
||||
VOID *CpuIo;
|
||||
EFI_PEI_SECURITY_PPI *PrivateSecurityPpi;
|
||||
EFI_PEI_SECURITY2_PPI *PrivateSecurityPpi;
|
||||
EFI_PEI_SERVICES ServiceTableShadow;
|
||||
UINTN SizeOfCacheAsRam;
|
||||
VOID *MaxTopOfCarHeap;
|
||||
EFI_PEI_PPI_DESCRIPTOR *XipLoadFile;
|
||||
EFI_PEI_PE_COFF_LOADER_PROTOCOL *PeCoffLoader;
|
||||
} PEI_CORE_INSTANCE;
|
||||
|
||||
//
|
||||
@ -215,11 +211,10 @@ Returns:
|
||||
// Dispatcher support functions
|
||||
//
|
||||
|
||||
EFI_STATUS
|
||||
BOOLEAN
|
||||
PeimDispatchReadiness (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN VOID *DependencyExpression,
|
||||
IN OUT BOOLEAN *Runnable
|
||||
IN VOID *DependencyExpression
|
||||
)
|
||||
/*++
|
||||
|
||||
@ -255,11 +250,10 @@ Returns:
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
VOID
|
||||
PeiDispatcher (
|
||||
IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN PEI_CORE_DISPATCH_DATA *DispatchData
|
||||
IN PEI_CORE_INSTANCE *PrivateData
|
||||
)
|
||||
|
||||
/*++
|
||||
@ -285,7 +279,7 @@ Returns:
|
||||
|
||||
VOID
|
||||
InitializeDispatcherData (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN PEI_CORE_INSTANCE *OldCoreData,
|
||||
IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData
|
||||
)
|
||||
@ -390,8 +384,9 @@ Returns:
|
||||
|
||||
BOOLEAN
|
||||
DepexSatisfied (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN VOID *CurrentPeimAddress
|
||||
IN PEI_CORE_INSTANCE *Private,
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
IN UINTN PeimCount
|
||||
)
|
||||
/*++
|
||||
|
||||
@ -448,7 +443,7 @@ Returns:
|
||||
//
|
||||
VOID
|
||||
InitializePpiServices (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN PEI_CORE_INSTANCE *OldCoreData
|
||||
)
|
||||
/*++
|
||||
@ -607,7 +602,7 @@ Returns:
|
||||
|
||||
VOID
|
||||
ProcessNotifyList (
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
IN PEI_CORE_INSTANCE *PrivateData
|
||||
)
|
||||
/*++
|
||||
|
||||
@ -626,7 +621,7 @@ Returns:
|
||||
|
||||
VOID
|
||||
DispatchNotify (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN UINTN NotifyType,
|
||||
IN INTN InstallStartIndex,
|
||||
IN INTN InstallStopIndex,
|
||||
@ -755,8 +750,9 @@ Returns:
|
||||
|
||||
EFI_STATUS
|
||||
VerifyPeim (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_FFS_FILE_HEADER *CurrentPeimAddress
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
@ -901,7 +897,7 @@ Returns:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFfsFindSectionData (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_SECTION_TYPE SectionType,
|
||||
IN EFI_PEI_FILE_HANDLE FfsFileHeader,
|
||||
IN OUT VOID **SectionData
|
||||
@ -964,7 +960,7 @@ Returns:
|
||||
//
|
||||
VOID
|
||||
InitializeMemoryServices (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,
|
||||
IN PEI_CORE_INSTANCE *OldCoreData
|
||||
)
|
||||
@ -1082,8 +1078,9 @@ Returns:
|
||||
EFI_STATUS
|
||||
PeiLoadImage (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_FFS_FILE_HEADER *PeimFileHeader,
|
||||
OUT VOID **EntryPoint
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
|
||||
OUT UINT32 *AuthenticationState
|
||||
)
|
||||
/*++
|
||||
|
||||
@ -1149,7 +1146,7 @@ Returns:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiResetSystem (
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
/*++
|
||||
|
||||
@ -1171,6 +1168,148 @@ Returns:
|
||||
--*/
|
||||
;
|
||||
|
||||
VOID
|
||||
PeiInitializeFv (
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initialize PeiCore Fv List.
|
||||
|
||||
Arguments:
|
||||
PrivateData - Pointer to PEI_CORE_INSTANCE.
|
||||
SecCoreData - Pointer to EFI_SEC_PEI_HAND_OFF.
|
||||
|
||||
Returns:
|
||||
NONE
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FirmwareVolmeInfoPpiNotifyCallback (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Process Firmware Volum Information once FvInfoPPI install.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - General purpose services available to every PEIM.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS if the interface could be successfully
|
||||
installed
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFfsFindFileByName (
|
||||
IN CONST EFI_GUID *FileName,
|
||||
IN EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
OUT EFI_PEI_FILE_HANDLE *FileHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Given the input VolumeHandle, search for the next matching name file.
|
||||
|
||||
Arguments:
|
||||
|
||||
FileName - File name to search.
|
||||
VolumeHandle - The current FV to search.
|
||||
FileHandle - Pointer to the file matching name in VolumeHandle.
|
||||
- NULL if file not found
|
||||
Returns:
|
||||
EFI_STATUS
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFfsGetFileInfo (
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
OUT EFI_FV_FILE_INFO *FileInfo
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Collect information of given file.
|
||||
|
||||
Arguments:
|
||||
FileHandle - The handle to file.
|
||||
FileInfo - Pointer to the file information.
|
||||
|
||||
Returns:
|
||||
EFI_STATUS
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFfsGetVolumeInfo (
|
||||
IN EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
OUT EFI_FV_INFO *VolumeInfo
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Collect information of given Fv Volume.
|
||||
|
||||
Arguments:
|
||||
VolumeHandle - The handle to Fv Volume.
|
||||
VolumeInfo - The pointer to volume information.
|
||||
|
||||
Returns:
|
||||
EFI_STATUS
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiRegisterForShadow (
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine enable a PEIM to register itself to shadow when PEI Foundation
|
||||
discovery permanent memory.
|
||||
|
||||
Arguments:
|
||||
FileHandle - File handle of a PEIM.
|
||||
|
||||
Returns:
|
||||
EFI_NOT_FOUND - The file handle doesn't point to PEIM itself.
|
||||
EFI_ALREADY_STARTED - Indicate that the PEIM has been registered itself.
|
||||
EFI_SUCCESS - Successfully to register itself.
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
|
||||
/**
|
||||
This routine enable a PEIM to register itself to shadow when PEI Foundation
|
||||
discovery permanent memory.
|
||||
@ -1221,4 +1360,60 @@ PeiSwitchStacks (
|
||||
IN VOID *NewBsp
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
PeiFindFileEx (
|
||||
IN CONST EFI_PEI_FV_HANDLE FvHandle,
|
||||
IN CONST EFI_GUID *FileName, OPTIONAL
|
||||
IN EFI_FV_FILETYPE SearchType,
|
||||
IN OUT EFI_PEI_FILE_HANDLE *FileHandle,
|
||||
IN OUT EFI_PEI_FV_HANDLE *AprioriFile OPTIONAL
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Given the input file pointer, search for the next matching file in the
|
||||
FFS volume as defined by SearchType. The search starts from FileHeader inside
|
||||
the Firmware Volume defined by FwVolHeader.
|
||||
|
||||
Arguments:
|
||||
PeiServices - Pointer to the PEI Core Services Table.
|
||||
SearchType - Filter to find only files of this type.
|
||||
Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
|
||||
FwVolHeader - Pointer to the FV header of the volume to search.
|
||||
This parameter must point to a valid FFS volume.
|
||||
FileHeader - Pointer to the current file from which to begin searching.
|
||||
This pointer will be updated upon return to reflect the file found.
|
||||
Flag - Indicator for if this is for PEI Dispath search
|
||||
|
||||
Returns:
|
||||
EFI_NOT_FOUND - No files matching the search criteria were found
|
||||
EFI_SUCCESS
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
VOID
|
||||
InitializeImageServices (
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN PEI_CORE_INSTANCE *OldCoreData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Regitser PeCoffLoader to PeiCore PrivateData. And install
|
||||
Pei Load File PPI.
|
||||
|
||||
Arguments:
|
||||
|
||||
PrivateData - Pointer to PEI_CORE_INSTANCE.
|
||||
OldCoreData - Pointer to PEI_CORE_INSTANCE.
|
||||
|
||||
Returns:
|
||||
|
||||
NONE.
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user