X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=SecurityPkg%2FTcg%2FTcg2Smm%2FTcg2Smm.c;h=5a1fd3e363c7202375b93c0feb389d4da1686ca1;hp=1df2da8688f8064e779db103f6c9069823906fba;hb=bf3b7aae7100b60ff8a387f0b7604dbb6ff29fc9;hpb=363dc42226a1d8ae02c73f9dd81da65af91b5fdd diff --git a/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c b/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c index 1df2da8688..5a1fd3e363 100644 --- a/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c +++ b/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c @@ -77,14 +77,14 @@ EFI_TPM2_ACPI_TABLE mTpm2AcpiTemplate = { { EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE, sizeof (mTpm2AcpiTemplate), - EFI_TPM2_ACPI_TABLE_REVISION_4, + EFI_TPM2_ACPI_TABLE_REVISION, // // Compiler initializes the remaining bytes to 0 // These fields should be filled in in production // }, - 0, // 16-bit PlatformClass - 0, // 16-bit Reserved + 0, // BIT0~15: PlatformClass + // BIT16~31: Reserved 0, // Control Area EFI_TPM2_ACPI_TABLE_START_METHOD_TIS, // StartMethod }; @@ -512,6 +512,16 @@ PublishTpm2 ( mTpm2AcpiTemplate.Header.Revision = PcdGet8(PcdTpm2AcpiTableRev); DEBUG((DEBUG_INFO, "Tpm2 ACPI table revision is %d\n", mTpm2AcpiTemplate.Header.Revision)); + // + // PlatformClass is only valid for version 4 and above + // BIT0~15: PlatformClass + // BIT16~31: Reserved + // + if (mTpm2AcpiTemplate.Header.Revision >= EFI_TPM2_ACPI_TABLE_REVISION_4) { + mTpm2AcpiTemplate.Flags = (mTpm2AcpiTemplate.Flags & 0xFFFF0000) | PcdGet8(PcdTpmPlatformClass); + DEBUG((DEBUG_INFO, "Tpm2 ACPI table PlatformClass is %d\n", (mTpm2AcpiTemplate.Flags & 0x0000FFFF))); + } + // // Measure to PCR[0] with event EV_POST_CODE ACPI DATA //