mirror of https://github.com/acidanthera/audk.git
Add performance optimization for Tcg/TrEE.
Add error check for Tcg/TrEE Pei/Dxe driver to avoid unnecessary hardware check for performance optimization. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Yao, Jiewen" <jiewen.yao@intel.com> Reviewed-by: "Zeng, Star" <star.zeng@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17004 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
4c9ed23eb6
commit
3dd05ac3e6
|
@ -192,6 +192,7 @@
|
|||
# [Error.gEfiSecurityPkgTokenSpaceGuid]
|
||||
# 0x80000001 | Invalid value provided.
|
||||
# 0x80000002 | Reserved bits must be set to zero.
|
||||
# 0x80000003 | Incorrect progress or error code provided.
|
||||
#
|
||||
|
||||
[PcdsFixedAtBuild, PcdsPatchableInModule]
|
||||
|
|
|
@ -1355,6 +1355,11 @@ DriverEntry (
|
|||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {
|
||||
DEBUG ((EFI_D_ERROR, "TPM error!\n"));
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
mTcgDxeData.TpmHandle = (TIS_TPM_HANDLE)(UINTN)TPM_BASE_ADDRESS;
|
||||
Status = TisPcRequestUseTpm (mTcgDxeData.TpmHandle);
|
||||
if (EFI_ERROR (Status)) {
|
||||
|
@ -1362,10 +1367,6 @@ DriverEntry (
|
|||
return Status;
|
||||
}
|
||||
|
||||
if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {
|
||||
mTcgDxeData.BsCap.TPMPresentFlag = FALSE;
|
||||
}
|
||||
|
||||
Status = GetTpmStatus (&mTcgDxeData.BsCap.TPMDeactivatedFlag);
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((
|
||||
|
|
|
@ -752,6 +752,11 @@ PeimEntryMA (
|
|||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {
|
||||
DEBUG ((EFI_D_ERROR, "TPM error!\n"));
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
//
|
||||
// Initialize TPM device
|
||||
//
|
||||
|
@ -808,6 +813,14 @@ PeimEntryMA (
|
|||
}
|
||||
|
||||
Done:
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_ERROR, "TPM error! Build Hob\n"));
|
||||
BuildGuidHob (&gTpmErrorHobGuid,0);
|
||||
REPORT_STATUS_CODE (
|
||||
EFI_ERROR_CODE | EFI_ERROR_MINOR,
|
||||
(PcdGet32 (PcdStatusCodeSubClassTpmDevice) | EFI_P_EC_INTERFACE_ERROR)
|
||||
);
|
||||
}
|
||||
//
|
||||
// Always intall TpmInitializationDonePpi no matter success or fail.
|
||||
// Other driver can know TPM initialization state by TpmInitializedPpi.
|
||||
|
|
|
@ -1815,14 +1815,15 @@ DriverEntry (
|
|||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
Status = Tpm2RequestUseTpm ();
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_ERROR, "TPM not detected!\n"));
|
||||
return Status;
|
||||
if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {
|
||||
DEBUG ((EFI_D_ERROR, "TPM2 error!\n"));
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {
|
||||
mTcgDxeData.BsCap.TrEEPresentFlag = FALSE;
|
||||
Status = Tpm2RequestUseTpm ();
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_ERROR, "TPM2 not detected!\n"));
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -636,6 +636,11 @@ PeimEntryMA (
|
|||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {
|
||||
DEBUG ((EFI_D_ERROR, "TPM2 error!\n"));
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
Status = PeiServicesGetBootMode (&BootMode);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
|
@ -701,6 +706,14 @@ PeimEntryMA (
|
|||
}
|
||||
|
||||
Done:
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_ERROR, "TPM2 error! Build Hob\n"));
|
||||
BuildGuidHob (&gTpmErrorHobGuid,0);
|
||||
REPORT_STATUS_CODE (
|
||||
EFI_ERROR_CODE | EFI_ERROR_MINOR,
|
||||
(PcdGet32 (PcdStatusCodeSubClassTpmDevice) | EFI_P_EC_INTERFACE_ERROR)
|
||||
);
|
||||
}
|
||||
//
|
||||
// Always intall TpmInitializationDonePpi no matter success or fail.
|
||||
// Other driver can know TPM initialization state by TpmInitializedPpi.
|
||||
|
|
Loading…
Reference in New Issue