]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add performance optimization for Tcg/TrEE.
authorYao, Jiewen <jiewen.yao@intel.com>
Wed, 4 Mar 2015 01:15:08 +0000 (01:15 +0000)
committerjyao1 <jyao1@Edk2>
Wed, 4 Mar 2015 01:15:08 +0000 (01:15 +0000)
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

SecurityPkg/SecurityPkg.dec
SecurityPkg/Tcg/TcgDxe/TcgDxe.c
SecurityPkg/Tcg/TcgPei/TcgPei.c
SecurityPkg/Tcg/TrEEDxe/TrEEDxe.c
SecurityPkg/Tcg/TrEEPei/TrEEPei.c

index b15cd624010337744757dd6d959c8fc0a2312e1a..11c1d84dc7bdcabe156395bfb0e0ff248ea8a38f 100644 (file)
 # [Error.gEfiSecurityPkgTokenSpaceGuid]\r
 #   0x80000001 | Invalid value provided.\r
 #   0x80000002 | Reserved bits must be set to zero.\r
 # [Error.gEfiSecurityPkgTokenSpaceGuid]\r
 #   0x80000001 | Invalid value provided.\r
 #   0x80000002 | Reserved bits must be set to zero.\r
+#   0x80000003 | Incorrect progress or error code provided.\r
 #\r
 \r
 [PcdsFixedAtBuild, PcdsPatchableInModule]\r
 #\r
 \r
 [PcdsFixedAtBuild, PcdsPatchableInModule]\r
index db7951cd9ad0f66ed26f207d31c2e41d2adef837..f15e94353c686d622836e2f97238c5961df1bce9 100644 (file)
@@ -1355,6 +1355,11 @@ DriverEntry (
     return EFI_UNSUPPORTED;\r
   }\r
 \r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
+  if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {\r
+    DEBUG ((EFI_D_ERROR, "TPM error!\n"));\r
+    return EFI_DEVICE_ERROR;\r
+  }\r
+\r
   mTcgDxeData.TpmHandle = (TIS_TPM_HANDLE)(UINTN)TPM_BASE_ADDRESS;\r
   Status = TisPcRequestUseTpm (mTcgDxeData.TpmHandle);\r
   if (EFI_ERROR (Status)) {\r
   mTcgDxeData.TpmHandle = (TIS_TPM_HANDLE)(UINTN)TPM_BASE_ADDRESS;\r
   Status = TisPcRequestUseTpm (mTcgDxeData.TpmHandle);\r
   if (EFI_ERROR (Status)) {\r
@@ -1362,10 +1367,6 @@ DriverEntry (
     return Status;\r
   }\r
 \r
     return Status;\r
   }\r
 \r
-  if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {\r
-    mTcgDxeData.BsCap.TPMPresentFlag = FALSE;\r
-  }\r
-\r
   Status = GetTpmStatus (&mTcgDxeData.BsCap.TPMDeactivatedFlag);\r
   if (EFI_ERROR (Status)) {\r
     DEBUG ((\r
   Status = GetTpmStatus (&mTcgDxeData.BsCap.TPMDeactivatedFlag);\r
   if (EFI_ERROR (Status)) {\r
     DEBUG ((\r
index 466caf66c21282426c37cb83dfd6eabe298144b4..419eacf37d2ab29aefc7b8f8176a74f82579f9f4 100644 (file)
@@ -752,6 +752,11 @@ PeimEntryMA (
     return EFI_UNSUPPORTED;\r
   }\r
 \r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
+  if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {\r
+    DEBUG ((EFI_D_ERROR, "TPM error!\n"));\r
+    return EFI_DEVICE_ERROR;\r
+  }\r
+\r
   //\r
   // Initialize TPM device\r
   //\r
   //\r
   // Initialize TPM device\r
   //\r
@@ -808,6 +813,14 @@ PeimEntryMA (
   }\r
 \r
 Done:\r
   }\r
 \r
 Done:\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "TPM error! Build Hob\n"));\r
+    BuildGuidHob (&gTpmErrorHobGuid,0);\r
+    REPORT_STATUS_CODE (\r
+      EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
+      (PcdGet32 (PcdStatusCodeSubClassTpmDevice) | EFI_P_EC_INTERFACE_ERROR)\r
+      );\r
+  }\r
   //\r
   // Always intall TpmInitializationDonePpi no matter success or fail.\r
   // Other driver can know TPM initialization state by TpmInitializedPpi.\r
   //\r
   // Always intall TpmInitializationDonePpi no matter success or fail.\r
   // Other driver can know TPM initialization state by TpmInitializedPpi.\r
index 58c4aff819b493594d712bed6ad91c73a6002338..6126bd8761a3def0eaf7ea8ef26494f0ee60ae2d 100644 (file)
@@ -1815,16 +1815,17 @@ DriverEntry (
     return EFI_UNSUPPORTED;\r
   }\r
 \r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
+  if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {\r
+    DEBUG ((EFI_D_ERROR, "TPM2 error!\n"));\r
+    return EFI_DEVICE_ERROR;\r
+  }\r
+  \r
   Status = Tpm2RequestUseTpm ();\r
   if (EFI_ERROR (Status)) {\r
   Status = Tpm2RequestUseTpm ();\r
   if (EFI_ERROR (Status)) {\r
-    DEBUG ((EFI_D_ERROR, "TPM not detected!\n"));\r
+    DEBUG ((EFI_D_ERROR, "TPM2 not detected!\n"));\r
     return Status;\r
   }\r
   \r
     return Status;\r
   }\r
   \r
-  if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {\r
-    mTcgDxeData.BsCap.TrEEPresentFlag = FALSE;\r
-  }\r
-\r
   //\r
   // Fill information\r
   //\r
   //\r
   // Fill information\r
   //\r
index a7bc903436976bc36544db601777d0a57a659447..7a17b0a5da0161d5cc63d283aa910eba66f83d96 100644 (file)
@@ -636,6 +636,11 @@ PeimEntryMA (
     return EFI_UNSUPPORTED;\r
   }\r
 \r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
+  if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {\r
+    DEBUG ((EFI_D_ERROR, "TPM2 error!\n"));\r
+    return EFI_DEVICE_ERROR;\r
+  }\r
+\r
   Status = PeiServicesGetBootMode (&BootMode);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   Status = PeiServicesGetBootMode (&BootMode);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -701,6 +706,14 @@ PeimEntryMA (
   }\r
 \r
 Done:\r
   }\r
 \r
 Done:\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "TPM2 error! Build Hob\n"));\r
+    BuildGuidHob (&gTpmErrorHobGuid,0);\r
+    REPORT_STATUS_CODE (\r
+      EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
+      (PcdGet32 (PcdStatusCodeSubClassTpmDevice) | EFI_P_EC_INTERFACE_ERROR)\r
+      );\r
+  }\r
   //\r
   // Always intall TpmInitializationDonePpi no matter success or fail.\r
   // Other driver can know TPM initialization state by TpmInitializedPpi.\r
   //\r
   // Always intall TpmInitializationDonePpi no matter success or fail.\r
   // Other driver can know TPM initialization state by TpmInitializedPpi.\r