]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/Tcg/TcgSmm/TcgSmm.c
SecurityPkg TcgSmm: Enable Storage actions.
[mirror_edk2.git] / SecurityPkg / Tcg / TcgSmm / TcgSmm.c
index 589bab694b3ad4affbb6aa0bbf322d21653f910e..743b3ebbe1b1182b32a7e6c6005183ea3c21a026 100644 (file)
@@ -55,6 +55,7 @@ PhysicalPresenceCallback (
   EFI_PHYSICAL_PRESENCE          PpData;\r
   EFI_PHYSICAL_PRESENCE_FLAGS    Flags;\r
   BOOLEAN                        RequestConfirmed;\r
+  UINT32                         StorageFlags;\r
 \r
   //\r
   // Get the Physical Presence variable\r
@@ -150,6 +151,11 @@ PhysicalPresenceCallback (
       return EFI_SUCCESS;\r
     }\r
 \r
+    //\r
+    // Get the Physical Presence storage flags\r
+    //\r
+    StorageFlags = TcgPhysicalPresenceStorageLibReturnStorageFlags();\r
+\r
     RequestConfirmed = FALSE;\r
 \r
     switch (mTcgNvs->PPRequestUserConfirm) {\r
@@ -201,6 +207,23 @@ PhysicalPresenceCallback (
         //\r
         mTcgNvs->PhysicalPresence.ReturnCode = TCG_PP_GET_USER_CONFIRMATION_NOT_IMPLEMENTED; \r
         return EFI_SUCCESS;\r
+\r
+      case TCG2_PHYSICAL_PRESENCE_ENABLE_BLOCK_SID:\r
+        if ((StorageFlags & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_ENABLE_BLOCK_SID) == 0) {\r
+          RequestConfirmed = TRUE;\r
+        }\r
+        break;\r
+\r
+      case TCG2_PHYSICAL_PRESENCE_DISABLE_BLOCK_SID:\r
+        if ((StorageFlags & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_DISABLE_BLOCK_SID) == 0) {\r
+          RequestConfirmed = TRUE;\r
+        }\r
+        break;\r
+\r
+      case TCG2_PHYSICAL_PRESENCE_SET_PP_REQUIRED_FOR_ENABLE_BLOCK_SID_FUNC_TRUE:\r
+      case TCG2_PHYSICAL_PRESENCE_SET_PP_REQUIRED_FOR_DISABLE_BLOCK_SID_FUNC_TRUE:\r
+        break;\r
+\r
       default:\r
         break;\r
     }\r