]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c
SecurityPkg: Tcg2Smm: Fix incompatible change
[mirror_edk2.git] / SecurityPkg / Tcg / Tcg2Smm / Tcg2Smm.c
index e8880585449278b5e775d9ea2c6daca163af841e..0c3b19ca74cc894fc94d30b840f47e2857d983bb 100644 (file)
@@ -83,7 +83,8 @@ EFI_TPM2_ACPI_TABLE  mTpm2AcpiTemplate = {
     // These fields should be filled in in production\r
     //\r
   },\r
-  0, // Flags\r
+  0, // BIT0~15:  PlatformClass\r
+     // BIT16~31: Reserved\r
   0, // Control Area\r
   EFI_TPM2_ACPI_TABLE_START_METHOD_TIS, // StartMethod\r
 };\r
@@ -317,7 +318,7 @@ UpdateHID (
 {\r
   EFI_STATUS  Status;\r
   UINT8       *DataPtr;\r
-  CHAR8       HID[TPM_HID_ACPI_SIZE];\r
+  CHAR8       Hid[TPM_HID_ACPI_SIZE];\r
   UINT32      ManufacturerID;\r
   UINT32      FirmwareVersion1;\r
   UINT32      FirmwareVersion2;\r
@@ -328,7 +329,7 @@ UpdateHID (
   //\r
   // Initialize HID with Default PNP string\r
   //\r
-  ZeroMem(HID, TPM_HID_ACPI_SIZE);\r
+  ZeroMem(Hid, TPM_HID_ACPI_SIZE);\r
 \r
   //\r
   // Get Manufacturer ID\r
@@ -337,7 +338,7 @@ UpdateHID (
   if (!EFI_ERROR(Status)) {\r
     DEBUG((EFI_D_INFO, "TPM_PT_MANUFACTURER 0x%08x\n", ManufacturerID));\r
     //\r
-    // ManfacturerID defined in TCG Vendor ID Registry \r
+    // ManufacturerID defined in TCG Vendor ID Registry \r
     // may tailed with 0x00 or 0x20\r
     //\r
     if ((ManufacturerID >> 24) == 0x00 || ((ManufacturerID >> 24) == 0x20)) {\r
@@ -345,13 +346,13 @@ UpdateHID (
       //  HID containing PNP ID "NNN####"\r
       //   NNN is uppercase letter for Vendor ID specified by manufacturer\r
       //\r
-      CopyMem(HID, &ManufacturerID, 3);\r
+      CopyMem(Hid, &ManufacturerID, 3);\r
     } else {\r
       //\r
       //  HID containing ACP ID "NNNN####"\r
       //   NNNN is uppercase letter for Vendor ID specified by manufacturer\r
       //\r
-      CopyMem(HID, &ManufacturerID, 4);\r
+      CopyMem(Hid, &ManufacturerID, 4);\r
       PnpHID = FALSE;\r
     }\r
   } else {\r
@@ -368,9 +369,9 @@ UpdateHID (
     //   #### is Firmware Version 1\r
     //\r
     if (PnpHID) {\r
-      AsciiSPrint(HID + 3, TPM_HID_PNP_SIZE - 3, "%02d%02d", ((FirmwareVersion1 & 0xFFFF0000) >> 16), (FirmwareVersion1 && 0x0000FFFF));\r
+      AsciiSPrint(Hid + 3, TPM_HID_PNP_SIZE - 3, "%02d%02d", ((FirmwareVersion1 & 0xFFFF0000) >> 16), (FirmwareVersion1 & 0x0000FFFF));\r
     } else {\r
-      AsciiSPrint(HID + 4, TPM_HID_ACPI_SIZE - 4, "%02d%02d", ((FirmwareVersion1 & 0xFFFF0000) >> 16), (FirmwareVersion1 && 0x0000FFFF));\r
+      AsciiSPrint(Hid + 4, TPM_HID_ACPI_SIZE - 4, "%02d%02d", ((FirmwareVersion1 & 0xFFFF0000) >> 16), (FirmwareVersion1 & 0x0000FFFF));\r
     }\r
     \r
   } else {\r
@@ -387,16 +388,17 @@ UpdateHID (
        DataPtr += 1) {\r
     if (AsciiStrCmp((CHAR8 *)DataPtr,  TPM_HID_TAG) == 0) {\r
       if (PnpHID) {\r
-        CopyMem(DataPtr, HID, TPM_HID_PNP_SIZE);\r
+        CopyMem(DataPtr, Hid, TPM_HID_PNP_SIZE);\r
         //\r
         // if HID is PNP ID, patch the last byte in HID TAG to Noop\r
         //\r
         *(DataPtr + TPM_HID_PNP_SIZE) = AML_NOOP_OP;\r
       } else {\r
 \r
-        CopyMem(DataPtr, HID, TPM_HID_ACPI_SIZE);\r
+        CopyMem(DataPtr, Hid, TPM_HID_ACPI_SIZE);\r
       }\r
-      DEBUG((EFI_D_INFO, "TPM2 ACPI _HID updated to %a\n", HID));\r
+      DEBUG((DEBUG_INFO, "TPM2 ACPI _HID is patched to %a\n", DataPtr));\r
+\r
       return Status;\r
     }\r
   }\r
@@ -438,6 +440,12 @@ PublishAcpiTable (
   Status = UpdatePPVersion(Table, (CHAR8 *)PcdGetPtr(PcdTcgPhysicalPresenceInterfaceVer));\r
   ASSERT_EFI_ERROR (Status);\r
 \r
+  DEBUG ((\r
+    DEBUG_INFO,\r
+    "Current physical presence interface version - %a\n",\r
+    (CHAR8 *) PcdGetPtr(PcdTcgPhysicalPresenceInterfaceVer)\r
+    ));\r
+\r
   //\r
   // Update TPM2 HID before measuring it to PCR\r
   //\r
@@ -501,6 +509,9 @@ PublishTpm2 (
   EFI_TPM2_ACPI_CONTROL_AREA     *ControlArea;\r
   PTP_INTERFACE_TYPE             InterfaceType;\r
 \r
+  mTpm2AcpiTemplate.Header.Revision = PcdGet8(PcdTpm2AcpiTableRev);\r
+  DEBUG((DEBUG_INFO, "Tpm2 ACPI table revision is %d\n", mTpm2AcpiTemplate.Header.Revision));\r
+\r
   //\r
   // Measure to PCR[0] with event EV_POST_CODE ACPI DATA\r
   //\r