SecurityPkg: Apply uncrustify changes
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the SecurityPkg 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: Jian J Wang <jian.j.wang@intel.com>
This commit is contained in:
committed by
mergify[bot]
parent
39de741e2d
commit
c411b485b6
@@ -44,17 +44,17 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#define PERF_ID_TCG2_PEI 0x3080
|
||||
|
||||
typedef struct {
|
||||
EFI_GUID *EventGuid;
|
||||
EFI_TCG2_EVENT_LOG_FORMAT LogFormat;
|
||||
EFI_GUID *EventGuid;
|
||||
EFI_TCG2_EVENT_LOG_FORMAT LogFormat;
|
||||
} TCG2_EVENT_INFO_STRUCT;
|
||||
|
||||
TCG2_EVENT_INFO_STRUCT mTcg2EventInfo[] = {
|
||||
{&gTcgEventEntryHobGuid, EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2},
|
||||
{&gTcgEvent2EntryHobGuid, EFI_TCG2_EVENT_LOG_FORMAT_TCG_2},
|
||||
TCG2_EVENT_INFO_STRUCT mTcg2EventInfo[] = {
|
||||
{ &gTcgEventEntryHobGuid, EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 },
|
||||
{ &gTcgEvent2EntryHobGuid, EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 },
|
||||
};
|
||||
|
||||
BOOLEAN mImageInMemory = FALSE;
|
||||
EFI_PEI_FILE_HANDLE mFileHandle;
|
||||
BOOLEAN mImageInMemory = FALSE;
|
||||
EFI_PEI_FILE_HANDLE mFileHandle;
|
||||
|
||||
EFI_PEI_PPI_DESCRIPTOR mTpmInitializedPpiList = {
|
||||
EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
|
||||
@@ -92,15 +92,15 @@ EFI_PEI_PPI_DESCRIPTOR mTpmInitializationDonePpiList = {
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
HashLogExtendEvent (
|
||||
IN EDKII_TCG_PPI *This,
|
||||
IN UINT64 Flags,
|
||||
IN UINT8 *HashData,
|
||||
IN UINTN HashDataLen,
|
||||
IN TCG_PCR_EVENT_HDR *NewEventHdr,
|
||||
IN UINT8 *NewEventData
|
||||
IN EDKII_TCG_PPI *This,
|
||||
IN UINT64 Flags,
|
||||
IN UINT8 *HashData,
|
||||
IN UINTN HashDataLen,
|
||||
IN TCG_PCR_EVENT_HDR *NewEventHdr,
|
||||
IN UINT8 *NewEventData
|
||||
);
|
||||
|
||||
EDKII_TCG_PPI mEdkiiTcgPpi = {
|
||||
EDKII_TCG_PPI mEdkiiTcgPpi = {
|
||||
HashLogExtendEvent
|
||||
};
|
||||
|
||||
@@ -113,24 +113,24 @@ EFI_PEI_PPI_DESCRIPTOR mTcgPpiList = {
|
||||
//
|
||||
// Number of firmware blobs to grow by each time we run out of room
|
||||
//
|
||||
#define FIRMWARE_BLOB_GROWTH_STEP 4
|
||||
#define FIRMWARE_BLOB_GROWTH_STEP 4
|
||||
|
||||
EFI_PLATFORM_FIRMWARE_BLOB *mMeasuredBaseFvInfo;
|
||||
UINT32 mMeasuredMaxBaseFvIndex = 0;
|
||||
UINT32 mMeasuredBaseFvIndex = 0;
|
||||
EFI_PLATFORM_FIRMWARE_BLOB *mMeasuredBaseFvInfo;
|
||||
UINT32 mMeasuredMaxBaseFvIndex = 0;
|
||||
UINT32 mMeasuredBaseFvIndex = 0;
|
||||
|
||||
EFI_PLATFORM_FIRMWARE_BLOB *mMeasuredChildFvInfo;
|
||||
UINT32 mMeasuredMaxChildFvIndex = 0;
|
||||
UINT32 mMeasuredChildFvIndex = 0;
|
||||
EFI_PLATFORM_FIRMWARE_BLOB *mMeasuredChildFvInfo;
|
||||
UINT32 mMeasuredMaxChildFvIndex = 0;
|
||||
UINT32 mMeasuredChildFvIndex = 0;
|
||||
|
||||
#pragma pack (1)
|
||||
|
||||
#define FV_HANDOFF_TABLE_DESC "Fv(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)"
|
||||
typedef struct {
|
||||
UINT8 BlobDescriptionSize;
|
||||
UINT8 BlobDescription[sizeof(FV_HANDOFF_TABLE_DESC)];
|
||||
EFI_PHYSICAL_ADDRESS BlobBase;
|
||||
UINT64 BlobLength;
|
||||
UINT8 BlobDescriptionSize;
|
||||
UINT8 BlobDescription[sizeof (FV_HANDOFF_TABLE_DESC)];
|
||||
EFI_PHYSICAL_ADDRESS BlobBase;
|
||||
UINT64 BlobLength;
|
||||
} FV_HANDOFF_TABLE_POINTERS2;
|
||||
|
||||
#pragma pack ()
|
||||
@@ -149,9 +149,9 @@ typedef struct {
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FirmwareVolumeInfoPpiNotifyCallback (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -168,12 +168,12 @@ FirmwareVolumeInfoPpiNotifyCallback (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EndofPeiSignalNotifyCallBack (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
);
|
||||
|
||||
EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList[] = {
|
||||
EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList[] = {
|
||||
{
|
||||
EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK,
|
||||
&gEfiPeiFirmwareVolumeInfoPpiGuid,
|
||||
@@ -191,7 +191,6 @@ EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList[] = {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
Record all measured Firmware Volume Information into a Guid Hob
|
||||
Guid Hob payload layout is
|
||||
@@ -210,12 +209,12 @@ EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList[] = {
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EndofPeiSignalNotifyCallBack (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
)
|
||||
{
|
||||
MEASURED_HOB_DATA *MeasuredHobData;
|
||||
MEASURED_HOB_DATA *MeasuredHobData;
|
||||
|
||||
MeasuredHobData = NULL;
|
||||
|
||||
@@ -224,12 +223,12 @@ EndofPeiSignalNotifyCallBack (
|
||||
//
|
||||
// Create a Guid hob to save all measured Fv
|
||||
//
|
||||
MeasuredHobData = BuildGuidHob(
|
||||
MeasuredHobData = BuildGuidHob (
|
||||
&gMeasuredFvHobGuid,
|
||||
sizeof(UINTN) + sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex + mMeasuredChildFvIndex)
|
||||
sizeof (UINTN) + sizeof (EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex + mMeasuredChildFvIndex)
|
||||
);
|
||||
|
||||
if (MeasuredHobData != NULL){
|
||||
if (MeasuredHobData != NULL) {
|
||||
//
|
||||
// Save measured FV info enty number
|
||||
//
|
||||
@@ -238,12 +237,12 @@ EndofPeiSignalNotifyCallBack (
|
||||
//
|
||||
// Save measured base Fv info
|
||||
//
|
||||
CopyMem (MeasuredHobData->MeasuredFvBuf, mMeasuredBaseFvInfo, sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex));
|
||||
CopyMem (MeasuredHobData->MeasuredFvBuf, mMeasuredBaseFvInfo, sizeof (EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex));
|
||||
|
||||
//
|
||||
// Save measured child Fv info
|
||||
//
|
||||
CopyMem (&MeasuredHobData->MeasuredFvBuf[mMeasuredBaseFvIndex] , mMeasuredChildFvInfo, sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredChildFvIndex));
|
||||
CopyMem (&MeasuredHobData->MeasuredFvBuf[mMeasuredBaseFvIndex], mMeasuredChildFvInfo, sizeof (EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredChildFvIndex));
|
||||
}
|
||||
|
||||
PERF_CALLBACK_END (&gEfiEndOfPeiSignalPpiGuid);
|
||||
@@ -260,12 +259,12 @@ SyncPcrAllocationsAndPcrMask (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_TCG2_EVENT_ALGORITHM_BITMAP TpmHashAlgorithmBitmap;
|
||||
UINT32 TpmActivePcrBanks;
|
||||
UINT32 NewTpmActivePcrBanks;
|
||||
UINT32 Tpm2PcrMask;
|
||||
UINT32 NewTpm2PcrMask;
|
||||
EFI_STATUS Status;
|
||||
EFI_TCG2_EVENT_ALGORITHM_BITMAP TpmHashAlgorithmBitmap;
|
||||
UINT32 TpmActivePcrBanks;
|
||||
UINT32 NewTpmActivePcrBanks;
|
||||
UINT32 Tpm2PcrMask;
|
||||
UINT32 NewTpm2PcrMask;
|
||||
|
||||
DEBUG ((DEBUG_ERROR, "SyncPcrAllocationsAndPcrMask!\n"));
|
||||
|
||||
@@ -310,10 +309,11 @@ SyncPcrAllocationsAndPcrMask (
|
||||
DEBUG ((DEBUG_ERROR, "%a - Failed to reallocate PCRs!\n", __FUNCTION__));
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
//
|
||||
// Need reset system, since we just called Tpm2PcrAllocateBanks().
|
||||
//
|
||||
ResetCold();
|
||||
ResetCold ();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,66 +347,67 @@ SyncPcrAllocationsAndPcrMask (
|
||||
**/
|
||||
EFI_STATUS
|
||||
LogHashEvent (
|
||||
IN TPML_DIGEST_VALUES *DigestList,
|
||||
IN OUT TCG_PCR_EVENT_HDR *NewEventHdr,
|
||||
IN UINT8 *NewEventData
|
||||
IN TPML_DIGEST_VALUES *DigestList,
|
||||
IN OUT TCG_PCR_EVENT_HDR *NewEventHdr,
|
||||
IN UINT8 *NewEventData
|
||||
)
|
||||
{
|
||||
VOID *HobData;
|
||||
EFI_STATUS Status;
|
||||
UINTN Index;
|
||||
EFI_STATUS RetStatus;
|
||||
UINT32 SupportedEventLogs;
|
||||
TCG_PCR_EVENT2 *TcgPcrEvent2;
|
||||
UINT8 *DigestBuffer;
|
||||
VOID *HobData;
|
||||
EFI_STATUS Status;
|
||||
UINTN Index;
|
||||
EFI_STATUS RetStatus;
|
||||
UINT32 SupportedEventLogs;
|
||||
TCG_PCR_EVENT2 *TcgPcrEvent2;
|
||||
UINT8 *DigestBuffer;
|
||||
|
||||
SupportedEventLogs = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 | EFI_TCG2_EVENT_LOG_FORMAT_TCG_2;
|
||||
|
||||
RetStatus = EFI_SUCCESS;
|
||||
for (Index = 0; Index < sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0]); Index++) {
|
||||
for (Index = 0; Index < sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0]); Index++) {
|
||||
if ((SupportedEventLogs & mTcg2EventInfo[Index].LogFormat) != 0) {
|
||||
DEBUG ((DEBUG_INFO, " LogFormat - 0x%08x\n", mTcg2EventInfo[Index].LogFormat));
|
||||
switch (mTcg2EventInfo[Index].LogFormat) {
|
||||
case EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2:
|
||||
Status = GetDigestFromDigestList (TPM_ALG_SHA1, DigestList, &NewEventHdr->Digest);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
case EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2:
|
||||
Status = GetDigestFromDigestList (TPM_ALG_SHA1, DigestList, &NewEventHdr->Digest);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
HobData = BuildGuidHob (
|
||||
&gTcgEventEntryHobGuid,
|
||||
sizeof (*NewEventHdr) + NewEventHdr->EventSize
|
||||
);
|
||||
if (HobData == NULL) {
|
||||
RetStatus = EFI_OUT_OF_RESOURCES;
|
||||
break;
|
||||
}
|
||||
|
||||
CopyMem (HobData, NewEventHdr, sizeof (*NewEventHdr));
|
||||
HobData = (VOID *)((UINT8 *)HobData + sizeof (*NewEventHdr));
|
||||
CopyMem (HobData, NewEventData, NewEventHdr->EventSize);
|
||||
}
|
||||
|
||||
break;
|
||||
case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:
|
||||
//
|
||||
// Use GetDigestListSize (DigestList) in the GUID HOB DataLength calculation
|
||||
// to reserve enough buffer to hold TPML_DIGEST_VALUES compact binary.
|
||||
//
|
||||
HobData = BuildGuidHob (
|
||||
&gTcgEventEntryHobGuid,
|
||||
sizeof (*NewEventHdr) + NewEventHdr->EventSize
|
||||
);
|
||||
&gTcgEvent2EntryHobGuid,
|
||||
sizeof (TcgPcrEvent2->PCRIndex) + sizeof (TcgPcrEvent2->EventType) + GetDigestListSize (DigestList) + sizeof (TcgPcrEvent2->EventSize) + NewEventHdr->EventSize
|
||||
);
|
||||
if (HobData == NULL) {
|
||||
RetStatus = EFI_OUT_OF_RESOURCES;
|
||||
break;
|
||||
}
|
||||
|
||||
CopyMem (HobData, NewEventHdr, sizeof (*NewEventHdr));
|
||||
HobData = (VOID *) ((UINT8*)HobData + sizeof (*NewEventHdr));
|
||||
CopyMem (HobData, NewEventData, NewEventHdr->EventSize);
|
||||
}
|
||||
break;
|
||||
case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:
|
||||
//
|
||||
// Use GetDigestListSize (DigestList) in the GUID HOB DataLength calculation
|
||||
// to reserve enough buffer to hold TPML_DIGEST_VALUES compact binary.
|
||||
//
|
||||
HobData = BuildGuidHob (
|
||||
&gTcgEvent2EntryHobGuid,
|
||||
sizeof(TcgPcrEvent2->PCRIndex) + sizeof(TcgPcrEvent2->EventType) + GetDigestListSize (DigestList) + sizeof(TcgPcrEvent2->EventSize) + NewEventHdr->EventSize
|
||||
);
|
||||
if (HobData == NULL) {
|
||||
RetStatus = EFI_OUT_OF_RESOURCES;
|
||||
TcgPcrEvent2 = HobData;
|
||||
TcgPcrEvent2->PCRIndex = NewEventHdr->PCRIndex;
|
||||
TcgPcrEvent2->EventType = NewEventHdr->EventType;
|
||||
DigestBuffer = (UINT8 *)&TcgPcrEvent2->Digest;
|
||||
DigestBuffer = CopyDigestListToBuffer (DigestBuffer, DigestList, PcdGet32 (PcdTpm2HashMask));
|
||||
CopyMem (DigestBuffer, &NewEventHdr->EventSize, sizeof (TcgPcrEvent2->EventSize));
|
||||
DigestBuffer = DigestBuffer + sizeof (TcgPcrEvent2->EventSize);
|
||||
CopyMem (DigestBuffer, NewEventData, NewEventHdr->EventSize);
|
||||
break;
|
||||
}
|
||||
|
||||
TcgPcrEvent2 = HobData;
|
||||
TcgPcrEvent2->PCRIndex = NewEventHdr->PCRIndex;
|
||||
TcgPcrEvent2->EventType = NewEventHdr->EventType;
|
||||
DigestBuffer = (UINT8 *)&TcgPcrEvent2->Digest;
|
||||
DigestBuffer = CopyDigestListToBuffer (DigestBuffer, DigestList, PcdGet32 (PcdTpm2HashMask));
|
||||
CopyMem (DigestBuffer, &NewEventHdr->EventSize, sizeof(TcgPcrEvent2->EventSize));
|
||||
DigestBuffer = DigestBuffer + sizeof(TcgPcrEvent2->EventSize);
|
||||
CopyMem (DigestBuffer, NewEventData, NewEventHdr->EventSize);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -438,30 +439,30 @@ LogHashEvent (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
HashLogExtendEvent (
|
||||
IN EDKII_TCG_PPI *This,
|
||||
IN UINT64 Flags,
|
||||
IN UINT8 *HashData,
|
||||
IN UINTN HashDataLen,
|
||||
IN TCG_PCR_EVENT_HDR *NewEventHdr,
|
||||
IN UINT8 *NewEventData
|
||||
IN EDKII_TCG_PPI *This,
|
||||
IN UINT64 Flags,
|
||||
IN UINT8 *HashData,
|
||||
IN UINTN HashDataLen,
|
||||
IN TCG_PCR_EVENT_HDR *NewEventHdr,
|
||||
IN UINT8 *NewEventData
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
TPML_DIGEST_VALUES DigestList;
|
||||
EFI_STATUS Status;
|
||||
TPML_DIGEST_VALUES DigestList;
|
||||
|
||||
if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
if ((Flags & EDKII_TCG_PRE_HASH) != 0 || (Flags & EDKII_TCG_PRE_HASH_LOG_ONLY) != 0) {
|
||||
ZeroMem (&DigestList, sizeof(DigestList));
|
||||
CopyMem (&DigestList, HashData, sizeof(DigestList));
|
||||
if (((Flags & EDKII_TCG_PRE_HASH) != 0) || ((Flags & EDKII_TCG_PRE_HASH_LOG_ONLY) != 0)) {
|
||||
ZeroMem (&DigestList, sizeof (DigestList));
|
||||
CopyMem (&DigestList, HashData, sizeof (DigestList));
|
||||
Status = EFI_SUCCESS;
|
||||
if ((Flags & EDKII_TCG_PRE_HASH) !=0 ) {
|
||||
if ((Flags & EDKII_TCG_PRE_HASH) != 0 ) {
|
||||
Status = Tpm2PcrExtend (
|
||||
NewEventHdr->PCRIndex,
|
||||
&DigestList
|
||||
);
|
||||
NewEventHdr->PCRIndex,
|
||||
&DigestList
|
||||
);
|
||||
}
|
||||
} else {
|
||||
Status = HashAndExtend (
|
||||
@@ -471,13 +472,14 @@ HashLogExtendEvent (
|
||||
&DigestList
|
||||
);
|
||||
}
|
||||
|
||||
if (!EFI_ERROR (Status)) {
|
||||
Status = LogHashEvent (&DigestList, NewEventHdr, NewEventData);
|
||||
}
|
||||
|
||||
if (Status == EFI_DEVICE_ERROR) {
|
||||
DEBUG ((DEBUG_ERROR, "HashLogExtendEvent - %r. Disable TPM.\n", Status));
|
||||
BuildGuidHob (&gTpmErrorHobGuid,0);
|
||||
BuildGuidHob (&gTpmErrorHobGuid, 0);
|
||||
REPORT_STATUS_CODE (
|
||||
EFI_ERROR_CODE | EFI_ERROR_MINOR,
|
||||
(PcdGet32 (PcdStatusCodeSubClassTpmDevice) | EFI_P_EC_INTERFACE_ERROR)
|
||||
@@ -500,7 +502,7 @@ MeasureCRTMVersion (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
TCG_PCR_EVENT_HDR TcgEventHdr;
|
||||
TCG_PCR_EVENT_HDR TcgEventHdr;
|
||||
|
||||
//
|
||||
// Use FirmwareVersion string to represent CRTM version.
|
||||
@@ -509,15 +511,15 @@ MeasureCRTMVersion (
|
||||
|
||||
TcgEventHdr.PCRIndex = 0;
|
||||
TcgEventHdr.EventType = EV_S_CRTM_VERSION;
|
||||
TcgEventHdr.EventSize = (UINT32) StrSize((CHAR16*)PcdGetPtr (PcdFirmwareVersionString));
|
||||
TcgEventHdr.EventSize = (UINT32)StrSize ((CHAR16 *)PcdGetPtr (PcdFirmwareVersionString));
|
||||
|
||||
return HashLogExtendEvent (
|
||||
&mEdkiiTcgPpi,
|
||||
0,
|
||||
(UINT8*)PcdGetPtr (PcdFirmwareVersionString),
|
||||
(UINT8 *)PcdGetPtr (PcdFirmwareVersionString),
|
||||
TcgEventHdr.EventSize,
|
||||
&TcgEventHdr,
|
||||
(UINT8*)PcdGetPtr (PcdFirmwareVersionString)
|
||||
(UINT8 *)PcdGetPtr (PcdFirmwareVersionString)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -534,8 +536,8 @@ MeasureCRTMVersion (
|
||||
**/
|
||||
VOID *
|
||||
GetFvName (
|
||||
IN EFI_PHYSICAL_ADDRESS FvBase,
|
||||
IN UINT64 FvLength
|
||||
IN EFI_PHYSICAL_ADDRESS FvBase,
|
||||
IN UINT64 FvLength
|
||||
)
|
||||
{
|
||||
EFI_FIRMWARE_VOLUME_HEADER *FvHeader;
|
||||
@@ -544,20 +546,24 @@ GetFvName (
|
||||
if (FvBase >= MAX_ADDRESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (FvLength >= MAX_ADDRESS - FvBase) {
|
||||
return NULL;
|
||||
}
|
||||
if (FvLength < sizeof(EFI_FIRMWARE_VOLUME_HEADER)) {
|
||||
|
||||
if (FvLength < sizeof (EFI_FIRMWARE_VOLUME_HEADER)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvBase;
|
||||
if (FvHeader->ExtHeaderOffset < sizeof(EFI_FIRMWARE_VOLUME_HEADER)) {
|
||||
if (FvHeader->ExtHeaderOffset < sizeof (EFI_FIRMWARE_VOLUME_HEADER)) {
|
||||
return NULL;
|
||||
}
|
||||
if (FvHeader->ExtHeaderOffset + sizeof(EFI_FIRMWARE_VOLUME_EXT_HEADER) > FvLength) {
|
||||
|
||||
if (FvHeader->ExtHeaderOffset + sizeof (EFI_FIRMWARE_VOLUME_EXT_HEADER) > FvLength) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
FvExtHeader = (EFI_FIRMWARE_VOLUME_EXT_HEADER *)(UINTN)(FvBase + FvHeader->ExtHeaderOffset);
|
||||
|
||||
return &FvExtHeader->FvName;
|
||||
@@ -578,45 +584,46 @@ GetFvName (
|
||||
**/
|
||||
EFI_STATUS
|
||||
MeasureFvImage (
|
||||
IN EFI_PHYSICAL_ADDRESS FvBase,
|
||||
IN UINT64 FvLength
|
||||
IN EFI_PHYSICAL_ADDRESS FvBase,
|
||||
IN UINT64 FvLength
|
||||
)
|
||||
{
|
||||
UINT32 Index;
|
||||
EFI_STATUS Status;
|
||||
EFI_PLATFORM_FIRMWARE_BLOB FvBlob;
|
||||
FV_HANDOFF_TABLE_POINTERS2 FvBlob2;
|
||||
VOID *EventData;
|
||||
VOID *FvName;
|
||||
TCG_PCR_EVENT_HDR TcgEventHdr;
|
||||
UINT32 Instance;
|
||||
UINT32 Tpm2HashMask;
|
||||
TPML_DIGEST_VALUES DigestList;
|
||||
UINT32 DigestCount;
|
||||
EFI_PEI_FIRMWARE_VOLUME_INFO_MEASUREMENT_EXCLUDED_PPI *MeasurementExcludedFvPpi;
|
||||
EDKII_PEI_FIRMWARE_VOLUME_INFO_PREHASHED_FV_PPI *PrehashedFvPpi;
|
||||
HASH_INFO *PreHashInfo;
|
||||
UINT32 HashAlgoMask;
|
||||
EFI_PHYSICAL_ADDRESS FvOrgBase;
|
||||
EFI_PHYSICAL_ADDRESS FvDataBase;
|
||||
EFI_PEI_HOB_POINTERS Hob;
|
||||
EDKII_MIGRATED_FV_INFO *MigratedFvInfo;
|
||||
UINT32 Index;
|
||||
EFI_STATUS Status;
|
||||
EFI_PLATFORM_FIRMWARE_BLOB FvBlob;
|
||||
FV_HANDOFF_TABLE_POINTERS2 FvBlob2;
|
||||
VOID *EventData;
|
||||
VOID *FvName;
|
||||
TCG_PCR_EVENT_HDR TcgEventHdr;
|
||||
UINT32 Instance;
|
||||
UINT32 Tpm2HashMask;
|
||||
TPML_DIGEST_VALUES DigestList;
|
||||
UINT32 DigestCount;
|
||||
EFI_PEI_FIRMWARE_VOLUME_INFO_MEASUREMENT_EXCLUDED_PPI *MeasurementExcludedFvPpi;
|
||||
EDKII_PEI_FIRMWARE_VOLUME_INFO_PREHASHED_FV_PPI *PrehashedFvPpi;
|
||||
HASH_INFO *PreHashInfo;
|
||||
UINT32 HashAlgoMask;
|
||||
EFI_PHYSICAL_ADDRESS FvOrgBase;
|
||||
EFI_PHYSICAL_ADDRESS FvDataBase;
|
||||
EFI_PEI_HOB_POINTERS Hob;
|
||||
EDKII_MIGRATED_FV_INFO *MigratedFvInfo;
|
||||
|
||||
//
|
||||
// Check Excluded FV list
|
||||
//
|
||||
Instance = 0;
|
||||
do {
|
||||
Status = PeiServicesLocatePpi(
|
||||
&gEfiPeiFirmwareVolumeInfoMeasurementExcludedPpiGuid,
|
||||
Instance,
|
||||
NULL,
|
||||
(VOID**)&MeasurementExcludedFvPpi
|
||||
);
|
||||
if (!EFI_ERROR(Status)) {
|
||||
for (Index = 0; Index < MeasurementExcludedFvPpi->Count; Index ++) {
|
||||
if (MeasurementExcludedFvPpi->Fv[Index].FvBase == FvBase
|
||||
&& MeasurementExcludedFvPpi->Fv[Index].FvLength == FvLength) {
|
||||
Status = PeiServicesLocatePpi (
|
||||
&gEfiPeiFirmwareVolumeInfoMeasurementExcludedPpiGuid,
|
||||
Instance,
|
||||
NULL,
|
||||
(VOID **)&MeasurementExcludedFvPpi
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
for (Index = 0; Index < MeasurementExcludedFvPpi->Count; Index++) {
|
||||
if ( (MeasurementExcludedFvPpi->Fv[Index].FvBase == FvBase)
|
||||
&& (MeasurementExcludedFvPpi->Fv[Index].FvLength == FvLength))
|
||||
{
|
||||
DEBUG ((DEBUG_INFO, "The FV which is excluded by Tcg2Pei starts at: 0x%x\n", FvBase));
|
||||
DEBUG ((DEBUG_INFO, "The FV which is excluded by Tcg2Pei has the size: 0x%x\n", FvLength));
|
||||
return EFI_SUCCESS;
|
||||
@@ -625,13 +632,13 @@ MeasureFvImage (
|
||||
|
||||
Instance++;
|
||||
}
|
||||
} while (!EFI_ERROR(Status));
|
||||
} while (!EFI_ERROR (Status));
|
||||
|
||||
//
|
||||
// Check measured FV list
|
||||
//
|
||||
for (Index = 0; Index < mMeasuredBaseFvIndex; Index ++) {
|
||||
if (mMeasuredBaseFvInfo[Index].BlobBase == FvBase && mMeasuredBaseFvInfo[Index].BlobLength == FvLength) {
|
||||
for (Index = 0; Index < mMeasuredBaseFvIndex; Index++) {
|
||||
if ((mMeasuredBaseFvInfo[Index].BlobBase == FvBase) && (mMeasuredBaseFvInfo[Index].BlobLength == FvLength)) {
|
||||
DEBUG ((DEBUG_INFO, "The FV which is already measured by Tcg2Pei starts at: 0x%x\n", FvBase));
|
||||
DEBUG ((DEBUG_INFO, "The FV which is already measured by Tcg2Pei has the size: 0x%x\n", FvLength));
|
||||
return EFI_SUCCESS;
|
||||
@@ -648,23 +655,23 @@ MeasureFvImage (
|
||||
&gEdkiiPeiFirmwareVolumeInfoPrehashedFvPpiGuid,
|
||||
Instance,
|
||||
NULL,
|
||||
(VOID**)&PrehashedFvPpi
|
||||
(VOID **)&PrehashedFvPpi
|
||||
);
|
||||
if (!EFI_ERROR(Status) && PrehashedFvPpi->FvBase == FvBase && PrehashedFvPpi->FvLength == FvLength) {
|
||||
ZeroMem (&DigestList, sizeof(TPML_DIGEST_VALUES));
|
||||
if (!EFI_ERROR (Status) && (PrehashedFvPpi->FvBase == FvBase) && (PrehashedFvPpi->FvLength == FvLength)) {
|
||||
ZeroMem (&DigestList, sizeof (TPML_DIGEST_VALUES));
|
||||
|
||||
//
|
||||
// The FV is prehashed, check against TPM hash mask
|
||||
//
|
||||
PreHashInfo = (HASH_INFO *)(PrehashedFvPpi + 1);
|
||||
for (Index = 0, DigestCount = 0; Index < PrehashedFvPpi->Count; Index++) {
|
||||
DEBUG((DEBUG_INFO, "Hash Algo ID in PrehashedFvPpi=0x%x\n", PreHashInfo->HashAlgoId));
|
||||
HashAlgoMask = GetHashMaskFromAlgo(PreHashInfo->HashAlgoId);
|
||||
DEBUG ((DEBUG_INFO, "Hash Algo ID in PrehashedFvPpi=0x%x\n", PreHashInfo->HashAlgoId));
|
||||
HashAlgoMask = GetHashMaskFromAlgo (PreHashInfo->HashAlgoId);
|
||||
if ((Tpm2HashMask & HashAlgoMask) != 0 ) {
|
||||
//
|
||||
// Hash is required, copy it to DigestList
|
||||
//
|
||||
WriteUnaligned16(&(DigestList.digests[DigestCount].hashAlg), PreHashInfo->HashAlgoId);
|
||||
WriteUnaligned16 (&(DigestList.digests[DigestCount].hashAlg), PreHashInfo->HashAlgoId);
|
||||
CopyMem (
|
||||
&DigestList.digests[DigestCount].digest,
|
||||
PreHashInfo + 1,
|
||||
@@ -676,32 +683,35 @@ MeasureFvImage (
|
||||
//
|
||||
Tpm2HashMask &= ~HashAlgoMask;
|
||||
}
|
||||
|
||||
PreHashInfo = (HASH_INFO *)((UINT8 *)(PreHashInfo + 1) + PreHashInfo->HashSize);
|
||||
}
|
||||
|
||||
WriteUnaligned32(&DigestList.count, DigestCount);
|
||||
WriteUnaligned32 (&DigestList.count, DigestCount);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
Instance++;
|
||||
} while (!EFI_ERROR(Status));
|
||||
} while (!EFI_ERROR (Status));
|
||||
|
||||
//
|
||||
// Search the matched migration FV info
|
||||
//
|
||||
FvOrgBase = FvBase;
|
||||
FvDataBase = FvBase;
|
||||
Hob.Raw = GetFirstGuidHob (&gEdkiiMigratedFvInfoGuid);
|
||||
Hob.Raw = GetFirstGuidHob (&gEdkiiMigratedFvInfoGuid);
|
||||
while (Hob.Raw != NULL) {
|
||||
MigratedFvInfo = GET_GUID_HOB_DATA (Hob);
|
||||
if ((MigratedFvInfo->FvNewBase == (UINT32) FvBase) && (MigratedFvInfo->FvLength == (UINT32) FvLength)) {
|
||||
if ((MigratedFvInfo->FvNewBase == (UINT32)FvBase) && (MigratedFvInfo->FvLength == (UINT32)FvLength)) {
|
||||
//
|
||||
// Found the migrated FV info
|
||||
//
|
||||
FvOrgBase = (EFI_PHYSICAL_ADDRESS) (UINTN) MigratedFvInfo->FvOrgBase;
|
||||
FvDataBase = (EFI_PHYSICAL_ADDRESS) (UINTN) MigratedFvInfo->FvDataBase;
|
||||
FvOrgBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase;
|
||||
FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase;
|
||||
break;
|
||||
}
|
||||
|
||||
Hob.Raw = GET_NEXT_HOB (Hob);
|
||||
Hob.Raw = GetNextGuidHob (&gEdkiiMigratedFvInfoGuid, Hob.Raw);
|
||||
}
|
||||
@@ -709,13 +719,14 @@ MeasureFvImage (
|
||||
//
|
||||
// Init the log event for FV measurement
|
||||
//
|
||||
if (PcdGet32(PcdTcgPfpMeasurementRevision) >= TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105) {
|
||||
FvBlob2.BlobDescriptionSize = sizeof(FvBlob2.BlobDescription);
|
||||
CopyMem (FvBlob2.BlobDescription, FV_HANDOFF_TABLE_DESC, sizeof(FvBlob2.BlobDescription));
|
||||
if (PcdGet32 (PcdTcgPfpMeasurementRevision) >= TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105) {
|
||||
FvBlob2.BlobDescriptionSize = sizeof (FvBlob2.BlobDescription);
|
||||
CopyMem (FvBlob2.BlobDescription, FV_HANDOFF_TABLE_DESC, sizeof (FvBlob2.BlobDescription));
|
||||
FvName = GetFvName (FvBase, FvLength);
|
||||
if (FvName != NULL) {
|
||||
AsciiSPrint ((CHAR8 *)FvBlob2.BlobDescription, sizeof(FvBlob2.BlobDescription), "Fv(%g)", FvName);
|
||||
AsciiSPrint ((CHAR8 *)FvBlob2.BlobDescription, sizeof (FvBlob2.BlobDescription), "Fv(%g)", FvName);
|
||||
}
|
||||
|
||||
FvBlob2.BlobBase = FvOrgBase;
|
||||
FvBlob2.BlobLength = FvLength;
|
||||
TcgEventHdr.PCRIndex = 0;
|
||||
@@ -739,8 +750,8 @@ MeasureFvImage (
|
||||
Status = HashLogExtendEvent (
|
||||
&mEdkiiTcgPpi,
|
||||
EDKII_TCG_PRE_HASH,
|
||||
(UINT8*) &DigestList, // HashData
|
||||
(UINTN) sizeof(DigestList), // HashDataLen
|
||||
(UINT8 *)&DigestList, // HashData
|
||||
(UINTN)sizeof (DigestList), // HashDataLen
|
||||
&TcgEventHdr, // EventHdr
|
||||
EventData // EventData
|
||||
);
|
||||
@@ -753,16 +764,16 @@ MeasureFvImage (
|
||||
Status = HashLogExtendEvent (
|
||||
&mEdkiiTcgPpi,
|
||||
0,
|
||||
(UINT8*) (UINTN) FvDataBase, // HashData
|
||||
(UINTN) FvLength, // HashDataLen
|
||||
&TcgEventHdr, // EventHdr
|
||||
EventData // EventData
|
||||
(UINT8 *)(UINTN)FvDataBase, // HashData
|
||||
(UINTN)FvLength, // HashDataLen
|
||||
&TcgEventHdr, // EventHdr
|
||||
EventData // EventData
|
||||
);
|
||||
DEBUG ((DEBUG_INFO, "The FV which is measured by Tcg2Pei starts at: 0x%x\n", FvBase));
|
||||
DEBUG ((DEBUG_INFO, "The FV which is measured by Tcg2Pei has the size: 0x%x\n", FvLength));
|
||||
}
|
||||
|
||||
if (EFI_ERROR(Status)) {
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((DEBUG_ERROR, "The FV which failed to be measured starts at: 0x%x\n", FvBase));
|
||||
return Status;
|
||||
}
|
||||
@@ -800,10 +811,10 @@ MeasureMainBios (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_PEI_FV_HANDLE VolumeHandle;
|
||||
EFI_FV_INFO VolumeInfo;
|
||||
EFI_PEI_FIRMWARE_VOLUME_PPI *FvPpi;
|
||||
EFI_STATUS Status;
|
||||
EFI_PEI_FV_HANDLE VolumeHandle;
|
||||
EFI_FV_INFO VolumeInfo;
|
||||
EFI_PEI_FIRMWARE_VOLUME_PPI *FvPpi;
|
||||
|
||||
PERF_START_EX (mFileHandle, "EventRec", "Tcg2Pei", 0, PERF_ID_TCG2_PEI);
|
||||
|
||||
@@ -830,11 +841,11 @@ MeasureMainBios (
|
||||
&VolumeInfo.FvFormat,
|
||||
0,
|
||||
NULL,
|
||||
(VOID**)&FvPpi
|
||||
(VOID **)&FvPpi
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
Status = MeasureFvImage ((EFI_PHYSICAL_ADDRESS) (UINTN) VolumeInfo.FvStart, VolumeInfo.FvSize);
|
||||
Status = MeasureFvImage ((EFI_PHYSICAL_ADDRESS)(UINTN)VolumeInfo.FvStart, VolumeInfo.FvSize);
|
||||
|
||||
PERF_END_EX (mFileHandle, "EventRec", "Tcg2Pei", 0, PERF_ID_TCG2_PEI + 1);
|
||||
|
||||
@@ -855,9 +866,9 @@ MeasureMainBios (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FirmwareVolumeInfoPpiNotifyCallback (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
)
|
||||
{
|
||||
EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *Fv;
|
||||
@@ -865,7 +876,7 @@ FirmwareVolumeInfoPpiNotifyCallback (
|
||||
EFI_PEI_FIRMWARE_VOLUME_PPI *FvPpi;
|
||||
UINTN Index;
|
||||
|
||||
Fv = (EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *) Ppi;
|
||||
Fv = (EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *)Ppi;
|
||||
|
||||
//
|
||||
// The PEI Core can not dispatch or load files from memory mapped FVs that do not support FvPpi.
|
||||
@@ -874,7 +885,7 @@ FirmwareVolumeInfoPpiNotifyCallback (
|
||||
&Fv->FvFormat,
|
||||
0,
|
||||
NULL,
|
||||
(VOID**)&FvPpi
|
||||
(VOID **)&FvPpi
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return EFI_SUCCESS;
|
||||
@@ -884,8 +895,7 @@ FirmwareVolumeInfoPpiNotifyCallback (
|
||||
// This is an FV from an FFS file, and the parent FV must have already been measured,
|
||||
// No need to measure twice, so just record the FV and return
|
||||
//
|
||||
if (Fv->ParentFvName != NULL || Fv->ParentFileName != NULL ) {
|
||||
|
||||
if ((Fv->ParentFvName != NULL) || (Fv->ParentFileName != NULL)) {
|
||||
if (mMeasuredChildFvIndex >= mMeasuredMaxChildFvIndex) {
|
||||
mMeasuredChildFvInfo = ReallocatePool (
|
||||
sizeof (EFI_PLATFORM_FIRMWARE_BLOB) * mMeasuredMaxChildFvIndex,
|
||||
@@ -895,21 +905,23 @@ FirmwareVolumeInfoPpiNotifyCallback (
|
||||
ASSERT (mMeasuredChildFvInfo != NULL);
|
||||
mMeasuredMaxChildFvIndex = mMeasuredMaxChildFvIndex + FIRMWARE_BLOB_GROWTH_STEP;
|
||||
}
|
||||
|
||||
//
|
||||
// Check whether FV is in the measured child FV list.
|
||||
//
|
||||
for (Index = 0; Index < mMeasuredChildFvIndex; Index++) {
|
||||
if (mMeasuredChildFvInfo[Index].BlobBase == (EFI_PHYSICAL_ADDRESS) (UINTN) Fv->FvInfo) {
|
||||
if (mMeasuredChildFvInfo[Index].BlobBase == (EFI_PHYSICAL_ADDRESS)(UINTN)Fv->FvInfo) {
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
}
|
||||
mMeasuredChildFvInfo[mMeasuredChildFvIndex].BlobBase = (EFI_PHYSICAL_ADDRESS) (UINTN) Fv->FvInfo;
|
||||
|
||||
mMeasuredChildFvInfo[mMeasuredChildFvIndex].BlobBase = (EFI_PHYSICAL_ADDRESS)(UINTN)Fv->FvInfo;
|
||||
mMeasuredChildFvInfo[mMeasuredChildFvIndex].BlobLength = Fv->FvInfoSize;
|
||||
mMeasuredChildFvIndex++;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
return MeasureFvImage ((EFI_PHYSICAL_ADDRESS) (UINTN) Fv->FvInfo, Fv->FvInfoSize);
|
||||
return MeasureFvImage ((EFI_PHYSICAL_ADDRESS)(UINTN)Fv->FvInfo, Fv->FvInfoSize);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -924,10 +936,10 @@ FirmwareVolumeInfoPpiNotifyCallback (
|
||||
**/
|
||||
EFI_STATUS
|
||||
PeimEntryMP (
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// install Tcg Services
|
||||
@@ -940,7 +952,7 @@ PeimEntryMP (
|
||||
}
|
||||
|
||||
Status = MeasureMainBios ();
|
||||
if (EFI_ERROR(Status)) {
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
@@ -966,20 +978,20 @@ PeimEntryMP (
|
||||
**/
|
||||
EFI_STATUS
|
||||
MeasureSeparatorEventWithError (
|
||||
IN TPM_PCRINDEX PCRIndex
|
||||
IN TPM_PCRINDEX PCRIndex
|
||||
)
|
||||
{
|
||||
TCG_PCR_EVENT_HDR TcgEvent;
|
||||
UINT32 EventData;
|
||||
TCG_PCR_EVENT_HDR TcgEvent;
|
||||
UINT32 EventData;
|
||||
|
||||
//
|
||||
// Use EventData 0x1 to indicate there is error.
|
||||
//
|
||||
EventData = 0x1;
|
||||
EventData = 0x1;
|
||||
TcgEvent.PCRIndex = PCRIndex;
|
||||
TcgEvent.EventType = EV_SEPARATOR;
|
||||
TcgEvent.EventSize = (UINT32)sizeof (EventData);
|
||||
return HashLogExtendEvent(&mEdkiiTcgPpi, 0, (UINT8 *)&EventData, TcgEvent.EventSize, &TcgEvent,(UINT8 *)&EventData);
|
||||
return HashLogExtendEvent (&mEdkiiTcgPpi, 0, (UINT8 *)&EventData, TcgEvent.EventSize, &TcgEvent, (UINT8 *)&EventData);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -994,18 +1006,19 @@ MeasureSeparatorEventWithError (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeimEntryMA (
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status2;
|
||||
EFI_BOOT_MODE BootMode;
|
||||
TPM_PCRINDEX PcrIndex;
|
||||
BOOLEAN S3ErrorReport;
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status2;
|
||||
EFI_BOOT_MODE BootMode;
|
||||
TPM_PCRINDEX PcrIndex;
|
||||
BOOLEAN S3ErrorReport;
|
||||
|
||||
if (CompareGuid (PcdGetPtr(PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceNoneGuid) ||
|
||||
CompareGuid (PcdGetPtr(PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceTpm12Guid)){
|
||||
if (CompareGuid (PcdGetPtr (PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceNoneGuid) ||
|
||||
CompareGuid (PcdGetPtr (PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceTpm12Guid))
|
||||
{
|
||||
DEBUG ((DEBUG_INFO, "No TPM2 instance required!\n"));
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
@@ -1022,10 +1035,10 @@ PeimEntryMA (
|
||||
// In S3 path, skip shadow logic. no measurement is required
|
||||
//
|
||||
if (BootMode != BOOT_ON_S3_RESUME) {
|
||||
Status = (**PeiServices).RegisterForShadow(FileHandle);
|
||||
Status = (**PeiServices).RegisterForShadow (FileHandle);
|
||||
if (Status == EFI_ALREADY_STARTED) {
|
||||
mImageInMemory = TRUE;
|
||||
mFileHandle = FileHandle;
|
||||
mFileHandle = FileHandle;
|
||||
} else if (Status == EFI_NOT_FOUND) {
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
@@ -1045,16 +1058,17 @@ PeimEntryMA (
|
||||
if (PcdGet8 (PcdTpm2InitializationPolicy) == 1) {
|
||||
if (BootMode == BOOT_ON_S3_RESUME) {
|
||||
Status = Tpm2Startup (TPM_SU_STATE);
|
||||
if (EFI_ERROR (Status) ) {
|
||||
if (EFI_ERROR (Status)) {
|
||||
Status = Tpm2Startup (TPM_SU_CLEAR);
|
||||
if (!EFI_ERROR(Status)) {
|
||||
if (!EFI_ERROR (Status)) {
|
||||
S3ErrorReport = TRUE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Status = Tpm2Startup (TPM_SU_CLEAR);
|
||||
}
|
||||
if (EFI_ERROR (Status) ) {
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto Done;
|
||||
}
|
||||
}
|
||||
@@ -1100,19 +1114,20 @@ PeimEntryMA (
|
||||
}
|
||||
|
||||
if (mImageInMemory) {
|
||||
Status = PeimEntryMP ((EFI_PEI_SERVICES**)PeiServices);
|
||||
Status = PeimEntryMP ((EFI_PEI_SERVICES **)PeiServices);
|
||||
return Status;
|
||||
}
|
||||
|
||||
Done:
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((DEBUG_ERROR, "TPM2 error! Build Hob\n"));
|
||||
BuildGuidHob (&gTpmErrorHobGuid,0);
|
||||
BuildGuidHob (&gTpmErrorHobGuid, 0);
|
||||
REPORT_STATUS_CODE (
|
||||
EFI_ERROR_CODE | EFI_ERROR_MINOR,
|
||||
(PcdGet32 (PcdStatusCodeSubClassTpmDevice) | EFI_P_EC_INTERFACE_ERROR)
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Always install TpmInitializationDonePpi no matter success or fail.
|
||||
// Other driver can know TPM initialization state by TpmInitializedPpi.
|
||||
|
Reference in New Issue
Block a user