]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/Tcg/TrEEConfig/TrEEConfigPeim.c
Fix current TPM device string missing. Use efivarstore instead of varstor, remove...
[mirror_edk2.git] / SecurityPkg / Tcg / TrEEConfig / TrEEConfigPeim.c
index 77d640dd443a3bcf58187c67b711181cd354f3fb..9c1e917ab41bc669bae43f542f370d3d0fe2822e 100644 (file)
@@ -94,8 +94,8 @@ TrEEConfigPeimEntryPoint (
   //\r
   // Validation\r
   //\r
-  if (TrEEConfiguration.TpmDevice > TPM_DEVICE_MAX) {\r
-    TrEEConfiguration.TpmDevice   = TPM_DEVICE_DEFAULT;\r
+  if ((TrEEConfiguration.TpmDevice > TPM_DEVICE_MAX) || (TrEEConfiguration.TpmDevice < TPM_DEVICE_MIN)) {\r
+    TrEEConfiguration.TpmDevice = TPM_DEVICE_DEFAULT;\r
   }\r
 \r
   //\r
@@ -105,8 +105,12 @@ TrEEConfigPeimEntryPoint (
 \r
   if (PcdGetBool (PcdTpmAutoDetection)) {\r
     TpmDevice = DetectTpmDevice (TrEEConfiguration.TpmDevice);\r
-    DEBUG ((EFI_D_ERROR, "TrEEConfiguration.TpmDevice final: %x\n", TpmDevice));\r
-    TrEEConfiguration.TpmDevice = TpmDevice;\r
+    DEBUG ((EFI_D_ERROR, "TpmDevice final: %x\n", TpmDevice));\r
+    if (TpmDevice != TPM_DEVICE_NULL) {\r
+      TrEEConfiguration.TpmDevice = TpmDevice;\r
+    }\r
+  } else {\r
+    TpmDevice = TrEEConfiguration.TpmDevice;\r
   }\r
 \r
   //\r
@@ -114,11 +118,14 @@ TrEEConfigPeimEntryPoint (
   // This is work-around because there is no gurantee DynamicHiiPcd can return correct value in DXE phase.\r
   // Using DynamicPcd instead.\r
   //\r
+  // NOTE: TrEEConfiguration variable contains the desired TpmDevice type,\r
+  // while PcdTpmInstanceGuid PCD contains the real detected TpmDevice type\r
+  //\r
   for (Index = 0; Index < sizeof(mTpmInstanceId)/sizeof(mTpmInstanceId[0]); Index++) {\r
-    if (TrEEConfiguration.TpmDevice == mTpmInstanceId[Index].TpmDevice) {\r
+    if (TpmDevice == mTpmInstanceId[Index].TpmDevice) {\r
       Size = sizeof(mTpmInstanceId[Index].TpmInstanceGuid);\r
       PcdSetPtr (PcdTpmInstanceGuid, &Size, &mTpmInstanceId[Index].TpmInstanceGuid);\r
-      DEBUG ((EFI_D_ERROR, "TrEEConfiguration.TpmDevice PCD: %g\n", &mTpmInstanceId[Index].TpmInstanceGuid));\r
+      DEBUG ((EFI_D_ERROR, "TpmDevice PCD: %g\n", &mTpmInstanceId[Index].TpmInstanceGuid));\r
       break;\r
     }\r
   }\r