IntelFsp2WrapperPkg: Apply uncrustify changes

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737

Apply uncrustify changes to .c/.h files in the IntelFsp2WrapperPkg package

Cc: Andrew Fish <afish@apple.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Chasel Chiu <chasel.chiu@intel.com>
This commit is contained in:
Michael Kubacki
2021-12-05 14:54:00 -08:00
committed by mergify[bot]
parent 111f2228dd
commit 7c7184e201
26 changed files with 584 additions and 552 deletions

View File

@ -21,25 +21,25 @@
#include <Library/HobLib.h> #include <Library/HobLib.h>
#include <FspStatusCode.h> #include <FspStatusCode.h>
#define FSP_API_NOTIFY_PHASE_AFTER_PCI_ENUMERATION BIT16 #define FSP_API_NOTIFY_PHASE_AFTER_PCI_ENUMERATION BIT16
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI * ADD_PERFORMANCE_RECORDS)( (EFIAPI *ADD_PERFORMANCE_RECORDS)(
IN CONST VOID *HobStart IN CONST VOID *HobStart
); );
struct _ADD_PERFORMANCE_RECORD_PROTOCOL { struct _ADD_PERFORMANCE_RECORD_PROTOCOL {
ADD_PERFORMANCE_RECORDS AddPerformanceRecords; ADD_PERFORMANCE_RECORDS AddPerformanceRecords;
}; };
typedef struct _ADD_PERFORMANCE_RECORD_PROTOCOL ADD_PERFORMANCE_RECORD_PROTOCOL; typedef struct _ADD_PERFORMANCE_RECORD_PROTOCOL ADD_PERFORMANCE_RECORD_PROTOCOL;
extern EFI_GUID gAddPerfRecordProtocolGuid; extern EFI_GUID gAddPerfRecordProtocolGuid;
extern EFI_GUID gFspHobGuid; extern EFI_GUID gFspHobGuid;
extern EFI_GUID gFspApiPerformanceGuid; extern EFI_GUID gFspApiPerformanceGuid;
static EFI_EVENT mExitBootServicesEvent = NULL; static EFI_EVENT mExitBootServicesEvent = NULL;
/** /**
Relocate this image under 4G memory. Relocate this image under 4G memory.
@ -53,8 +53,8 @@ static EFI_EVENT mExitBootServicesEvent = NULL;
**/ **/
EFI_STATUS EFI_STATUS
RelocateImageUnder4GIfNeeded ( RelocateImageUnder4GIfNeeded (
IN EFI_HANDLE ImageHandle, IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable IN EFI_SYSTEM_TABLE *SystemTable
); );
/** /**
@ -70,9 +70,9 @@ OnPciEnumerationComplete (
IN VOID *Context IN VOID *Context
) )
{ {
NOTIFY_PHASE_PARAMS NotifyPhaseParams; NOTIFY_PHASE_PARAMS NotifyPhaseParams;
EFI_STATUS Status; EFI_STATUS Status;
VOID *Interface; VOID *Interface;
// //
// Try to locate it because gEfiPciEnumerationCompleteProtocolGuid will trigger it once when registration. // Try to locate it because gEfiPciEnumerationCompleteProtocolGuid will trigger it once when registration.
@ -84,26 +84,26 @@ OnPciEnumerationComplete (
&Interface &Interface
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
return ; return;
} }
NotifyPhaseParams.Phase = EnumInitPhaseAfterPciEnumeration; NotifyPhaseParams.Phase = EnumInitPhaseAfterPciEnumeration;
PERF_START_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_POST_PCIE_ENUM_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY); PERF_START_EX (&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_POST_PCIE_ENUM_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY);
Status = CallFspNotifyPhase (&NotifyPhaseParams); Status = CallFspNotifyPhase (&NotifyPhaseParams);
PERF_END_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_POST_PCIE_ENUM_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT); PERF_END_EX (&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_POST_PCIE_ENUM_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT);
// //
// Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status
// //
if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {
DEBUG((DEBUG_INFO, "FSP NotifyPhase AfterPciEnumeration requested reset 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FSP NotifyPhase AfterPciEnumeration requested reset 0x%x\n", Status));
CallFspWrapperResetSystem ((UINT32)Status); CallFspWrapperResetSystem ((UINT32)Status);
} }
if (Status != EFI_SUCCESS) { if (Status != EFI_SUCCESS) {
DEBUG((DEBUG_ERROR, "FSP NotifyPhase AfterPciEnumeration failed, status: 0x%x\n", Status)); DEBUG ((DEBUG_ERROR, "FSP NotifyPhase AfterPciEnumeration failed, status: 0x%x\n", Status));
} else { } else {
DEBUG((DEBUG_INFO, "FSP NotifyPhase AfterPciEnumeration Success.\n")); DEBUG ((DEBUG_INFO, "FSP NotifyPhase AfterPciEnumeration Success.\n"));
} }
} }
@ -125,28 +125,28 @@ OnReadyToBoot (
IN VOID *Context IN VOID *Context
) )
{ {
NOTIFY_PHASE_PARAMS NotifyPhaseParams; NOTIFY_PHASE_PARAMS NotifyPhaseParams;
EFI_STATUS Status; EFI_STATUS Status;
gBS->CloseEvent (Event); gBS->CloseEvent (Event);
NotifyPhaseParams.Phase = EnumInitPhaseReadyToBoot; NotifyPhaseParams.Phase = EnumInitPhaseReadyToBoot;
PERF_START_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_READY_TO_BOOT_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY); PERF_START_EX (&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_READY_TO_BOOT_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY);
Status = CallFspNotifyPhase (&NotifyPhaseParams); Status = CallFspNotifyPhase (&NotifyPhaseParams);
PERF_END_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_READY_TO_BOOT_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT); PERF_END_EX (&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_READY_TO_BOOT_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT);
// //
// Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status
// //
if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {
DEBUG((DEBUG_INFO, "FSP NotifyPhase ReadyToBoot requested reset 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FSP NotifyPhase ReadyToBoot requested reset 0x%x\n", Status));
CallFspWrapperResetSystem ((UINT32)Status); CallFspWrapperResetSystem ((UINT32)Status);
} }
if (Status != EFI_SUCCESS) { if (Status != EFI_SUCCESS) {
DEBUG((DEBUG_ERROR, "FSP NotifyPhase ReadyToBoot failed, status: 0x%x\n", Status)); DEBUG ((DEBUG_ERROR, "FSP NotifyPhase ReadyToBoot failed, status: 0x%x\n", Status));
} else { } else {
DEBUG((DEBUG_INFO, "FSP NotifyPhase ReadyToBoot Success.\n")); DEBUG ((DEBUG_INFO, "FSP NotifyPhase ReadyToBoot Success.\n"));
} }
} }
@ -166,39 +166,40 @@ OnEndOfFirmware (
IN VOID *Context IN VOID *Context
) )
{ {
NOTIFY_PHASE_PARAMS NotifyPhaseParams; NOTIFY_PHASE_PARAMS NotifyPhaseParams;
EFI_STATUS Status; EFI_STATUS Status;
ADD_PERFORMANCE_RECORD_PROTOCOL *AddPerfRecordInterface; ADD_PERFORMANCE_RECORD_PROTOCOL *AddPerfRecordInterface;
EFI_PEI_HOB_POINTERS Hob; EFI_PEI_HOB_POINTERS Hob;
VOID **FspHobListPtr; VOID **FspHobListPtr;
gBS->CloseEvent (Event); gBS->CloseEvent (Event);
NotifyPhaseParams.Phase = EnumInitPhaseEndOfFirmware; NotifyPhaseParams.Phase = EnumInitPhaseEndOfFirmware;
PERF_START_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_END_OF_FIRMWARE_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY); PERF_START_EX (&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_END_OF_FIRMWARE_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY);
Status = CallFspNotifyPhase (&NotifyPhaseParams); Status = CallFspNotifyPhase (&NotifyPhaseParams);
PERF_END_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_END_OF_FIRMWARE_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT); PERF_END_EX (&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_END_OF_FIRMWARE_NOTIFICATION | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT);
// //
// Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status
// //
if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {
DEBUG((DEBUG_INFO, "FSP NotifyPhase EndOfFirmware requested reset 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FSP NotifyPhase EndOfFirmware requested reset 0x%x\n", Status));
CallFspWrapperResetSystem ((UINT32)Status); CallFspWrapperResetSystem ((UINT32)Status);
} }
if (Status != EFI_SUCCESS) { if (Status != EFI_SUCCESS) {
DEBUG((DEBUG_ERROR, "FSP NotifyPhase EndOfFirmware failed, status: 0x%x\n", Status)); DEBUG ((DEBUG_ERROR, "FSP NotifyPhase EndOfFirmware failed, status: 0x%x\n", Status));
} else { } else {
DEBUG((DEBUG_INFO, "FSP NotifyPhase EndOfFirmware Success.\n")); DEBUG ((DEBUG_INFO, "FSP NotifyPhase EndOfFirmware Success.\n"));
} }
Status = gBS->LocateProtocol ( Status = gBS->LocateProtocol (
&gAddPerfRecordProtocolGuid, &gAddPerfRecordProtocolGuid,
NULL, NULL,
(VOID**) &AddPerfRecordInterface (VOID **)&AddPerfRecordInterface
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
DEBUG((DEBUG_INFO, "gAddPerfRecordProtocolGuid - Locate protocol failed\n")); DEBUG ((DEBUG_INFO, "gAddPerfRecordProtocolGuid - Locate protocol failed\n"));
return; return;
} else { } else {
Hob.Raw = GetFirstGuidHob (&gFspHobGuid); Hob.Raw = GetFirstGuidHob (&gFspHobGuid);
@ -224,15 +225,15 @@ OnEndOfFirmware (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
FspWrapperNotifyDxeEntryPoint ( FspWrapperNotifyDxeEntryPoint (
IN EFI_HANDLE ImageHandle, IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable IN EFI_SYSTEM_TABLE *SystemTable
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_EVENT ReadyToBootEvent; EFI_EVENT ReadyToBootEvent;
VOID *Registration; VOID *Registration;
EFI_EVENT ProtocolNotifyEvent; EFI_EVENT ProtocolNotifyEvent;
UINT32 FspApiMask; UINT32 FspApiMask;
// //
// Load this driver's image to memory // Load this driver's image to memory
@ -274,4 +275,3 @@ FspWrapperNotifyDxeEntryPoint (
return EFI_SUCCESS; return EFI_SUCCESS;
} }

View File

@ -29,18 +29,18 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
**/ **/
EFI_STATUS EFI_STATUS
RelocateImageUnder4GIfNeeded ( RelocateImageUnder4GIfNeeded (
IN EFI_HANDLE ImageHandle, IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable IN EFI_SYSTEM_TABLE *SystemTable
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
UINT8 *Buffer; UINT8 *Buffer;
UINTN BufferSize; UINTN BufferSize;
EFI_HANDLE NewImageHandle; EFI_HANDLE NewImageHandle;
UINTN Pages; UINTN Pages;
EFI_PHYSICAL_ADDRESS FfsBuffer; EFI_PHYSICAL_ADDRESS FfsBuffer;
PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;
VOID *Interface; VOID *Interface;
// //
// If it is already <4G, no need do relocate // If it is already <4G, no need do relocate
@ -64,22 +64,22 @@ RelocateImageUnder4GIfNeeded (
// Here we install a dummy handle // Here we install a dummy handle
// //
NewImageHandle = NULL; NewImageHandle = NULL;
Status = gBS->InstallProtocolInterface ( Status = gBS->InstallProtocolInterface (
&NewImageHandle, &NewImageHandle,
&gEfiCallerIdGuid, &gEfiCallerIdGuid,
EFI_NATIVE_INTERFACE, EFI_NATIVE_INTERFACE,
NULL NULL
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
// //
// Reload image itself to <4G mem // Reload image itself to <4G mem
// //
Status = GetSectionFromAnyFv ( Status = GetSectionFromAnyFv (
&gEfiCallerIdGuid, &gEfiCallerIdGuid,
EFI_SECTION_PE32, EFI_SECTION_PE32,
0, 0,
(VOID **) &Buffer, (VOID **)&Buffer,
&BufferSize &BufferSize
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
@ -91,17 +91,18 @@ RelocateImageUnder4GIfNeeded (
Status = PeCoffLoaderGetImageInfo (&ImageContext); Status = PeCoffLoaderGetImageInfo (&ImageContext);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
if (ImageContext.SectionAlignment > EFI_PAGE_SIZE) { if (ImageContext.SectionAlignment > EFI_PAGE_SIZE) {
Pages = EFI_SIZE_TO_PAGES ((UINTN) (ImageContext.ImageSize + ImageContext.SectionAlignment)); Pages = EFI_SIZE_TO_PAGES ((UINTN)(ImageContext.ImageSize + ImageContext.SectionAlignment));
} else { } else {
Pages = EFI_SIZE_TO_PAGES ((UINTN) ImageContext.ImageSize); Pages = EFI_SIZE_TO_PAGES ((UINTN)ImageContext.ImageSize);
} }
FfsBuffer = 0xFFFFFFFF; FfsBuffer = 0xFFFFFFFF;
Status = gBS->AllocatePages ( Status = gBS->AllocatePages (
AllocateMaxAddress, AllocateMaxAddress,
EfiBootServicesCode, EfiBootServicesCode,
Pages, Pages,
&FfsBuffer &FfsBuffer
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
ImageContext.ImageAddress = (PHYSICAL_ADDRESS)(UINTN)FfsBuffer; ImageContext.ImageAddress = (PHYSICAL_ADDRESS)(UINTN)FfsBuffer;
// //
@ -132,7 +133,7 @@ RelocateImageUnder4GIfNeeded (
InvalidateInstructionCacheRange ((VOID *)(UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.ImageSize); InvalidateInstructionCacheRange ((VOID *)(UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.ImageSize);
DEBUG ((DEBUG_INFO, "Loading driver at 0x%08x EntryPoint=0x%08x\n", (UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.EntryPoint)); DEBUG ((DEBUG_INFO, "Loading driver at 0x%08x EntryPoint=0x%08x\n", (UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.EntryPoint));
Status = ((EFI_IMAGE_ENTRY_POINT)(UINTN)(ImageContext.EntryPoint)) (NewImageHandle, gST); Status = ((EFI_IMAGE_ENTRY_POINT)(UINTN)(ImageContext.EntryPoint))(NewImageHandle, gST);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "Error: Image at 0x%08x start failed: %r\n", ImageContext.ImageAddress, Status)); DEBUG ((DEBUG_ERROR, "Error: Image at 0x%08x start failed: %r\n", ImageContext.ImageAddress, Status));
gBS->FreePages (FfsBuffer, Pages); gBS->FreePages (FfsBuffer, Pages);

View File

@ -8,7 +8,6 @@
**/ **/
#include <PiPei.h> #include <PiPei.h>
#include <Library/PeimEntryPoint.h> #include <Library/PeimEntryPoint.h>
@ -37,7 +36,7 @@
#include <FspEas.h> #include <FspEas.h>
#include <FspStatusCode.h> #include <FspStatusCode.h>
extern EFI_GUID gFspHobGuid; extern EFI_GUID gFspHobGuid;
/** /**
Call FspMemoryInit API. Call FspMemoryInit API.
@ -49,26 +48,26 @@ PeiFspMemoryInit (
VOID VOID
) )
{ {
FSP_INFO_HEADER *FspmHeaderPtr; FSP_INFO_HEADER *FspmHeaderPtr;
EFI_STATUS Status; EFI_STATUS Status;
UINT64 TimeStampCounterStart; UINT64 TimeStampCounterStart;
VOID *FspHobListPtr; VOID *FspHobListPtr;
VOID *HobData; VOID *HobData;
FSPM_UPD_COMMON *FspmUpdDataPtr; FSPM_UPD_COMMON *FspmUpdDataPtr;
UINTN *SourceData; UINTN *SourceData;
DEBUG ((DEBUG_INFO, "PeiFspMemoryInit enter\n")); DEBUG ((DEBUG_INFO, "PeiFspMemoryInit enter\n"));
FspHobListPtr = NULL; FspHobListPtr = NULL;
FspmUpdDataPtr = NULL; FspmUpdDataPtr = NULL;
FspmHeaderPtr = (FSP_INFO_HEADER *) FspFindFspHeader (PcdGet32 (PcdFspmBaseAddress)); FspmHeaderPtr = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspmBaseAddress));
DEBUG ((DEBUG_INFO, "FspmHeaderPtr - 0x%x\n", FspmHeaderPtr)); DEBUG ((DEBUG_INFO, "FspmHeaderPtr - 0x%x\n", FspmHeaderPtr));
if (FspmHeaderPtr == NULL) { if (FspmHeaderPtr == NULL) {
return EFI_DEVICE_ERROR; return EFI_DEVICE_ERROR;
} }
if (PcdGet32 (PcdFspmUpdDataAddress) == 0 && (FspmHeaderPtr->CfgRegionSize != 0) && (FspmHeaderPtr->CfgRegionOffset != 0)) { if ((PcdGet32 (PcdFspmUpdDataAddress) == 0) && (FspmHeaderPtr->CfgRegionSize != 0) && (FspmHeaderPtr->CfgRegionOffset != 0)) {
// //
// Copy default FSP-M UPD data from Flash // Copy default FSP-M UPD data from Flash
// //
@ -94,26 +93,26 @@ PeiFspMemoryInit (
DEBUG ((DEBUG_INFO, " HobListPtr - 0x%x\n", &FspHobListPtr)); DEBUG ((DEBUG_INFO, " HobListPtr - 0x%x\n", &FspHobListPtr));
TimeStampCounterStart = AsmReadTsc (); TimeStampCounterStart = AsmReadTsc ();
Status = CallFspMemoryInit (FspmUpdDataPtr, &FspHobListPtr); Status = CallFspMemoryInit (FspmUpdDataPtr, &FspHobListPtr);
// Create hobs after memory initialization and not in temp RAM. Hence passing the recorded timestamp here // Create hobs after memory initialization and not in temp RAM. Hence passing the recorded timestamp here
PERF_START_EX(&gFspApiPerformanceGuid, "EventRec", NULL, TimeStampCounterStart, FSP_STATUS_CODE_MEMORY_INIT | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY); PERF_START_EX (&gFspApiPerformanceGuid, "EventRec", NULL, TimeStampCounterStart, FSP_STATUS_CODE_MEMORY_INIT | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY);
PERF_END_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_MEMORY_INIT | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT); PERF_END_EX (&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_MEMORY_INIT | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT);
DEBUG ((DEBUG_INFO, "Total time spent executing FspMemoryInitApi: %d millisecond\n", DivU64x32 (GetTimeInNanoSecond (AsmReadTsc () - TimeStampCounterStart), 1000000))); DEBUG ((DEBUG_INFO, "Total time spent executing FspMemoryInitApi: %d millisecond\n", DivU64x32 (GetTimeInNanoSecond (AsmReadTsc () - TimeStampCounterStart), 1000000)));
// //
// Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status
// //
if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {
DEBUG((DEBUG_INFO, "FspMemoryInitApi requested reset 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FspMemoryInitApi requested reset 0x%x\n", Status));
CallFspWrapperResetSystem ((UINT32)Status); CallFspWrapperResetSystem ((UINT32)Status);
} }
if (EFI_ERROR(Status)) { if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "ERROR - Failed to execute FspMemoryInitApi(), Status = %r\n", Status)); DEBUG ((DEBUG_ERROR, "ERROR - Failed to execute FspMemoryInitApi(), Status = %r\n", Status));
} }
DEBUG((DEBUG_INFO, "FspMemoryInit status: 0x%x\n", Status));
ASSERT_EFI_ERROR (Status);
DEBUG ((DEBUG_INFO, "FspMemoryInit status: 0x%x\n", Status));
ASSERT_EFI_ERROR (Status);
Status = TestFspMemoryInitApiOutput (FspmUpdDataPtr, &FspHobListPtr); Status = TestFspMemoryInitApiOutput (FspmUpdDataPtr, &FspHobListPtr);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
@ -130,9 +129,9 @@ PeiFspMemoryInit (
// Save FspHobList pointer to hob, so that it can be got later // Save FspHobList pointer to hob, so that it can be got later
// //
HobData = BuildGuidHob ( HobData = BuildGuidHob (
&gFspHobGuid, &gFspHobGuid,
sizeof (VOID *) sizeof (VOID *)
); );
ASSERT (HobData != NULL); ASSERT (HobData != NULL);
CopyMem (HobData, &FspHobListPtr, sizeof (FspHobListPtr)); CopyMem (HobData, &FspHobListPtr, sizeof (FspHobListPtr));
@ -150,18 +149,18 @@ FspmWrapperInit (
VOID VOID
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_PEI_FIRMWARE_VOLUME_INFO_MEASUREMENT_EXCLUDED_PPI *MeasurementExcludedFvPpi; EFI_PEI_FIRMWARE_VOLUME_INFO_MEASUREMENT_EXCLUDED_PPI *MeasurementExcludedFvPpi;
EFI_PEI_PPI_DESCRIPTOR *MeasurementExcludedPpiList; EFI_PEI_PPI_DESCRIPTOR *MeasurementExcludedPpiList;
MeasurementExcludedFvPpi = AllocatePool (sizeof(*MeasurementExcludedFvPpi)); MeasurementExcludedFvPpi = AllocatePool (sizeof (*MeasurementExcludedFvPpi));
ASSERT(MeasurementExcludedFvPpi != NULL); ASSERT (MeasurementExcludedFvPpi != NULL);
MeasurementExcludedFvPpi->Count = 1; MeasurementExcludedFvPpi->Count = 1;
MeasurementExcludedFvPpi->Fv[0].FvBase = PcdGet32 (PcdFspmBaseAddress); MeasurementExcludedFvPpi->Fv[0].FvBase = PcdGet32 (PcdFspmBaseAddress);
MeasurementExcludedFvPpi->Fv[0].FvLength = ((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFspmBaseAddress))->FvLength; MeasurementExcludedFvPpi->Fv[0].FvLength = ((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PcdGet32 (PcdFspmBaseAddress))->FvLength;
MeasurementExcludedPpiList = AllocatePool (sizeof(*MeasurementExcludedPpiList)); MeasurementExcludedPpiList = AllocatePool (sizeof (*MeasurementExcludedPpiList));
ASSERT(MeasurementExcludedPpiList != NULL); ASSERT (MeasurementExcludedPpiList != NULL);
MeasurementExcludedPpiList->Flags = EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST; MeasurementExcludedPpiList->Flags = EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST;
MeasurementExcludedPpiList->Guid = &gEfiPeiFirmwareVolumeInfoMeasurementExcludedPpiGuid; MeasurementExcludedPpiList->Guid = &gEfiPeiFirmwareVolumeInfoMeasurementExcludedPpiGuid;
MeasurementExcludedPpiList->Ppi = MeasurementExcludedFvPpi; MeasurementExcludedPpiList->Ppi = MeasurementExcludedFvPpi;
@ -177,8 +176,8 @@ FspmWrapperInit (
PeiServicesInstallFvInfoPpi ( PeiServicesInstallFvInfoPpi (
NULL, NULL,
(VOID *)(UINTN) PcdGet32 (PcdFspmBaseAddress), (VOID *)(UINTN)PcdGet32 (PcdFspmBaseAddress),
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFspmBaseAddress))->FvLength, (UINT32)((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PcdGet32 (PcdFspmBaseAddress))->FvLength,
NULL, NULL,
NULL NULL
); );
@ -200,12 +199,12 @@ FspmWrapperInit (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TcgPpiNotify ( TcgPpiNotify (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
IN VOID *Ppi IN VOID *Ppi
); );
EFI_PEI_NOTIFY_DESCRIPTOR mTcgPpiNotifyDesc = { EFI_PEI_NOTIFY_DESCRIPTOR mTcgPpiNotifyDesc = {
(EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
&gEdkiiTcgPpiGuid, &gEdkiiTcgPpiGuid,
TcgPpiNotify TcgPpiNotify
@ -224,25 +223,33 @@ EFI_PEI_NOTIFY_DESCRIPTOR mTcgPpiNotifyDesc = {
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TcgPpiNotify ( TcgPpiNotify (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
IN VOID *Ppi IN VOID *Ppi
) )
{ {
UINT32 FspMeasureMask; UINT32 FspMeasureMask;
DEBUG ((DEBUG_INFO, "TcgPpiNotify FSPM\n")); DEBUG ((DEBUG_INFO, "TcgPpiNotify FSPM\n"));
FspMeasureMask = PcdGet32 (PcdFspMeasurementConfig); FspMeasureMask = PcdGet32 (PcdFspMeasurementConfig);
if ((FspMeasureMask & FSP_MEASURE_FSPT) != 0) { if ((FspMeasureMask & FSP_MEASURE_FSPT) != 0) {
MeasureFspFirmwareBlob (0, "FSPT", PcdGet32(PcdFsptBaseAddress), MeasureFspFirmwareBlob (
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFsptBaseAddress))->FvLength); 0,
"FSPT",
PcdGet32 (PcdFsptBaseAddress),
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PcdGet32 (PcdFsptBaseAddress))->FvLength
);
} }
if ((FspMeasureMask & FSP_MEASURE_FSPM) != 0) { if ((FspMeasureMask & FSP_MEASURE_FSPM) != 0) {
MeasureFspFirmwareBlob (0, "FSPM", PcdGet32(PcdFspmBaseAddress), MeasureFspFirmwareBlob (
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFspmBaseAddress))->FvLength); 0,
"FSPM",
PcdGet32 (PcdFspmBaseAddress),
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PcdGet32 (PcdFspmBaseAddress))->FvLength
);
} }
return EFI_SUCCESS; return EFI_SUCCESS;
@ -265,7 +272,7 @@ FspmWrapperPeimEntryPoint (
{ {
EFI_STATUS Status; EFI_STATUS Status;
DEBUG((DEBUG_INFO, "FspmWrapperPeimEntryPoint\n")); DEBUG ((DEBUG_INFO, "FspmWrapperPeimEntryPoint\n"));
Status = PeiServicesNotifyPpi (&mTcgPpiNotifyDesc); Status = PeiServicesNotifyPpi (&mTcgPpiNotifyDesc);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);

View File

@ -37,8 +37,8 @@
#include <FspEas.h> #include <FspEas.h>
#include <FspStatusCode.h> #include <FspStatusCode.h>
extern EFI_PEI_NOTIFY_DESCRIPTOR mS3EndOfPeiNotifyDesc; extern EFI_PEI_NOTIFY_DESCRIPTOR mS3EndOfPeiNotifyDesc;
extern EFI_GUID gFspHobGuid; extern EFI_GUID gFspHobGuid;
/** /**
This function handles S3 resume task at the end of PEI. This function handles S3 resume task at the end of PEI.
@ -52,13 +52,13 @@ extern EFI_GUID gFspHobGuid;
**/ **/
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
S3EndOfPeiNotify( S3EndOfPeiNotify (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
IN VOID *Ppi IN VOID *Ppi
); );
EFI_PEI_NOTIFY_DESCRIPTOR mS3EndOfPeiNotifyDesc = { EFI_PEI_NOTIFY_DESCRIPTOR mS3EndOfPeiNotifyDesc = {
(EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
&gEfiEndOfPeiSignalPpiGuid, &gEfiEndOfPeiSignalPpiGuid,
S3EndOfPeiNotify S3EndOfPeiNotify
@ -76,50 +76,50 @@ EFI_PEI_NOTIFY_DESCRIPTOR mS3EndOfPeiNotifyDesc = {
**/ **/
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
S3EndOfPeiNotify( S3EndOfPeiNotify (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
IN VOID *Ppi IN VOID *Ppi
) )
{ {
NOTIFY_PHASE_PARAMS NotifyPhaseParams; NOTIFY_PHASE_PARAMS NotifyPhaseParams;
EFI_STATUS Status; EFI_STATUS Status;
DEBUG((DEBUG_INFO, "S3EndOfPeiNotify enter\n")); DEBUG ((DEBUG_INFO, "S3EndOfPeiNotify enter\n"));
NotifyPhaseParams.Phase = EnumInitPhaseAfterPciEnumeration; NotifyPhaseParams.Phase = EnumInitPhaseAfterPciEnumeration;
Status = CallFspNotifyPhase (&NotifyPhaseParams); Status = CallFspNotifyPhase (&NotifyPhaseParams);
DEBUG((DEBUG_INFO, "FSP S3NotifyPhase AfterPciEnumeration status: 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FSP S3NotifyPhase AfterPciEnumeration status: 0x%x\n", Status));
// //
// Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status
// //
if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {
DEBUG((DEBUG_INFO, "FSP S3NotifyPhase AfterPciEnumeration requested reset 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FSP S3NotifyPhase AfterPciEnumeration requested reset 0x%x\n", Status));
CallFspWrapperResetSystem ((UINT32)Status); CallFspWrapperResetSystem ((UINT32)Status);
} }
NotifyPhaseParams.Phase = EnumInitPhaseReadyToBoot; NotifyPhaseParams.Phase = EnumInitPhaseReadyToBoot;
Status = CallFspNotifyPhase (&NotifyPhaseParams); Status = CallFspNotifyPhase (&NotifyPhaseParams);
DEBUG((DEBUG_INFO, "FSP S3NotifyPhase ReadyToBoot status: 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FSP S3NotifyPhase ReadyToBoot status: 0x%x\n", Status));
// //
// Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status
// //
if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {
DEBUG((DEBUG_INFO, "FSP S3NotifyPhase ReadyToBoot requested reset 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FSP S3NotifyPhase ReadyToBoot requested reset 0x%x\n", Status));
CallFspWrapperResetSystem ((UINT32)Status); CallFspWrapperResetSystem ((UINT32)Status);
} }
NotifyPhaseParams.Phase = EnumInitPhaseEndOfFirmware; NotifyPhaseParams.Phase = EnumInitPhaseEndOfFirmware;
Status = CallFspNotifyPhase (&NotifyPhaseParams); Status = CallFspNotifyPhase (&NotifyPhaseParams);
DEBUG((DEBUG_INFO, "FSP S3NotifyPhase EndOfFirmware status: 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FSP S3NotifyPhase EndOfFirmware status: 0x%x\n", Status));
// //
// Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status
// //
if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {
DEBUG((DEBUG_INFO, "FSP S3NotifyPhase EndOfFirmware requested reset 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FSP S3NotifyPhase EndOfFirmware requested reset 0x%x\n", Status));
CallFspWrapperResetSystem ((UINT32)Status); CallFspWrapperResetSystem ((UINT32)Status);
} }
@ -138,16 +138,16 @@ S3EndOfPeiNotify(
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
FspSiliconInitDoneGetFspHobList ( FspSiliconInitDoneGetFspHobList (
IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN FSP_SILICON_INIT_DONE_PPI *This, IN FSP_SILICON_INIT_DONE_PPI *This,
OUT VOID **FspHobList OUT VOID **FspHobList
); );
FSP_SILICON_INIT_DONE_PPI mFspSiliconInitDonePpi = { FSP_SILICON_INIT_DONE_PPI mFspSiliconInitDonePpi = {
FspSiliconInitDoneGetFspHobList FspSiliconInitDoneGetFspHobList
}; };
EFI_PEI_PPI_DESCRIPTOR mPeiFspSiliconInitDonePpi = { EFI_PEI_PPI_DESCRIPTOR mPeiFspSiliconInitDonePpi = {
EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST, EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
&gFspSiliconInitDonePpiGuid, &gFspSiliconInitDonePpiGuid,
&mFspSiliconInitDonePpi &mFspSiliconInitDonePpi
@ -165,16 +165,16 @@ EFI_PEI_PPI_DESCRIPTOR mPeiFspSiliconInitDonePpi = {
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
FspSiliconInitDoneGetFspHobList ( FspSiliconInitDoneGetFspHobList (
IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN FSP_SILICON_INIT_DONE_PPI *This, IN FSP_SILICON_INIT_DONE_PPI *This,
OUT VOID **FspHobList OUT VOID **FspHobList
) )
{ {
EFI_HOB_GUID_TYPE *GuidHob; EFI_HOB_GUID_TYPE *GuidHob;
GuidHob = GetFirstGuidHob (&gFspHobGuid); GuidHob = GetFirstGuidHob (&gFspHobGuid);
if (GuidHob != NULL) { if (GuidHob != NULL) {
*FspHobList = *(VOID **)GET_GUID_HOB_DATA(GuidHob); *FspHobList = *(VOID **)GET_GUID_HOB_DATA (GuidHob);
return EFI_SUCCESS; return EFI_SUCCESS;
} else { } else {
return EFI_NOT_FOUND; return EFI_NOT_FOUND;
@ -194,9 +194,9 @@ FspSiliconInitDoneGetFspHobList (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
FspsWrapperEndOfPeiNotify ( FspsWrapperEndOfPeiNotify (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
IN VOID *Ppi IN VOID *Ppi
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
@ -213,12 +213,12 @@ FspsWrapperEndOfPeiNotify (
// Install FspSiliconInitDonePpi so that any other driver can consume this info. // Install FspSiliconInitDonePpi so that any other driver can consume this info.
// //
Status = PeiServicesInstallPpi (&mPeiFspSiliconInitDonePpi); Status = PeiServicesInstallPpi (&mPeiFspSiliconInitDonePpi);
ASSERT_EFI_ERROR(Status); ASSERT_EFI_ERROR (Status);
return Status; return Status;
} }
EFI_PEI_NOTIFY_DESCRIPTOR mFspsWrapperEndOfPeiNotifyDesc = { EFI_PEI_NOTIFY_DESCRIPTOR mFspsWrapperEndOfPeiNotifyDesc = {
(EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
&gEfiEndOfPeiSignalPpiGuid, &gEfiEndOfPeiSignalPpiGuid,
FspsWrapperEndOfPeiNotify FspsWrapperEndOfPeiNotify
@ -237,12 +237,12 @@ EFI_PEI_NOTIFY_DESCRIPTOR mFspsWrapperEndOfPeiNotifyDesc = {
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiMemoryDiscoveredNotify ( PeiMemoryDiscoveredNotify (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
IN VOID *Ppi IN VOID *Ppi
); );
EFI_PEI_NOTIFY_DESCRIPTOR mPeiMemoryDiscoveredNotifyDesc = { EFI_PEI_NOTIFY_DESCRIPTOR mPeiMemoryDiscoveredNotifyDesc = {
(EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
&gEfiPeiMemoryDiscoveredPpiGuid, &gEfiPeiMemoryDiscoveredPpiGuid,
PeiMemoryDiscoveredNotify PeiMemoryDiscoveredNotify
@ -261,18 +261,18 @@ EFI_PEI_NOTIFY_DESCRIPTOR mPeiMemoryDiscoveredNotifyDesc = {
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiMemoryDiscoveredNotify ( PeiMemoryDiscoveredNotify (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
IN VOID *Ppi IN VOID *Ppi
) )
{ {
FSP_INFO_HEADER *FspsHeaderPtr; FSP_INFO_HEADER *FspsHeaderPtr;
UINT64 TimeStampCounterStart; UINT64 TimeStampCounterStart;
EFI_STATUS Status; EFI_STATUS Status;
VOID *FspHobListPtr; VOID *FspHobListPtr;
EFI_HOB_GUID_TYPE *GuidHob; EFI_HOB_GUID_TYPE *GuidHob;
FSPS_UPD_COMMON *FspsUpdDataPtr; FSPS_UPD_COMMON *FspsUpdDataPtr;
UINTN *SourceData; UINTN *SourceData;
DEBUG ((DEBUG_INFO, "PeiMemoryDiscoveredNotify enter\n")); DEBUG ((DEBUG_INFO, "PeiMemoryDiscoveredNotify enter\n"));
FspsUpdDataPtr = NULL; FspsUpdDataPtr = NULL;
@ -283,7 +283,7 @@ PeiMemoryDiscoveredNotify (
return EFI_DEVICE_ERROR; return EFI_DEVICE_ERROR;
} }
if (PcdGet32 (PcdFspsUpdDataAddress) == 0 && (FspsHeaderPtr->CfgRegionSize != 0) && (FspsHeaderPtr->CfgRegionOffset != 0)) { if ((PcdGet32 (PcdFspsUpdDataAddress) == 0) && (FspsHeaderPtr->CfgRegionSize != 0) && (FspsHeaderPtr->CfgRegionOffset != 0)) {
// //
// Copy default FSP-S UPD data from Flash // Copy default FSP-S UPD data from Flash
// //
@ -299,23 +299,24 @@ PeiMemoryDiscoveredNotify (
UpdateFspsUpdData ((VOID *)FspsUpdDataPtr); UpdateFspsUpdData ((VOID *)FspsUpdDataPtr);
TimeStampCounterStart = AsmReadTsc (); TimeStampCounterStart = AsmReadTsc ();
PERF_START_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_SILICON_INIT | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY); PERF_START_EX (&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_SILICON_INIT | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_ENTRY);
Status = CallFspSiliconInit ((VOID *)FspsUpdDataPtr); Status = CallFspSiliconInit ((VOID *)FspsUpdDataPtr);
PERF_END_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_SILICON_INIT | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT); PERF_END_EX (&gFspApiPerformanceGuid, "EventRec", NULL, 0, FSP_STATUS_CODE_SILICON_INIT | FSP_STATUS_CODE_COMMON_CODE | FSP_STATUS_CODE_API_EXIT);
DEBUG ((DEBUG_INFO, "Total time spent executing FspSiliconInitApi: %d millisecond\n", DivU64x32 (GetTimeInNanoSecond (AsmReadTsc () - TimeStampCounterStart), 1000000))); DEBUG ((DEBUG_INFO, "Total time spent executing FspSiliconInitApi: %d millisecond\n", DivU64x32 (GetTimeInNanoSecond (AsmReadTsc () - TimeStampCounterStart), 1000000)));
// //
// Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status
// //
if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {
DEBUG((DEBUG_INFO, "FspSiliconInitApi requested reset 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "FspSiliconInitApi requested reset 0x%x\n", Status));
CallFspWrapperResetSystem ((UINT32)Status); CallFspWrapperResetSystem ((UINT32)Status);
} }
if (EFI_ERROR(Status)) { if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "ERROR - Failed to execute FspSiliconInitApi(), Status = %r\n", Status)); DEBUG ((DEBUG_ERROR, "ERROR - Failed to execute FspSiliconInitApi(), Status = %r\n", Status));
} }
DEBUG((DEBUG_INFO, "FspSiliconInit status: 0x%x\n", Status));
DEBUG ((DEBUG_INFO, "FspSiliconInit status: 0x%x\n", Status));
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
Status = TestFspSiliconInitApiOutput ((VOID *)NULL); Status = TestFspSiliconInitApiOutput ((VOID *)NULL);
@ -336,7 +337,7 @@ PeiMemoryDiscoveredNotify (
// Install FspSiliconInitDonePpi so that any other driver can consume this info. // Install FspSiliconInitDonePpi so that any other driver can consume this info.
// //
Status = PeiServicesInstallPpi (&mPeiFspSiliconInitDonePpi); Status = PeiServicesInstallPpi (&mPeiFspSiliconInitDonePpi);
ASSERT_EFI_ERROR(Status); ASSERT_EFI_ERROR (Status);
return Status; return Status;
} }
@ -351,8 +352,8 @@ FspsWrapperInitApiMode (
VOID VOID
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_BOOT_MODE BootMode; EFI_BOOT_MODE BootMode;
// //
// Register MemoryDiscovered Notify to run FspSiliconInit // Register MemoryDiscovered Notify to run FspSiliconInit
@ -382,18 +383,18 @@ FspsWrapperInitDispatchMode (
VOID VOID
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_PEI_FIRMWARE_VOLUME_INFO_MEASUREMENT_EXCLUDED_PPI *MeasurementExcludedFvPpi; EFI_PEI_FIRMWARE_VOLUME_INFO_MEASUREMENT_EXCLUDED_PPI *MeasurementExcludedFvPpi;
EFI_PEI_PPI_DESCRIPTOR *MeasurementExcludedPpiList; EFI_PEI_PPI_DESCRIPTOR *MeasurementExcludedPpiList;
MeasurementExcludedFvPpi = AllocatePool (sizeof(*MeasurementExcludedFvPpi)); MeasurementExcludedFvPpi = AllocatePool (sizeof (*MeasurementExcludedFvPpi));
ASSERT(MeasurementExcludedFvPpi != NULL); ASSERT (MeasurementExcludedFvPpi != NULL);
MeasurementExcludedFvPpi->Count = 1; MeasurementExcludedFvPpi->Count = 1;
MeasurementExcludedFvPpi->Fv[0].FvBase = PcdGet32 (PcdFspsBaseAddress); MeasurementExcludedFvPpi->Fv[0].FvBase = PcdGet32 (PcdFspsBaseAddress);
MeasurementExcludedFvPpi->Fv[0].FvLength = ((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFspsBaseAddress))->FvLength; MeasurementExcludedFvPpi->Fv[0].FvLength = ((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PcdGet32 (PcdFspsBaseAddress))->FvLength;
MeasurementExcludedPpiList = AllocatePool (sizeof(*MeasurementExcludedPpiList)); MeasurementExcludedPpiList = AllocatePool (sizeof (*MeasurementExcludedPpiList));
ASSERT(MeasurementExcludedPpiList != NULL); ASSERT (MeasurementExcludedPpiList != NULL);
MeasurementExcludedPpiList->Flags = EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST; MeasurementExcludedPpiList->Flags = EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST;
MeasurementExcludedPpiList->Guid = &gEfiPeiFirmwareVolumeInfoMeasurementExcludedPpiGuid; MeasurementExcludedPpiList->Guid = &gEfiPeiFirmwareVolumeInfoMeasurementExcludedPpiGuid;
MeasurementExcludedPpiList->Ppi = MeasurementExcludedFvPpi; MeasurementExcludedPpiList->Ppi = MeasurementExcludedFvPpi;
@ -406,8 +407,8 @@ FspsWrapperInitDispatchMode (
// //
PeiServicesInstallFvInfoPpi ( PeiServicesInstallFvInfoPpi (
NULL, NULL,
(VOID *)(UINTN) PcdGet32 (PcdFspsBaseAddress), (VOID *)(UINTN)PcdGet32 (PcdFspsBaseAddress),
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFspsBaseAddress))->FvLength, (UINT32)((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PcdGet32 (PcdFspsBaseAddress))->FvLength,
NULL, NULL,
NULL NULL
); );
@ -432,12 +433,12 @@ FspsWrapperInitDispatchMode (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TcgPpiNotify ( TcgPpiNotify (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
IN VOID *Ppi IN VOID *Ppi
); );
EFI_PEI_NOTIFY_DESCRIPTOR mTcgPpiNotifyDesc = { EFI_PEI_NOTIFY_DESCRIPTOR mTcgPpiNotifyDesc = {
(EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
&gEdkiiTcgPpiGuid, &gEdkiiTcgPpiGuid,
TcgPpiNotify TcgPpiNotify
@ -456,20 +457,24 @@ EFI_PEI_NOTIFY_DESCRIPTOR mTcgPpiNotifyDesc = {
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TcgPpiNotify ( TcgPpiNotify (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
IN VOID *Ppi IN VOID *Ppi
) )
{ {
UINT32 FspMeasureMask; UINT32 FspMeasureMask;
DEBUG ((DEBUG_INFO, "TcgPpiNotify FSPS\n")); DEBUG ((DEBUG_INFO, "TcgPpiNotify FSPS\n"));
FspMeasureMask = PcdGet32 (PcdFspMeasurementConfig); FspMeasureMask = PcdGet32 (PcdFspMeasurementConfig);
if ((FspMeasureMask & FSP_MEASURE_FSPS) != 0) { if ((FspMeasureMask & FSP_MEASURE_FSPS) != 0) {
MeasureFspFirmwareBlob (0, "FSPS", PcdGet32(PcdFspsBaseAddress), MeasureFspFirmwareBlob (
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFspsBaseAddress))->FvLength); 0,
"FSPS",
PcdGet32 (PcdFspsBaseAddress),
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PcdGet32 (PcdFspsBaseAddress))->FvLength
);
} }
return EFI_SUCCESS; return EFI_SUCCESS;

View File

@ -9,11 +9,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#ifndef _FSP_MEASUREMENT_LIB_H_ #ifndef _FSP_MEASUREMENT_LIB_H_
#define _FSP_MEASUREMENT_LIB_H_ #define _FSP_MEASUREMENT_LIB_H_
#define FSP_MEASURE_FSP BIT0 #define FSP_MEASURE_FSP BIT0
#define FSP_MEASURE_FSPT BIT1 #define FSP_MEASURE_FSPT BIT1
#define FSP_MEASURE_FSPM BIT2 #define FSP_MEASURE_FSPM BIT2
#define FSP_MEASURE_FSPS BIT3 #define FSP_MEASURE_FSPS BIT3
#define FSP_MEASURE_FSPUPD BIT31 #define FSP_MEASURE_FSPUPD BIT31
/** /**
Measure a FSP FirmwareBlob. Measure a FSP FirmwareBlob.
@ -31,9 +31,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
MeasureFspFirmwareBlob ( MeasureFspFirmwareBlob (
IN UINT32 PcrIndex, IN UINT32 PcrIndex,
IN CHAR8 *Description OPTIONAL, IN CHAR8 *Description OPTIONAL,
IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase, IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase,
IN UINT64 FirmwareBlobLength IN UINT64 FirmwareBlobLength
); );
#endif #endif

View File

@ -34,7 +34,7 @@ FspFindFspHeader (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
CallFspNotifyPhase ( CallFspNotifyPhase (
IN NOTIFY_PHASE_PARAMS *NotifyPhaseParams IN NOTIFY_PHASE_PARAMS *NotifyPhaseParams
); );
/** /**
@ -48,8 +48,8 @@ CallFspNotifyPhase (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
CallFspMemoryInit ( CallFspMemoryInit (
IN VOID *FspmUpdDataPtr, IN VOID *FspmUpdDataPtr,
OUT VOID **HobListPtr OUT VOID **HobListPtr
); );
/** /**
@ -62,7 +62,7 @@ CallFspMemoryInit (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
CallTempRamExit ( CallTempRamExit (
IN VOID *TempRamExitParam IN VOID *TempRamExitParam
); );
/** /**
@ -75,7 +75,7 @@ CallTempRamExit (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
CallFspSiliconInit ( CallFspSiliconInit (
IN VOID *FspsUpdDataPtr IN VOID *FspsUpdDataPtr
); );
#endif #endif

View File

@ -22,8 +22,8 @@
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TestFspMemoryInitApiOutput ( TestFspMemoryInitApiOutput (
IN VOID *FspmUpdDataPtr, IN VOID *FspmUpdDataPtr,
IN VOID **HobListPtr IN VOID **HobListPtr
); );
/** /**
@ -36,7 +36,7 @@ TestFspMemoryInitApiOutput (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TestFspTempRamExitApiOutput ( TestFspTempRamExitApiOutput (
IN VOID *TempRamExitParam IN VOID *TempRamExitParam
); );
/** /**
@ -49,7 +49,7 @@ TestFspTempRamExitApiOutput (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TestFspSiliconInitApiOutput ( TestFspSiliconInitApiOutput (
IN VOID *FspsUpdDataPtr IN VOID *FspsUpdDataPtr
); );
#endif #endif

View File

@ -19,7 +19,7 @@
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PostFspmHobProcess ( PostFspmHobProcess (
IN VOID *FspHobList IN VOID *FspHobList
); );
/** /**
@ -32,7 +32,7 @@ PostFspmHobProcess (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PostFspsHobProcess ( PostFspsHobProcess (
IN VOID *FspHobList IN VOID *FspHobList
); );
#endif #endif

View File

@ -18,7 +18,7 @@
VOID VOID
EFIAPI EFIAPI
UpdateFspmUpdData ( UpdateFspmUpdData (
IN OUT VOID *FspUpdRgnPtr IN OUT VOID *FspUpdRgnPtr
); );
/** /**
@ -30,7 +30,7 @@ UpdateFspmUpdData (
VOID VOID
EFIAPI EFIAPI
UpdateFspsUpdData ( UpdateFspsUpdData (
IN OUT VOID *FspUpdRgnPtr IN OUT VOID *FspUpdRgnPtr
); );
/** /**
@ -60,8 +60,8 @@ UpdateTempRamExitParam (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
GetS3MemoryInfo ( GetS3MemoryInfo (
OUT UINT64 *S3PeiMemSize, OUT UINT64 *S3PeiMemSize,
OUT EFI_PHYSICAL_ADDRESS *S3PeiMemBase OUT EFI_PHYSICAL_ADDRESS *S3PeiMemBase
); );
/** /**
@ -74,7 +74,7 @@ GetS3MemoryInfo (
VOID VOID
EFIAPI EFIAPI
CallFspWrapperResetSystem ( CallFspWrapperResetSystem (
IN UINT32 FspStatusResetType IN UINT32 FspStatusResetType
); );
#endif #endif

View File

@ -9,7 +9,7 @@
#ifndef _FSP_SILICON_INIT_DONE_H_ #ifndef _FSP_SILICON_INIT_DONE_H_
#define _FSP_SILICON_INIT_DONE_H_ #define _FSP_SILICON_INIT_DONE_H_
typedef struct _FSP_SILICON_INIT_DONE_PPI FSP_SILICON_INIT_DONE_PPI; typedef struct _FSP_SILICON_INIT_DONE_PPI FSP_SILICON_INIT_DONE_PPI;
/** /**
Return Hob list produced by FSP. Return Hob list produced by FSP.
@ -29,9 +29,9 @@ EFI_STATUS
); );
struct _FSP_SILICON_INIT_DONE_PPI { struct _FSP_SILICON_INIT_DONE_PPI {
FSP_SILICON_INIT_DONE_GET_FSP_HOB_LIST GetFspHobList; FSP_SILICON_INIT_DONE_GET_FSP_HOB_LIST GetFspHobList;
}; };
extern EFI_GUID gFspSiliconInitDonePpiGuid; extern EFI_GUID gFspSiliconInitDonePpiGuid;
#endif #endif

View File

@ -9,6 +9,6 @@
#ifndef _TOP_OF_TEMPORARY_RAM_H_ #ifndef _TOP_OF_TEMPORARY_RAM_H_
#define _TOP_OF_TEMPORARY_RAM_H_ #define _TOP_OF_TEMPORARY_RAM_H_
extern EFI_GUID gTopOfTemporaryRamPpiGuid; extern EFI_GUID gTopOfTemporaryRamPpiGuid;
#endif #endif

View File

@ -43,26 +43,26 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TpmMeasureAndLogDataWithFlags ( TpmMeasureAndLogDataWithFlags (
IN UINT32 PcrIndex, IN UINT32 PcrIndex,
IN UINT32 EventType, IN UINT32 EventType,
IN VOID *EventLog, IN VOID *EventLog,
IN UINT32 LogLen, IN UINT32 LogLen,
IN VOID *HashData, IN VOID *HashData,
IN UINT64 HashDataLen, IN UINT64 HashDataLen,
IN UINT64 Flags IN UINT64 Flags
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EDKII_TCG_PPI *TcgPpi; EDKII_TCG_PPI *TcgPpi;
TCG_PCR_EVENT_HDR TcgEventHdr; TCG_PCR_EVENT_HDR TcgEventHdr;
Status = PeiServicesLocatePpi( Status = PeiServicesLocatePpi (
&gEdkiiTcgPpiGuid, &gEdkiiTcgPpiGuid,
0, 0,
NULL, NULL,
(VOID**)&TcgPpi (VOID **)&TcgPpi
); );
if (EFI_ERROR(Status)) { if (EFI_ERROR (Status)) {
return Status; return Status;
} }
@ -99,60 +99,61 @@ STATIC
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
MeasureFspFirmwareBlobWithCfg ( MeasureFspFirmwareBlobWithCfg (
IN CHAR8 *Description OPTIONAL, IN CHAR8 *Description OPTIONAL,
IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase, IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase,
IN UINT64 FirmwareBlobLength, IN UINT64 FirmwareBlobLength,
IN UINT32 CfgRegionOffset, IN UINT32 CfgRegionOffset,
IN UINT32 CfgRegionSize IN UINT32 CfgRegionSize
) )
{ {
EFI_PLATFORM_FIRMWARE_BLOB FvBlob, UpdBlob; EFI_PLATFORM_FIRMWARE_BLOB FvBlob, UpdBlob;
PLATFORM_FIRMWARE_BLOB2_STRUCT FvBlob2, UpdBlob2; PLATFORM_FIRMWARE_BLOB2_STRUCT FvBlob2, UpdBlob2;
VOID *FvName; VOID *FvName;
UINT32 FvEventType; UINT32 FvEventType;
VOID *FvEventLog, *UpdEventLog; VOID *FvEventLog, *UpdEventLog;
UINT32 FvEventLogSize, UpdEventLogSize; UINT32 FvEventLogSize, UpdEventLogSize;
EFI_STATUS Status; EFI_STATUS Status;
HASH_HANDLE HashHandle; HASH_HANDLE HashHandle;
UINT8 *HashBase; UINT8 *HashBase;
UINTN HashSize; UINTN HashSize;
TPML_DIGEST_VALUES DigestList; TPML_DIGEST_VALUES DigestList;
FvName = TpmMeasurementGetFvName (FirmwareBlobBase, FirmwareBlobLength); FvName = TpmMeasurementGetFvName (FirmwareBlobBase, FirmwareBlobLength);
if (((Description != NULL) || (FvName != NULL)) && if (((Description != NULL) || (FvName != NULL)) &&
(PcdGet32(PcdTcgPfpMeasurementRevision) >= TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105)) { (PcdGet32 (PcdTcgPfpMeasurementRevision) >= TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105))
{
if (Description != NULL) { if (Description != NULL) {
AsciiSPrint((CHAR8*)FvBlob2.BlobDescription, sizeof(FvBlob2.BlobDescription), "%a", Description); AsciiSPrint ((CHAR8 *)FvBlob2.BlobDescription, sizeof (FvBlob2.BlobDescription), "%a", Description);
AsciiSPrint((CHAR8*)UpdBlob2.BlobDescription, sizeof(UpdBlob2.BlobDescription), "%aUDP", Description); AsciiSPrint ((CHAR8 *)UpdBlob2.BlobDescription, sizeof (UpdBlob2.BlobDescription), "%aUDP", Description);
} else { } else {
AsciiSPrint((CHAR8*)FvBlob2.BlobDescription, sizeof(FvBlob2.BlobDescription), "Fv(%g)", FvName); AsciiSPrint ((CHAR8 *)FvBlob2.BlobDescription, sizeof (FvBlob2.BlobDescription), "Fv(%g)", FvName);
AsciiSPrint((CHAR8*)UpdBlob2.BlobDescription, sizeof(UpdBlob2.BlobDescription), "(%g)UDP", FvName); AsciiSPrint ((CHAR8 *)UpdBlob2.BlobDescription, sizeof (UpdBlob2.BlobDescription), "(%g)UDP", FvName);
} }
FvBlob2.BlobDescriptionSize = sizeof(FvBlob2.BlobDescription); FvBlob2.BlobDescriptionSize = sizeof (FvBlob2.BlobDescription);
FvBlob2.BlobBase = FirmwareBlobBase; FvBlob2.BlobBase = FirmwareBlobBase;
FvBlob2.BlobLength = FirmwareBlobLength; FvBlob2.BlobLength = FirmwareBlobLength;
FvEventType = EV_EFI_PLATFORM_FIRMWARE_BLOB2; FvEventType = EV_EFI_PLATFORM_FIRMWARE_BLOB2;
FvEventLog = &FvBlob2; FvEventLog = &FvBlob2;
FvEventLogSize = sizeof(FvBlob2); FvEventLogSize = sizeof (FvBlob2);
UpdBlob2.BlobDescriptionSize = sizeof(UpdBlob2.BlobDescription); UpdBlob2.BlobDescriptionSize = sizeof (UpdBlob2.BlobDescription);
UpdBlob2.BlobBase = CfgRegionOffset; UpdBlob2.BlobBase = CfgRegionOffset;
UpdBlob2.BlobLength = CfgRegionSize; UpdBlob2.BlobLength = CfgRegionSize;
UpdEventLog = &UpdBlob2; UpdEventLog = &UpdBlob2;
UpdEventLogSize = sizeof(UpdBlob2); UpdEventLogSize = sizeof (UpdBlob2);
} else { } else {
FvBlob.BlobBase = FirmwareBlobBase; FvBlob.BlobBase = FirmwareBlobBase;
FvBlob.BlobLength = FirmwareBlobLength; FvBlob.BlobLength = FirmwareBlobLength;
FvEventType = EV_EFI_PLATFORM_FIRMWARE_BLOB; FvEventType = EV_EFI_PLATFORM_FIRMWARE_BLOB;
FvEventLog = &FvBlob; FvEventLog = &FvBlob;
FvEventLogSize = sizeof(FvBlob); FvEventLogSize = sizeof (FvBlob);
UpdBlob.BlobBase = CfgRegionOffset; UpdBlob.BlobBase = CfgRegionOffset;
UpdBlob.BlobLength = CfgRegionSize; UpdBlob.BlobLength = CfgRegionSize;
UpdEventLog = &UpdBlob; UpdEventLog = &UpdBlob;
UpdEventLogSize = sizeof(UpdBlob); UpdEventLogSize = sizeof (UpdBlob);
} }
/** Initialize a SHA hash context. **/ /** Initialize a SHA hash context. **/
@ -163,18 +164,18 @@ MeasureFspFirmwareBlobWithCfg (
} }
/** Hash FSP binary before UDP **/ /** Hash FSP binary before UDP **/
HashBase = (UINT8 *) (UINTN) FirmwareBlobBase; HashBase = (UINT8 *)(UINTN)FirmwareBlobBase;
HashSize = (UINTN) CfgRegionOffset; HashSize = (UINTN)CfgRegionOffset;
Status = HashUpdate (HashHandle, HashBase, HashSize); Status = HashUpdate (HashHandle, HashBase, HashSize);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "HashUpdate failed - %r\n", Status)); DEBUG ((DEBUG_ERROR, "HashUpdate failed - %r\n", Status));
return Status; return Status;
} }
/** Hash FSP binary after UDP **/ /** Hash FSP binary after UDP **/
HashBase = (UINT8 *) (UINTN) FirmwareBlobBase + CfgRegionOffset + CfgRegionSize; HashBase = (UINT8 *)(UINTN)FirmwareBlobBase + CfgRegionOffset + CfgRegionSize;
HashSize = (UINTN)(FirmwareBlobLength - CfgRegionOffset - CfgRegionSize); HashSize = (UINTN)(FirmwareBlobLength - CfgRegionOffset - CfgRegionSize);
Status = HashUpdate (HashHandle, HashBase, HashSize); Status = HashUpdate (HashHandle, HashBase, HashSize);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "HashUpdate failed - %r\n", Status)); DEBUG ((DEBUG_ERROR, "HashUpdate failed - %r\n", Status));
return Status; return Status;
@ -192,8 +193,8 @@ MeasureFspFirmwareBlobWithCfg (
FvEventType, FvEventType,
FvEventLog, FvEventLog,
FvEventLogSize, FvEventLogSize,
(UINT8 *) &DigestList, (UINT8 *)&DigestList,
(UINTN) sizeof(DigestList), (UINTN)sizeof (DigestList),
EDKII_TCG_PRE_HASH_LOG_ONLY EDKII_TCG_PRE_HASH_LOG_ONLY
); );
@ -202,7 +203,7 @@ MeasureFspFirmwareBlobWithCfg (
EV_PLATFORM_CONFIG_FLAGS, EV_PLATFORM_CONFIG_FLAGS,
UpdEventLog, UpdEventLog,
UpdEventLogSize, UpdEventLogSize,
(UINT8 *) (UINTN) FirmwareBlobBase + CfgRegionOffset, (UINT8 *)(UINTN)FirmwareBlobBase + CfgRegionOffset,
CfgRegionSize CfgRegionSize
); );
@ -225,10 +226,10 @@ MeasureFspFirmwareBlobWithCfg (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
MeasureFspFirmwareBlob ( MeasureFspFirmwareBlob (
IN UINT32 PcrIndex, IN UINT32 PcrIndex,
IN CHAR8 *Description OPTIONAL, IN CHAR8 *Description OPTIONAL,
IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase, IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase,
IN UINT64 FirmwareBlobLength IN UINT64 FirmwareBlobLength
) )
{ {
UINT32 FspMeasureMask; UINT32 FspMeasureMask;
@ -236,13 +237,17 @@ MeasureFspFirmwareBlob (
FspMeasureMask = PcdGet32 (PcdFspMeasurementConfig); FspMeasureMask = PcdGet32 (PcdFspMeasurementConfig);
if ((FspMeasureMask & FSP_MEASURE_FSPUPD) != 0) { if ((FspMeasureMask & FSP_MEASURE_FSPUPD) != 0) {
FspHeaderPtr = (FSP_INFO_HEADER *) FspFindFspHeader (FirmwareBlobBase); FspHeaderPtr = (FSP_INFO_HEADER *)FspFindFspHeader (FirmwareBlobBase);
if (FspHeaderPtr != NULL) { if (FspHeaderPtr != NULL) {
return MeasureFspFirmwareBlobWithCfg(Description, FirmwareBlobBase, FirmwareBlobLength, return MeasureFspFirmwareBlobWithCfg (
FspHeaderPtr->CfgRegionOffset, FspHeaderPtr->CfgRegionSize); Description,
FirmwareBlobBase,
FirmwareBlobLength,
FspHeaderPtr->CfgRegionOffset,
FspHeaderPtr->CfgRegionSize
);
} }
} }
return MeasureFirmwareBlob (PcrIndex, Description, FirmwareBlobBase, FirmwareBlobLength); return MeasureFirmwareBlob (PcrIndex, Description, FirmwareBlobBase, FirmwareBlobLength);
} }

View File

@ -24,9 +24,9 @@
**/ **/
EFI_STATUS EFI_STATUS
Execute32BitCode ( Execute32BitCode (
IN UINT64 Function, IN UINT64 Function,
IN UINT64 Param1, IN UINT64 Param1,
IN UINT64 Param2 IN UINT64 Param2
); );
/** /**
@ -42,9 +42,9 @@ FspFindFspHeader (
IN EFI_PHYSICAL_ADDRESS FlashFvFspBase IN EFI_PHYSICAL_ADDRESS FlashFvFspBase
) )
{ {
UINT8 *CheckPointer; UINT8 *CheckPointer;
CheckPointer = (UINT8 *) (UINTN) FlashFvFspBase; CheckPointer = (UINT8 *)(UINTN)FlashFvFspBase;
if (((EFI_FIRMWARE_VOLUME_HEADER *)CheckPointer)->Signature != EFI_FVH_SIGNATURE) { if (((EFI_FIRMWARE_VOLUME_HEADER *)CheckPointer)->Signature != EFI_FVH_SIGNATURE) {
return NULL; return NULL;
@ -53,12 +53,11 @@ FspFindFspHeader (
if (((EFI_FIRMWARE_VOLUME_HEADER *)CheckPointer)->ExtHeaderOffset != 0) { if (((EFI_FIRMWARE_VOLUME_HEADER *)CheckPointer)->ExtHeaderOffset != 0) {
CheckPointer = CheckPointer + ((EFI_FIRMWARE_VOLUME_HEADER *)CheckPointer)->ExtHeaderOffset; CheckPointer = CheckPointer + ((EFI_FIRMWARE_VOLUME_HEADER *)CheckPointer)->ExtHeaderOffset;
CheckPointer = CheckPointer + ((EFI_FIRMWARE_VOLUME_EXT_HEADER *)CheckPointer)->ExtHeaderSize; CheckPointer = CheckPointer + ((EFI_FIRMWARE_VOLUME_EXT_HEADER *)CheckPointer)->ExtHeaderSize;
CheckPointer = (UINT8 *) ALIGN_POINTER (CheckPointer, 8); CheckPointer = (UINT8 *)ALIGN_POINTER (CheckPointer, 8);
} else { } else {
CheckPointer = CheckPointer + ((EFI_FIRMWARE_VOLUME_HEADER *)CheckPointer)->HeaderLength; CheckPointer = CheckPointer + ((EFI_FIRMWARE_VOLUME_HEADER *)CheckPointer)->HeaderLength;
} }
CheckPointer = CheckPointer + sizeof (EFI_FFS_FILE_HEADER); CheckPointer = CheckPointer + sizeof (EFI_FFS_FILE_HEADER);
if (((EFI_RAW_SECTION *)CheckPointer)->Type != EFI_SECTION_RAW) { if (((EFI_RAW_SECTION *)CheckPointer)->Type != EFI_SECTION_RAW) {
@ -80,13 +79,13 @@ FspFindFspHeader (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
CallFspNotifyPhase ( CallFspNotifyPhase (
IN NOTIFY_PHASE_PARAMS *NotifyPhaseParams IN NOTIFY_PHASE_PARAMS *NotifyPhaseParams
) )
{ {
FSP_INFO_HEADER *FspHeader; FSP_INFO_HEADER *FspHeader;
FSP_NOTIFY_PHASE NotifyPhaseApi; FSP_NOTIFY_PHASE NotifyPhaseApi;
EFI_STATUS Status; EFI_STATUS Status;
BOOLEAN InterruptState; BOOLEAN InterruptState;
FspHeader = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspsBaseAddress)); FspHeader = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspsBaseAddress));
if (FspHeader == NULL) { if (FspHeader == NULL) {
@ -95,7 +94,7 @@ CallFspNotifyPhase (
NotifyPhaseApi = (FSP_NOTIFY_PHASE)((UINTN)FspHeader->ImageBase + FspHeader->NotifyPhaseEntryOffset); NotifyPhaseApi = (FSP_NOTIFY_PHASE)((UINTN)FspHeader->ImageBase + FspHeader->NotifyPhaseEntryOffset);
InterruptState = SaveAndDisableInterrupts (); InterruptState = SaveAndDisableInterrupts ();
Status = Execute32BitCode ((UINTN)NotifyPhaseApi, (UINTN)NotifyPhaseParams, (UINTN)NULL); Status = Execute32BitCode ((UINTN)NotifyPhaseApi, (UINTN)NotifyPhaseParams, (UINTN)NULL);
SetInterruptState (InterruptState); SetInterruptState (InterruptState);
return Status; return Status;
@ -112,14 +111,14 @@ CallFspNotifyPhase (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
CallFspMemoryInit ( CallFspMemoryInit (
IN VOID *FspmUpdDataPtr, IN VOID *FspmUpdDataPtr,
OUT VOID **HobListPtr OUT VOID **HobListPtr
) )
{ {
FSP_INFO_HEADER *FspHeader; FSP_INFO_HEADER *FspHeader;
FSP_MEMORY_INIT FspMemoryInitApi; FSP_MEMORY_INIT FspMemoryInitApi;
EFI_STATUS Status; EFI_STATUS Status;
BOOLEAN InterruptState; BOOLEAN InterruptState;
FspHeader = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspmBaseAddress)); FspHeader = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspmBaseAddress));
if (FspHeader == NULL) { if (FspHeader == NULL) {
@ -127,8 +126,8 @@ CallFspMemoryInit (
} }
FspMemoryInitApi = (FSP_MEMORY_INIT)((UINTN)FspHeader->ImageBase + FspHeader->FspMemoryInitEntryOffset); FspMemoryInitApi = (FSP_MEMORY_INIT)((UINTN)FspHeader->ImageBase + FspHeader->FspMemoryInitEntryOffset);
InterruptState = SaveAndDisableInterrupts (); InterruptState = SaveAndDisableInterrupts ();
Status = Execute32BitCode ((UINTN)FspMemoryInitApi, (UINTN)FspmUpdDataPtr, (UINTN)HobListPtr); Status = Execute32BitCode ((UINTN)FspMemoryInitApi, (UINTN)FspmUpdDataPtr, (UINTN)HobListPtr);
SetInterruptState (InterruptState); SetInterruptState (InterruptState);
return Status; return Status;
@ -144,13 +143,13 @@ CallFspMemoryInit (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
CallTempRamExit ( CallTempRamExit (
IN VOID *TempRamExitParam IN VOID *TempRamExitParam
) )
{ {
FSP_INFO_HEADER *FspHeader; FSP_INFO_HEADER *FspHeader;
FSP_TEMP_RAM_EXIT TempRamExitApi; FSP_TEMP_RAM_EXIT TempRamExitApi;
EFI_STATUS Status; EFI_STATUS Status;
BOOLEAN InterruptState; BOOLEAN InterruptState;
FspHeader = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspmBaseAddress)); FspHeader = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspmBaseAddress));
if (FspHeader == NULL) { if (FspHeader == NULL) {
@ -159,7 +158,7 @@ CallTempRamExit (
TempRamExitApi = (FSP_TEMP_RAM_EXIT)((UINTN)FspHeader->ImageBase + FspHeader->TempRamExitEntryOffset); TempRamExitApi = (FSP_TEMP_RAM_EXIT)((UINTN)FspHeader->ImageBase + FspHeader->TempRamExitEntryOffset);
InterruptState = SaveAndDisableInterrupts (); InterruptState = SaveAndDisableInterrupts ();
Status = Execute32BitCode ((UINTN)TempRamExitApi, (UINTN)TempRamExitParam, (UINTN)NULL); Status = Execute32BitCode ((UINTN)TempRamExitApi, (UINTN)TempRamExitParam, (UINTN)NULL);
SetInterruptState (InterruptState); SetInterruptState (InterruptState);
return Status; return Status;
@ -175,13 +174,13 @@ CallTempRamExit (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
CallFspSiliconInit ( CallFspSiliconInit (
IN VOID *FspsUpdDataPtr IN VOID *FspsUpdDataPtr
) )
{ {
FSP_INFO_HEADER *FspHeader; FSP_INFO_HEADER *FspHeader;
FSP_SILICON_INIT FspSiliconInitApi; FSP_SILICON_INIT FspSiliconInitApi;
EFI_STATUS Status; EFI_STATUS Status;
BOOLEAN InterruptState; BOOLEAN InterruptState;
FspHeader = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspsBaseAddress)); FspHeader = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspsBaseAddress));
if (FspHeader == NULL) { if (FspHeader == NULL) {
@ -189,8 +188,8 @@ CallFspSiliconInit (
} }
FspSiliconInitApi = (FSP_SILICON_INIT)((UINTN)FspHeader->ImageBase + FspHeader->FspSiliconInitEntryOffset); FspSiliconInitApi = (FSP_SILICON_INIT)((UINTN)FspHeader->ImageBase + FspHeader->FspSiliconInitEntryOffset);
InterruptState = SaveAndDisableInterrupts (); InterruptState = SaveAndDisableInterrupts ();
Status = Execute32BitCode ((UINTN)FspSiliconInitApi, (UINTN)FspsUpdDataPtr, (UINTN)NULL); Status = Execute32BitCode ((UINTN)FspSiliconInitApi, (UINTN)FspsUpdDataPtr, (UINTN)NULL);
SetInterruptState (InterruptState); SetInterruptState (InterruptState);
return Status; return Status;

View File

@ -19,7 +19,7 @@
**/ **/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *FSP_FUNCTION) ( (EFIAPI *FSP_FUNCTION)(
IN VOID *Param1, IN VOID *Param1,
IN VOID *Param2 IN VOID *Param2
); );
@ -36,17 +36,16 @@ EFI_STATUS
**/ **/
EFI_STATUS EFI_STATUS
Execute32BitCode ( Execute32BitCode (
IN UINT64 Function, IN UINT64 Function,
IN UINT64 Param1, IN UINT64 Param1,
IN UINT64 Param2 IN UINT64 Param2
) )
{ {
FSP_FUNCTION EntryFunc; FSP_FUNCTION EntryFunc;
EFI_STATUS Status; EFI_STATUS Status;
EntryFunc = (FSP_FUNCTION) (UINTN) (Function); EntryFunc = (FSP_FUNCTION)(UINTN)(Function);
Status = EntryFunc ((VOID *)(UINTN)Param1, (VOID *)(UINTN)Param2); Status = EntryFunc ((VOID *)(UINTN)Param1, (VOID *)(UINTN)Param2);
return Status; return Status;
} }

View File

@ -15,39 +15,49 @@
#pragma pack(1) #pragma pack(1)
typedef union { typedef union {
struct { struct {
UINT32 LimitLow : 16; UINT32 LimitLow : 16;
UINT32 BaseLow : 16; UINT32 BaseLow : 16;
UINT32 BaseMid : 8; UINT32 BaseMid : 8;
UINT32 Type : 4; UINT32 Type : 4;
UINT32 System : 1; UINT32 System : 1;
UINT32 Dpl : 2; UINT32 Dpl : 2;
UINT32 Present : 1; UINT32 Present : 1;
UINT32 LimitHigh : 4; UINT32 LimitHigh : 4;
UINT32 Software : 1; UINT32 Software : 1;
UINT32 Reserved : 1; UINT32 Reserved : 1;
UINT32 DefaultSize : 1; UINT32 DefaultSize : 1;
UINT32 Granularity : 1; UINT32 Granularity : 1;
UINT32 BaseHigh : 8; UINT32 BaseHigh : 8;
} Bits; } Bits;
UINT64 Uint64; UINT64 Uint64;
} IA32_GDT; } IA32_GDT;
#pragma pack() #pragma pack()
GLOBAL_REMOVE_IF_UNREFERENCED IA32_GDT mGdtEntries[] = { GLOBAL_REMOVE_IF_UNREFERENCED IA32_GDT mGdtEntries[] = {
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 0x0: reserve */ {
{{0xFFFF, 0, 0, 0xB, 1, 0, 1, 0xF, 0, 0, 1, 1, 0}}, /* 0x8: compatibility mode */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{{0xFFFF, 0, 0, 0xB, 1, 0, 1, 0xF, 0, 1, 0, 1, 0}}, /* 0x10: for long mode */ }, /* 0x0: reserve */
{{0xFFFF, 0, 0, 0x3, 1, 0, 1, 0xF, 0, 0, 1, 1, 0}}, /* 0x18: data */ {
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 0x20: reserve */ { 0xFFFF, 0, 0, 0xB, 1, 0, 1, 0xF, 0, 0, 1, 1, 0 }
}, /* 0x8: compatibility mode */
{
{ 0xFFFF, 0, 0, 0xB, 1, 0, 1, 0xF, 0, 1, 0, 1, 0 }
}, /* 0x10: for long mode */
{
{ 0xFFFF, 0, 0, 0x3, 1, 0, 1, 0xF, 0, 0, 1, 1, 0 }
}, /* 0x18: data */
{
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}, /* 0x20: reserve */
}; };
// //
// IA32 Gdt register // IA32 Gdt register
// //
GLOBAL_REMOVE_IF_UNREFERENCED IA32_DESCRIPTOR mGdt = { GLOBAL_REMOVE_IF_UNREFERENCED IA32_DESCRIPTOR mGdt = {
sizeof (mGdtEntries) - 1, sizeof (mGdtEntries) - 1,
(UINTN) mGdtEntries (UINTN)mGdtEntries
}; };
/** /**
Assembly function to transition from long mode to compatibility mode to execute 32-bit code and then transit back to Assembly function to transition from long mode to compatibility mode to execute 32-bit code and then transit back to
@ -81,9 +91,9 @@ AsmExecute32BitCode (
**/ **/
EFI_STATUS EFI_STATUS
Execute32BitCode ( Execute32BitCode (
IN UINT64 Function, IN UINT64 Function,
IN UINT64 Param1, IN UINT64 Param1,
IN UINT64 Param2 IN UINT64 Param2
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
@ -100,4 +110,3 @@ Execute32BitCode (
return Status; return Status;
} }

View File

@ -19,8 +19,8 @@
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TestFspMemoryInitApiOutput ( TestFspMemoryInitApiOutput (
IN VOID *FspmUpdDataPtr, IN VOID *FspmUpdDataPtr,
IN VOID **HobListPtr IN VOID **HobListPtr
) )
{ {
return RETURN_UNSUPPORTED; return RETURN_UNSUPPORTED;
@ -36,7 +36,7 @@ TestFspMemoryInitApiOutput (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TestFspTempRamExitApiOutput ( TestFspTempRamExitApiOutput (
IN VOID *TempRamExitParam IN VOID *TempRamExitParam
) )
{ {
return RETURN_UNSUPPORTED; return RETURN_UNSUPPORTED;
@ -52,7 +52,7 @@ TestFspTempRamExitApiOutput (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TestFspSiliconInitApiOutput ( TestFspSiliconInitApiOutput (
IN VOID *FspsUpdDataPtr IN VOID *FspsUpdDataPtr
) )
{ {
return RETURN_UNSUPPORTED; return RETURN_UNSUPPORTED;

View File

@ -20,7 +20,7 @@
VOID VOID
EFIAPI EFIAPI
UpdateFspmUpdData ( UpdateFspmUpdData (
IN OUT VOID *FspUpdRgnPtr IN OUT VOID *FspUpdRgnPtr
) )
{ {
} }
@ -34,7 +34,7 @@ UpdateFspmUpdData (
VOID VOID
EFIAPI EFIAPI
UpdateFspsUpdData ( UpdateFspsUpdData (
IN OUT VOID *FspUpdRgnPtr IN OUT VOID *FspUpdRgnPtr
) )
{ {
} }
@ -69,8 +69,8 @@ UpdateTempRamExitParam (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
GetS3MemoryInfo ( GetS3MemoryInfo (
OUT UINT64 *S3PeiMemSize, OUT UINT64 *S3PeiMemSize,
OUT EFI_PHYSICAL_ADDRESS *S3PeiMemBase OUT EFI_PHYSICAL_ADDRESS *S3PeiMemBase
) )
{ {
return EFI_UNSUPPORTED; return EFI_UNSUPPORTED;
@ -86,12 +86,12 @@ GetS3MemoryInfo (
VOID VOID
EFIAPI EFIAPI
CallFspWrapperResetSystem ( CallFspWrapperResetSystem (
IN UINT32 FspStatusResetType IN UINT32 FspStatusResetType
) )
{ {
// //
// Perform reset according to the type. // Perform reset according to the type.
// //
CpuDeadLoop(); CpuDeadLoop ();
} }

View File

@ -23,27 +23,30 @@
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TestFspMemoryInitApiOutput ( TestFspMemoryInitApiOutput (
IN VOID *FspmUpdDataPtr, IN VOID *FspmUpdDataPtr,
IN VOID **HobListPtr IN VOID **HobListPtr
) )
{ {
DEBUG_CODE_BEGIN (); DEBUG_CODE_BEGIN ();
EFI_PEI_HOB_POINTERS Hob; EFI_PEI_HOB_POINTERS Hob;
Hob.Raw = (UINT8 *)(*(HobListPtr)); Hob.Raw = (UINT8 *)(*(HobListPtr));
while (TRUE) { while (TRUE) {
if (END_OF_HOB_LIST(Hob) == TRUE) { if (END_OF_HOB_LIST (Hob) == TRUE) {
DEBUG((DEBUG_INFO, "gFspBootLoaderTolumHobGuid not Found\n")); DEBUG ((DEBUG_INFO, "gFspBootLoaderTolumHobGuid not Found\n"));
break; break;
} }
if ((CompareGuid (&Hob.ResourceDescriptor->Owner, &gFspBootLoaderTolumHobGuid))) { if ((CompareGuid (&Hob.ResourceDescriptor->Owner, &gFspBootLoaderTolumHobGuid))) {
DEBUG ((DEBUG_INFO, "gFspBootLoaderTolumHobGuid Found\n")); DEBUG ((DEBUG_INFO, "gFspBootLoaderTolumHobGuid Found\n"));
DEBUG ((DEBUG_INFO, "Fill Boot Loader reserved memory range with 0x5A for testing purpose\n")); DEBUG ((DEBUG_INFO, "Fill Boot Loader reserved memory range with 0x5A for testing purpose\n"));
SetMem ((VOID *)(UINTN)Hob.ResourceDescriptor->PhysicalStart, (UINTN)Hob.ResourceDescriptor->ResourceLength, 0x5A); SetMem ((VOID *)(UINTN)Hob.ResourceDescriptor->PhysicalStart, (UINTN)Hob.ResourceDescriptor->ResourceLength, 0x5A);
break; break;
} }
Hob.Raw = GET_NEXT_HOB (Hob); Hob.Raw = GET_NEXT_HOB (Hob);
} }
DEBUG_CODE_END (); DEBUG_CODE_END ();
return RETURN_SUCCESS; return RETURN_SUCCESS;
@ -59,7 +62,7 @@ TestFspMemoryInitApiOutput (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TestFspTempRamExitApiOutput ( TestFspTempRamExitApiOutput (
IN VOID *TempRamExitParam IN VOID *TempRamExitParam
) )
{ {
return RETURN_SUCCESS; return RETURN_SUCCESS;
@ -75,7 +78,7 @@ TestFspTempRamExitApiOutput (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
TestFspSiliconInitApiOutput ( TestFspSiliconInitApiOutput (
IN VOID *FspsUpdDataPtr IN VOID *FspsUpdDataPtr
) )
{ {
return RETURN_SUCCESS; return RETURN_SUCCESS;

View File

@ -26,7 +26,7 @@
// Additional pages are used by DXE memory manager. // Additional pages are used by DXE memory manager.
// It should be consistent between RetrieveRequiredMemorySize() and GetPeiMemSize() // It should be consistent between RetrieveRequiredMemorySize() and GetPeiMemSize()
// //
#define PEI_ADDITIONAL_MEMORY_SIZE (16 * EFI_PAGE_SIZE) #define PEI_ADDITIONAL_MEMORY_SIZE (16 * EFI_PAGE_SIZE)
/** /**
Get the mem size in memory type information table. Get the mem size in memory type information table.
@ -37,22 +37,23 @@
**/ **/
UINT64 UINT64
GetMemorySizeInMemoryTypeInformation ( GetMemorySizeInMemoryTypeInformation (
IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_SERVICES **PeiServices
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_PEI_HOB_POINTERS Hob; EFI_PEI_HOB_POINTERS Hob;
EFI_MEMORY_TYPE_INFORMATION *MemoryData; EFI_MEMORY_TYPE_INFORMATION *MemoryData;
UINT8 Index; UINT8 Index;
UINTN TempPageNum; UINTN TempPageNum;
MemoryData = NULL; MemoryData = NULL;
Status = (*PeiServices)->GetHobList ((CONST EFI_PEI_SERVICES**)PeiServices, (VOID **) &Hob.Raw); Status = (*PeiServices)->GetHobList ((CONST EFI_PEI_SERVICES **)PeiServices, (VOID **)&Hob.Raw);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
while (!END_OF_HOB_LIST (Hob)) { while (!END_OF_HOB_LIST (Hob)) {
if (Hob.Header->HobType == EFI_HOB_TYPE_GUID_EXTENSION && if ((Hob.Header->HobType == EFI_HOB_TYPE_GUID_EXTENSION) &&
CompareGuid (&Hob.Guid->Name, &gEfiMemoryTypeInformationGuid)) { CompareGuid (&Hob.Guid->Name, &gEfiMemoryTypeInformationGuid))
MemoryData = (EFI_MEMORY_TYPE_INFORMATION *) (Hob.Raw + sizeof (EFI_HOB_GENERIC_HEADER) + sizeof (EFI_GUID)); {
MemoryData = (EFI_MEMORY_TYPE_INFORMATION *)(Hob.Raw + sizeof (EFI_HOB_GENERIC_HEADER) + sizeof (EFI_GUID));
break; break;
} }
@ -83,10 +84,10 @@ GetMemorySizeInMemoryTypeInformation (
**/ **/
UINT64 UINT64
RetrieveRequiredMemorySize ( RetrieveRequiredMemorySize (
IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_SERVICES **PeiServices
) )
{ {
UINT64 Size; UINT64 Size;
Size = GetMemorySizeInMemoryTypeInformation (PeiServices); Size = GetMemorySizeInMemoryTypeInformation (PeiServices);
return Size + PEI_ADDITIONAL_MEMORY_SIZE; return Size + PEI_ADDITIONAL_MEMORY_SIZE;
@ -102,12 +103,12 @@ RetrieveRequiredMemorySize (
**/ **/
UINT64 UINT64
GetPeiMemSize ( GetPeiMemSize (
IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_SERVICES **PeiServices,
IN UINT32 BootMode IN UINT32 BootMode
) )
{ {
UINT64 Size; UINT64 Size;
UINT64 MinSize; UINT64 MinSize;
if (BootMode == BOOT_IN_RECOVERY_MODE) { if (BootMode == BOOT_IN_RECOVERY_MODE) {
return PcdGet32 (PcdPeiRecoveryMinMemSize); return PcdGet32 (PcdPeiRecoveryMinMemSize);
@ -137,34 +138,34 @@ GetPeiMemSize (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PostFspmHobProcess ( PostFspmHobProcess (
IN VOID *FspHobList IN VOID *FspHobList
) )
{ {
EFI_PEI_HOB_POINTERS Hob; EFI_PEI_HOB_POINTERS Hob;
UINT64 LowMemorySize; UINT64 LowMemorySize;
UINT64 FspMemorySize; UINT64 FspMemorySize;
EFI_PHYSICAL_ADDRESS FspMemoryBase; EFI_PHYSICAL_ADDRESS FspMemoryBase;
UINT64 PeiMemSize; UINT64 PeiMemSize;
EFI_PHYSICAL_ADDRESS PeiMemBase; EFI_PHYSICAL_ADDRESS PeiMemBase;
UINT64 S3PeiMemSize; UINT64 S3PeiMemSize;
EFI_PHYSICAL_ADDRESS S3PeiMemBase; EFI_PHYSICAL_ADDRESS S3PeiMemBase;
BOOLEAN FoundFspMemHob; BOOLEAN FoundFspMemHob;
EFI_STATUS Status; EFI_STATUS Status;
EFI_BOOT_MODE BootMode; EFI_BOOT_MODE BootMode;
EFI_PEI_CAPSULE_PPI *Capsule; EFI_PEI_CAPSULE_PPI *Capsule;
VOID *CapsuleBuffer; VOID *CapsuleBuffer;
UINTN CapsuleBufferLength; UINTN CapsuleBufferLength;
UINT64 RequiredMemSize; UINT64 RequiredMemSize;
EFI_PEI_SERVICES **PeiServices; EFI_PEI_SERVICES **PeiServices;
PeiServices = (EFI_PEI_SERVICES **)GetPeiServicesTablePointer (); PeiServices = (EFI_PEI_SERVICES **)GetPeiServicesTablePointer ();
PeiServicesGetBootMode (&BootMode); PeiServicesGetBootMode (&BootMode);
PeiMemBase = 0; PeiMemBase = 0;
LowMemorySize = 0; LowMemorySize = 0;
FspMemorySize = 0; FspMemorySize = 0;
FspMemoryBase = 0; FspMemoryBase = 0;
FoundFspMemHob = FALSE; FoundFspMemHob = FALSE;
// //
@ -172,34 +173,37 @@ PostFspmHobProcess (
// Report all the resource hob except the memory between 1M and 4G // Report all the resource hob except the memory between 1M and 4G
// //
Hob.Raw = (UINT8 *)(UINTN)FspHobList; Hob.Raw = (UINT8 *)(UINTN)FspHobList;
DEBUG((DEBUG_INFO, "FspHobList - 0x%x\n", FspHobList)); DEBUG ((DEBUG_INFO, "FspHobList - 0x%x\n", FspHobList));
while ((Hob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, Hob.Raw)) != NULL) { while ((Hob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, Hob.Raw)) != NULL) {
DEBUG((DEBUG_INFO, "\nResourceType: 0x%x\n", Hob.ResourceDescriptor->ResourceType)); DEBUG ((DEBUG_INFO, "\nResourceType: 0x%x\n", Hob.ResourceDescriptor->ResourceType));
if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) || if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) ||
(Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED)) { (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED))
DEBUG((DEBUG_INFO, "ResourceAttribute: 0x%x\n", Hob.ResourceDescriptor->ResourceAttribute)); {
DEBUG((DEBUG_INFO, "PhysicalStart: 0x%x\n", Hob.ResourceDescriptor->PhysicalStart)); DEBUG ((DEBUG_INFO, "ResourceAttribute: 0x%x\n", Hob.ResourceDescriptor->ResourceAttribute));
DEBUG((DEBUG_INFO, "ResourceLength: 0x%x\n", Hob.ResourceDescriptor->ResourceLength)); DEBUG ((DEBUG_INFO, "PhysicalStart: 0x%x\n", Hob.ResourceDescriptor->PhysicalStart));
DEBUG((DEBUG_INFO, "Owner: %g\n\n", &Hob.ResourceDescriptor->Owner)); DEBUG ((DEBUG_INFO, "ResourceLength: 0x%x\n", Hob.ResourceDescriptor->ResourceLength));
DEBUG ((DEBUG_INFO, "Owner: %g\n\n", &Hob.ResourceDescriptor->Owner));
} }
if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) // Found the low memory length below 4G if ( (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) // Found the low memory length below 4G
&& (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB) && (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB)
&& (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB)) { && (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB))
LowMemorySize += Hob.ResourceDescriptor->ResourceLength; {
Hob.Raw = GET_NEXT_HOB (Hob); LowMemorySize += Hob.ResourceDescriptor->ResourceLength;
Hob.Raw = GET_NEXT_HOB (Hob);
continue; continue;
} }
if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED) // Found the low memory length below 4G if ( (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED) // Found the low memory length below 4G
&& (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB) && (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB)
&& (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB) && (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB)
&& (CompareGuid (&Hob.ResourceDescriptor->Owner, &gFspReservedMemoryResourceHobGuid))) { && (CompareGuid (&Hob.ResourceDescriptor->Owner, &gFspReservedMemoryResourceHobGuid)))
{
FoundFspMemHob = TRUE; FoundFspMemHob = TRUE;
FspMemoryBase = Hob.ResourceDescriptor->PhysicalStart; FspMemoryBase = Hob.ResourceDescriptor->PhysicalStart;
FspMemorySize = Hob.ResourceDescriptor->ResourceLength; FspMemorySize = Hob.ResourceDescriptor->ResourceLength;
DEBUG((DEBUG_INFO, "Find fsp mem hob, base 0x%x, len 0x%x\n", FspMemoryBase, FspMemorySize)); DEBUG ((DEBUG_INFO, "Find fsp mem hob, base 0x%x, len 0x%x\n", FspMemoryBase, FspMemorySize));
} }
// //
@ -216,25 +220,25 @@ PostFspmHobProcess (
} }
if (!FoundFspMemHob) { if (!FoundFspMemHob) {
DEBUG((DEBUG_INFO, "Didn't find the fsp used memory information.\n")); DEBUG ((DEBUG_INFO, "Didn't find the fsp used memory information.\n"));
//ASSERT(FALSE); // ASSERT(FALSE);
} }
DEBUG((DEBUG_INFO, "LowMemorySize: 0x%x.\n", LowMemorySize)); DEBUG ((DEBUG_INFO, "LowMemorySize: 0x%x.\n", LowMemorySize));
DEBUG((DEBUG_INFO, "FspMemoryBase: 0x%x.\n", FspMemoryBase)); DEBUG ((DEBUG_INFO, "FspMemoryBase: 0x%x.\n", FspMemoryBase));
DEBUG((DEBUG_INFO, "FspMemorySize: 0x%x.\n", FspMemorySize)); DEBUG ((DEBUG_INFO, "FspMemorySize: 0x%x.\n", FspMemorySize));
if (BootMode == BOOT_ON_S3_RESUME) { if (BootMode == BOOT_ON_S3_RESUME) {
BuildResourceDescriptorHob ( BuildResourceDescriptorHob (
EFI_RESOURCE_SYSTEM_MEMORY, EFI_RESOURCE_SYSTEM_MEMORY,
( (
EFI_RESOURCE_ATTRIBUTE_PRESENT | EFI_RESOURCE_ATTRIBUTE_PRESENT |
EFI_RESOURCE_ATTRIBUTE_INITIALIZED | EFI_RESOURCE_ATTRIBUTE_INITIALIZED |
// EFI_RESOURCE_ATTRIBUTE_TESTED | // EFI_RESOURCE_ATTRIBUTE_TESTED |
EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |
EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |
EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |
EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE
), ),
BASE_1MB, BASE_1MB,
LowMemorySize LowMemorySize
@ -242,9 +246,9 @@ PostFspmHobProcess (
S3PeiMemBase = 0; S3PeiMemBase = 0;
S3PeiMemSize = 0; S3PeiMemSize = 0;
Status = GetS3MemoryInfo (&S3PeiMemSize, &S3PeiMemBase); Status = GetS3MemoryInfo (&S3PeiMemSize, &S3PeiMemBase);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
DEBUG((DEBUG_INFO, "S3 memory %Xh - %Xh bytes\n", S3PeiMemBase, S3PeiMemSize)); DEBUG ((DEBUG_INFO, "S3 memory %Xh - %Xh bytes\n", S3PeiMemBase, S3PeiMemSize));
// //
// Make sure Stack and PeiMemory are not overlap // Make sure Stack and PeiMemory are not overlap
@ -257,20 +261,20 @@ PostFspmHobProcess (
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
} else { } else {
PeiMemSize = GetPeiMemSize (PeiServices, BootMode); PeiMemSize = GetPeiMemSize (PeiServices, BootMode);
DEBUG((DEBUG_INFO, "PEI memory size = %Xh bytes\n", PeiMemSize)); DEBUG ((DEBUG_INFO, "PEI memory size = %Xh bytes\n", PeiMemSize));
// //
// Capsule mode // Capsule mode
// //
Capsule = NULL; Capsule = NULL;
CapsuleBuffer = NULL; CapsuleBuffer = NULL;
CapsuleBufferLength = 0; CapsuleBufferLength = 0;
if (BootMode == BOOT_ON_FLASH_UPDATE) { if (BootMode == BOOT_ON_FLASH_UPDATE) {
Status = PeiServicesLocatePpi ( Status = PeiServicesLocatePpi (
&gEfiPeiCapsulePpiGuid, &gEfiPeiCapsulePpiGuid,
0, 0,
NULL, NULL,
(VOID **) &Capsule (VOID **)&Capsule
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
@ -278,7 +282,7 @@ PostFspmHobProcess (
// //
// Make sure Stack and CapsuleBuffer are not overlap // Make sure Stack and CapsuleBuffer are not overlap
// //
CapsuleBuffer = (VOID *)(UINTN)BASE_1MB; CapsuleBuffer = (VOID *)(UINTN)BASE_1MB;
CapsuleBufferLength = (UINTN)(LowMemorySize - PeiMemSize); CapsuleBufferLength = (UINTN)(LowMemorySize - PeiMemSize);
// //
// Call the Capsule PPI Coalesce function to coalesce the capsule data. // Call the Capsule PPI Coalesce function to coalesce the capsule data.
@ -288,7 +292,7 @@ PostFspmHobProcess (
} }
RequiredMemSize = RetrieveRequiredMemorySize (PeiServices); RequiredMemSize = RetrieveRequiredMemorySize (PeiServices);
DEBUG((DEBUG_INFO, "Required memory size = %Xh bytes\n", RequiredMemSize)); DEBUG ((DEBUG_INFO, "Required memory size = %Xh bytes\n", RequiredMemSize));
// //
// Report the main memory // Report the main memory
@ -296,13 +300,13 @@ PostFspmHobProcess (
BuildResourceDescriptorHob ( BuildResourceDescriptorHob (
EFI_RESOURCE_SYSTEM_MEMORY, EFI_RESOURCE_SYSTEM_MEMORY,
( (
EFI_RESOURCE_ATTRIBUTE_PRESENT | EFI_RESOURCE_ATTRIBUTE_PRESENT |
EFI_RESOURCE_ATTRIBUTE_INITIALIZED | EFI_RESOURCE_ATTRIBUTE_INITIALIZED |
EFI_RESOURCE_ATTRIBUTE_TESTED | EFI_RESOURCE_ATTRIBUTE_TESTED |
EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |
EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |
EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |
EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE
), ),
BASE_1MB, BASE_1MB,
LowMemorySize LowMemorySize
@ -316,10 +320,10 @@ PostFspmHobProcess (
// Install efi memory // Install efi memory
// //
PeiMemBase = BASE_1MB + LowMemorySize - PeiMemSize; PeiMemBase = BASE_1MB + LowMemorySize - PeiMemSize;
Status = PeiServicesInstallPeiMemory ( Status = PeiServicesInstallPeiMemory (
PeiMemBase, PeiMemBase,
PeiMemSize - RequiredMemSize PeiMemSize - RequiredMemSize
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
if (Capsule != NULL) { if (Capsule != NULL) {
@ -338,7 +342,7 @@ PostFspmHobProcess (
**/ **/
VOID VOID
ProcessFspHobList ( ProcessFspHobList (
IN VOID *FspHobList IN VOID *FspHobList
) )
{ {
EFI_PEI_HOB_POINTERS FspHob; EFI_PEI_HOB_POINTERS FspHob;
@ -353,14 +357,15 @@ ProcessFspHobList (
// //
// Skip FSP binary creates PcdDataBaseHobGuid // Skip FSP binary creates PcdDataBaseHobGuid
// //
if (!CompareGuid(&FspHob.Guid->Name, &gPcdDataBaseHobGuid)) { if (!CompareGuid (&FspHob.Guid->Name, &gPcdDataBaseHobGuid)) {
BuildGuidDataHob ( BuildGuidDataHob (
&FspHob.Guid->Name, &FspHob.Guid->Name,
GET_GUID_HOB_DATA(FspHob), GET_GUID_HOB_DATA (FspHob),
GET_GUID_HOB_DATA_SIZE(FspHob) GET_GUID_HOB_DATA_SIZE (FspHob)
); );
} }
} }
FspHob.Raw = GET_NEXT_HOB (FspHob); FspHob.Raw = GET_NEXT_HOB (FspHob);
} }
} }
@ -375,7 +380,7 @@ ProcessFspHobList (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PostFspsHobProcess ( PostFspsHobProcess (
IN VOID *FspHobList IN VOID *FspHobList
) )
{ {
// //
@ -392,5 +397,6 @@ PostFspsHobProcess (
ASSERT (FspHobList != NULL); ASSERT (FspHobList != NULL);
ProcessFspHobList (FspHobList); ProcessFspHobList (FspHobList);
} }
return EFI_SUCCESS; return EFI_SUCCESS;
} }

View File

@ -29,9 +29,9 @@
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
SecPlatformInformation ( SecPlatformInformation (
IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN OUT UINT64 *StructureSize, IN OUT UINT64 *StructureSize,
OUT EFI_SEC_PLATFORM_INFORMATION_RECORD *PlatformInformationRecord OUT EFI_SEC_PLATFORM_INFORMATION_RECORD *PlatformInformationRecord
); );
/** /**
@ -95,30 +95,30 @@ EFI_PEI_PPI_DESCRIPTOR mPeiSecPlatformPpi[] = {
EFI_PEI_PPI_DESCRIPTOR * EFI_PEI_PPI_DESCRIPTOR *
EFIAPI EFIAPI
SecPlatformMain ( SecPlatformMain (
IN OUT EFI_SEC_PEI_HAND_OFF *SecCoreData IN OUT EFI_SEC_PEI_HAND_OFF *SecCoreData
) )
{ {
EFI_PEI_PPI_DESCRIPTOR *PpiList; EFI_PEI_PPI_DESCRIPTOR *PpiList;
DEBUG((DEBUG_INFO, "SecPlatformMain\n")); DEBUG ((DEBUG_INFO, "SecPlatformMain\n"));
DEBUG((DEBUG_INFO, "BootFirmwareVolumeBase - 0x%x\n", SecCoreData->BootFirmwareVolumeBase)); DEBUG ((DEBUG_INFO, "BootFirmwareVolumeBase - 0x%x\n", SecCoreData->BootFirmwareVolumeBase));
DEBUG((DEBUG_INFO, "BootFirmwareVolumeSize - 0x%x\n", SecCoreData->BootFirmwareVolumeSize)); DEBUG ((DEBUG_INFO, "BootFirmwareVolumeSize - 0x%x\n", SecCoreData->BootFirmwareVolumeSize));
DEBUG((DEBUG_INFO, "TemporaryRamBase - 0x%x\n", SecCoreData->TemporaryRamBase)); DEBUG ((DEBUG_INFO, "TemporaryRamBase - 0x%x\n", SecCoreData->TemporaryRamBase));
DEBUG((DEBUG_INFO, "TemporaryRamSize - 0x%x\n", SecCoreData->TemporaryRamSize)); DEBUG ((DEBUG_INFO, "TemporaryRamSize - 0x%x\n", SecCoreData->TemporaryRamSize));
DEBUG((DEBUG_INFO, "PeiTemporaryRamBase - 0x%x\n", SecCoreData->PeiTemporaryRamBase)); DEBUG ((DEBUG_INFO, "PeiTemporaryRamBase - 0x%x\n", SecCoreData->PeiTemporaryRamBase));
DEBUG((DEBUG_INFO, "PeiTemporaryRamSize - 0x%x\n", SecCoreData->PeiTemporaryRamSize)); DEBUG ((DEBUG_INFO, "PeiTemporaryRamSize - 0x%x\n", SecCoreData->PeiTemporaryRamSize));
DEBUG((DEBUG_INFO, "StackBase - 0x%x\n", SecCoreData->StackBase)); DEBUG ((DEBUG_INFO, "StackBase - 0x%x\n", SecCoreData->StackBase));
DEBUG((DEBUG_INFO, "StackSize - 0x%x\n", SecCoreData->StackSize)); DEBUG ((DEBUG_INFO, "StackSize - 0x%x\n", SecCoreData->StackSize));
InitializeApicTimer (0, (UINT32) -1, TRUE, 5); InitializeApicTimer (0, (UINT32)-1, TRUE, 5);
// //
// Use middle of Heap as temp buffer, it will be copied by caller. // Use middle of Heap as temp buffer, it will be copied by caller.
// Do not use Stack, because it will cause wrong calculation on stack by PeiCore // Do not use Stack, because it will cause wrong calculation on stack by PeiCore
// //
PpiList = (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + (UINTN)SecCoreData->PeiTemporaryRamSize/2); PpiList = (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + (UINTN)SecCoreData->PeiTemporaryRamSize/2);
CopyMem (PpiList, mPeiSecPlatformPpi, sizeof(mPeiSecPlatformPpi)); CopyMem (PpiList, mPeiSecPlatformPpi, sizeof (mPeiSecPlatformPpi));
// //
// Patch TopOfTemporaryRamPpi // Patch TopOfTemporaryRamPpi

View File

@ -12,34 +12,34 @@
// //
// Fv Header // Fv Header
// //
#define FVH_FV_LENGTH_OFFSET 0x20 #define FVH_FV_LENGTH_OFFSET 0x20
#define FVH_SIGINATURE_OFFSET 0x28 #define FVH_SIGINATURE_OFFSET 0x28
#define FVH_SIGINATURE_VALID_VALUE 0x4856465F // valid signature:_FVH #define FVH_SIGINATURE_VALID_VALUE 0x4856465F // valid signature:_FVH
#define FVH_HEADER_LENGTH_OFFSET 0x30 #define FVH_HEADER_LENGTH_OFFSET 0x30
#define FVH_EXTHEADER_OFFSET_OFFSET 0x34 #define FVH_EXTHEADER_OFFSET_OFFSET 0x34
#define FVH_EXTHEADER_SIZE_OFFSET 0x10 #define FVH_EXTHEADER_SIZE_OFFSET 0x10
// //
// Ffs Header // Ffs Header
// //
#define FSP_HEADER_SIGNATURE_OFFSET 0x1C #define FSP_HEADER_SIGNATURE_OFFSET 0x1C
#define FSP_HEADER_SIGNATURE 0x48505346 ; valid signature:FSPH #define FSP_HEADER_SIGNATURE 0x48505346 ; valid signature:FSPH
#define FSP_HEADER_GUID_DWORD1 0x912740BE #define FSP_HEADER_GUID_DWORD1 0x912740BE
#define FSP_HEADER_GUID_DWORD2 0x47342284 #define FSP_HEADER_GUID_DWORD2 0x47342284
#define FSP_HEADER_GUID_DWORD3 0xB08471B9 #define FSP_HEADER_GUID_DWORD3 0xB08471B9
#define FSP_HEADER_GUID_DWORD4 0x0C3F3527 #define FSP_HEADER_GUID_DWORD4 0x0C3F3527
#define FFS_HEADER_SIZE_VALUE 0x18 #define FFS_HEADER_SIZE_VALUE 0x18
// //
// Section Header // Section Header
// //
#define SECTION_HEADER_TYPE_OFFSET 0x03 #define SECTION_HEADER_TYPE_OFFSET 0x03
#define RAW_SECTION_HEADER_SIZE_VALUE 0x04 #define RAW_SECTION_HEADER_SIZE_VALUE 0x04
// //
// Fsp Header // Fsp Header
// //
#define FSP_HEADER_IMAGEBASE_OFFSET 0x1C #define FSP_HEADER_IMAGEBASE_OFFSET 0x1C
#define FSP_HEADER_TEMPRAMINIT_OFFSET 0x30 #define FSP_HEADER_TEMPRAMINIT_OFFSET 0x30
#endif #endif

View File

@ -6,7 +6,6 @@
**/ **/
#include <PiPei.h> #include <PiPei.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/SerialPortLib.h> #include <Library/SerialPortLib.h>
@ -21,9 +20,9 @@
VOID VOID
EFIAPI EFIAPI
PlatformInit ( PlatformInit (
IN VOID *FspHobList, IN VOID *FspHobList,
IN VOID *StartOfRange, IN VOID *StartOfRange,
IN VOID *EndOfRange IN VOID *EndOfRange
) )
{ {
// //

View File

@ -53,7 +53,7 @@ SecGetPerformance (
&gTopOfTemporaryRamPpiGuid, &gTopOfTemporaryRamPpiGuid,
0, 0,
NULL, NULL,
(VOID **) &TopOfTemporaryRamPpi (VOID **)&TopOfTemporaryRamPpi
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
return EFI_NOT_FOUND; return EFI_NOT_FOUND;
@ -72,12 +72,12 @@ SecGetPerformance (
// | TSC[31:00] | // | TSC[31:00] |
// |--------------| // |--------------|
// //
TopOfTemporaryRam = (UINT32)(UINTN)TopOfTemporaryRamPpi - sizeof(UINT32); TopOfTemporaryRam = (UINT32)(UINTN)TopOfTemporaryRamPpi - sizeof (UINT32);
TopOfTemporaryRam -= sizeof(UINT32) * 2; TopOfTemporaryRam -= sizeof (UINT32) * 2;
Count = *(UINT32 *) (UINTN) (TopOfTemporaryRam - sizeof (UINT32)); Count = *(UINT32 *)(UINTN)(TopOfTemporaryRam - sizeof (UINT32));
Size = Count * sizeof (UINT64); Size = Count * sizeof (UINT64);
Ticker = *(UINT64 *) (UINTN) (TopOfTemporaryRam - sizeof (UINT32) - Size - sizeof (UINT32) * 2); Ticker = *(UINT64 *)(UINTN)(TopOfTemporaryRam - sizeof (UINT32) - Size - sizeof (UINT32) * 2);
Performance->ResetEnd = GetTimeInNanoSecond (Ticker); Performance->ResetEnd = GetTimeInNanoSecond (Ticker);
return EFI_SUCCESS; return EFI_SUCCESS;

View File

@ -28,9 +28,9 @@
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
SecPlatformInformation ( SecPlatformInformation (
IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN OUT UINT64 *StructureSize, IN OUT UINT64 *StructureSize,
OUT EFI_SEC_PLATFORM_INFORMATION_RECORD *PlatformInformationRecord OUT EFI_SEC_PLATFORM_INFORMATION_RECORD *PlatformInformationRecord
) )
{ {
UINT32 *Bist; UINT32 *Bist;
@ -47,7 +47,7 @@ SecPlatformInformation (
&gTopOfTemporaryRamPpiGuid, &gTopOfTemporaryRamPpiGuid,
0, 0,
NULL, NULL,
(VOID **) &TopOfTemporaryRamPpi (VOID **)&TopOfTemporaryRamPpi
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
return EFI_NOT_FOUND; return EFI_NOT_FOUND;
@ -59,18 +59,18 @@ SecPlatformInformation (
// This routine copies the BIST information to the buffer pointed by // This routine copies the BIST information to the buffer pointed by
// PlatformInformationRecord for output. // PlatformInformationRecord for output.
// //
TopOfTemporaryRam = (UINT32)(UINTN)TopOfTemporaryRamPpi - sizeof (UINT32); TopOfTemporaryRam = (UINT32)(UINTN)TopOfTemporaryRamPpi - sizeof (UINT32);
TopOfTemporaryRam -= sizeof(UINT32) * 2; TopOfTemporaryRam -= sizeof (UINT32) * 2;
Count = *((UINT32 *)(UINTN) (TopOfTemporaryRam - sizeof (UINT32))); Count = *((UINT32 *)(UINTN)(TopOfTemporaryRam - sizeof (UINT32)));
Size = Count * sizeof (IA32_HANDOFF_STATUS); Size = Count * sizeof (IA32_HANDOFF_STATUS);
if ((*StructureSize) < (UINT64) Size) { if ((*StructureSize) < (UINT64)Size) {
*StructureSize = Size; *StructureSize = Size;
return EFI_BUFFER_TOO_SMALL; return EFI_BUFFER_TOO_SMALL;
} }
*StructureSize = Size; *StructureSize = Size;
Bist = (UINT32 *) (TopOfTemporaryRam - sizeof (UINT32) - Size); Bist = (UINT32 *)(TopOfTemporaryRam - sizeof (UINT32) - Size);
CopyMem (PlatformInformationRecord, Bist, Size); CopyMem (PlatformInformationRecord, Bist, Size);

View File

@ -10,10 +10,10 @@
#include <FspEas.h> #include <FspEas.h>
typedef struct { typedef struct {
UINT32 MicrocodeRegionBase; UINT32 MicrocodeRegionBase;
UINT32 MicrocodeRegionSize; UINT32 MicrocodeRegionSize;
UINT32 CodeRegionBase; UINT32 CodeRegionBase;
UINT32 CodeRegionSize; UINT32 CodeRegionSize;
} FSPT_CORE_UPD; } FSPT_CORE_UPD;
typedef struct { typedef struct {
@ -25,7 +25,7 @@ typedef struct {
FSPT_CORE_UPD FsptCoreUpd; FSPT_CORE_UPD FsptCoreUpd;
} FSPT_UPD_CORE_DATA; } FSPT_UPD_CORE_DATA;
GLOBAL_REMOVE_IF_UNREFERENCED CONST FSPT_UPD_CORE_DATA FsptUpdDataPtr = { GLOBAL_REMOVE_IF_UNREFERENCED CONST FSPT_UPD_CORE_DATA FsptUpdDataPtr = {
{ {
0x4450555F54505346, 0x4450555F54505346,
// //
@ -33,8 +33,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST FSPT_UPD_CORE_DATA FsptUpdDataPtr = {
// //
0x02, 0x02,
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
}
}, },
// //
// If platform does not support FSP spec 2.2 remove FSPT_ARCH_UPD structure. // If platform does not support FSP spec 2.2 remove FSPT_ARCH_UPD structure.
@ -58,4 +57,3 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST FSPT_UPD_CORE_DATA FsptUpdDataPtr = {
FixedPcdGet32 (PcdFlashCodeCacheSize), FixedPcdGet32 (PcdFlashCodeCacheSize),
} }
}; };

View File

@ -23,21 +23,21 @@ SecPlatformDisableTemporaryMemory (
VOID VOID
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
VOID *TempRamExitParam; VOID *TempRamExitParam;
FSP_INFO_HEADER *FspHeader; FSP_INFO_HEADER *FspHeader;
FspHeader = FspFindFspHeader (PcdGet32(PcdFspmBaseAddress)); FspHeader = FspFindFspHeader (PcdGet32 (PcdFspmBaseAddress));
if (FspHeader == NULL) { if (FspHeader == NULL) {
return ; return;
} }
DEBUG((DEBUG_INFO, "SecPlatformDisableTemporaryMemory enter\n")); DEBUG ((DEBUG_INFO, "SecPlatformDisableTemporaryMemory enter\n"));
TempRamExitParam = UpdateTempRamExitParam (); TempRamExitParam = UpdateTempRamExitParam ();
Status = CallTempRamExit (TempRamExitParam); Status = CallTempRamExit (TempRamExitParam);
DEBUG((DEBUG_INFO, "TempRamExit status: 0x%x\n", Status)); DEBUG ((DEBUG_INFO, "TempRamExit status: 0x%x\n", Status));
ASSERT_EFI_ERROR(Status); ASSERT_EFI_ERROR (Status);
return ; return;
} }