- DEBUG ((DEBUG_INFO, "%a: no TPM2 detected\n", __FUNCTION__));\r
- //\r
- // If no TPM2 was detected, we still need to install\r
- // TpmInitializationDonePpi. Namely, Tcg2Pei will exit early upon seeing\r
- // the default (all-bits-zero) contents of PcdTpmInstanceGuid, thus we have\r
- // to install the PPI in its place, in order to unblock any dependent\r
- // PEIMs.\r
- //\r
- Status = PeiServicesInstallPpi (&mTpmInitializationDonePpiList);\r
- ASSERT_EFI_ERROR (Status);\r
+ Status = Tpm2RequestUseTpm ();\r
+ if (!EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_INFO, "%a: TPM2 detected\n", __FUNCTION__));\r
+ Size = sizeof (gEfiTpmDeviceInstanceTpm20DtpmGuid);\r
+ Status = PcdSetPtrS (\r
+ PcdTpmInstanceGuid,\r
+ &Size,\r
+ &gEfiTpmDeviceInstanceTpm20DtpmGuid\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ } else {\r
+ DEBUG ((DEBUG_INFO, "%a: no TPM detected\n", __FUNCTION__));\r
+ //\r
+ // If no TPM2 was detected, we still need to install\r
+ // TpmInitializationDonePpi. Namely, Tcg2Pei will exit early upon seeing\r
+ // the default (all-bits-zero) contents of PcdTpmInstanceGuid, thus we have\r
+ // to install the PPI in its place, in order to unblock any dependent\r
+ // PEIMs.\r
+ //\r
+ Status = PeiServicesInstallPpi (&mTpmInitializationDonePpiList);\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r