VOID\r
)\r
{\r
- UINT32 PpStorageFlag;\r
- EFI_STRING NewString;\r
+ EFI_STATUS Status;\r
+ OPAL_EXTRA_INFO_VAR OpalExtraInfo;\r
+ UINTN DataSize;\r
\r
gHiiConfiguration.NumDisks = GetDeviceCount();\r
\r
- //\r
- // Update the BlockSID status string.\r
- //\r
- PpStorageFlag = TcgPhysicalPresenceStorageLibReturnStorageFlags();\r
-\r
- if ((PpStorageFlag & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_ENABLE_BLOCK_SID) != 0) {\r
- NewString = HiiGetString (gHiiPackageListHandle, STRING_TOKEN(STR_ENABLED), NULL);\r
- if (NewString == NULL) {\r
- DEBUG ((DEBUG_INFO, "HiiSetCurrentConfiguration: HiiGetString( ) failed\n"));\r
- return;\r
- }\r
- } else {\r
- NewString = HiiGetString (gHiiPackageListHandle, STRING_TOKEN(STR_DISABLED), NULL);\r
- if (NewString == NULL) {\r
- DEBUG ((DEBUG_INFO, "HiiSetCurrentConfiguration: HiiGetString( ) failed\n"));\r
- return;\r
- }\r
- }\r
- HiiSetString(gHiiPackageListHandle, STRING_TOKEN(STR_BLOCKSID_STATUS1), NewString, NULL);\r
- FreePool (NewString);\r
-\r
- if ((PpStorageFlag & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_ENABLE_BLOCK_SID) != 0) {\r
- NewString = HiiGetString (gHiiPackageListHandle, STRING_TOKEN(STR_DISK_INFO_ENABLE_BLOCKSID_TRUE), NULL);\r
- if (NewString == NULL) {\r
- DEBUG ((DEBUG_INFO, "HiiSetCurrentConfiguration: HiiGetString( ) failed\n"));\r
- return;\r
- }\r
- } else {\r
- NewString = HiiGetString (gHiiPackageListHandle, STRING_TOKEN(STR_DISK_INFO_ENABLE_BLOCKSID_FALSE), NULL);\r
- if (NewString == NULL) {\r
- DEBUG ((DEBUG_INFO, "HiiSetCurrentConfiguration: HiiGetString( ) failed\n"));\r
- return;\r
- }\r
- }\r
- HiiSetString(gHiiPackageListHandle, STRING_TOKEN(STR_BLOCKSID_STATUS2), NewString, NULL);\r
- FreePool (NewString);\r
-\r
- if ((PpStorageFlag & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_DISABLE_BLOCK_SID) != 0) {\r
- NewString = HiiGetString (gHiiPackageListHandle, STRING_TOKEN(STR_DISK_INFO_DISABLE_BLOCKSID_TRUE), NULL);\r
- if (NewString == NULL) {\r
- DEBUG ((DEBUG_INFO, "HiiSetCurrentConfiguration: HiiGetString( ) failed\n"));\r
- return;\r
- }\r
- } else {\r
- NewString = HiiGetString (gHiiPackageListHandle, STRING_TOKEN(STR_DISK_INFO_DISABLE_BLOCKSID_FALSE), NULL);\r
- if (NewString == NULL) {\r
- DEBUG ((DEBUG_INFO, "HiiSetCurrentConfiguration: HiiGetString( ) failed\n"));\r
- return;\r
- }\r
+ DataSize = sizeof (OPAL_EXTRA_INFO_VAR);\r
+ Status = gRT->GetVariable (\r
+ OPAL_EXTRA_INFO_VAR_NAME,\r
+ &gOpalExtraInfoVariableGuid,\r
+ NULL,\r
+ &DataSize,\r
+ &OpalExtraInfo\r
+ );\r
+ if (!EFI_ERROR (Status)) {\r
+ gHiiConfiguration.EnableBlockSid = OpalExtraInfo.EnableBlockSid;\r
}\r
- HiiSetString(gHiiPackageListHandle, STRING_TOKEN(STR_BLOCKSID_STATUS3), NewString, NULL);\r
- FreePool (NewString);\r
}\r
\r
/**\r
{\r
HII_KEY HiiKey;\r
UINT8 HiiKeyId;\r
- UINT32 PpRequest;\r
\r
if (ActionRequest != NULL) {\r
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_NONE;\r
} else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
switch (HiiKeyId) {\r
case HII_KEY_ID_BLOCKSID:\r
- switch (Value->u8) {\r
- case 0:\r
- PpRequest = TCG2_PHYSICAL_PRESENCE_NO_ACTION;\r
- break;\r
-\r
- case 1:\r
- PpRequest = TCG2_PHYSICAL_PRESENCE_ENABLE_BLOCK_SID;\r
- break;\r
-\r
- case 2:\r
- PpRequest = TCG2_PHYSICAL_PRESENCE_DISABLE_BLOCK_SID;\r
- break;\r
-\r
- case 3:\r
- PpRequest = TCG2_PHYSICAL_PRESENCE_SET_PP_REQUIRED_FOR_ENABLE_BLOCK_SID_FUNC_TRUE;\r
- break;\r
-\r
- case 4:\r
- PpRequest = TCG2_PHYSICAL_PRESENCE_SET_PP_REQUIRED_FOR_ENABLE_BLOCK_SID_FUNC_FALSE;\r
- break;\r
-\r
- case 5:\r
- PpRequest = TCG2_PHYSICAL_PRESENCE_SET_PP_REQUIRED_FOR_DISABLE_BLOCK_SID_FUNC_TRUE;\r
- break;\r
-\r
- case 6:\r
- PpRequest = TCG2_PHYSICAL_PRESENCE_SET_PP_REQUIRED_FOR_DISABLE_BLOCK_SID_FUNC_FALSE;\r
- break;\r
-\r
- default:\r
- PpRequest = TCG2_PHYSICAL_PRESENCE_NO_ACTION;\r
- DEBUG ((DEBUG_ERROR, "Invalid value input!\n"));\r
- break;\r
- }\r
- HiiSetBlockSidAction(PpRequest);\r
-\r
+ HiiSetBlockSid(Value->b);\r
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY;\r
return EFI_SUCCESS;\r
-\r
- default:\r
- break;\r
}\r
}\r
\r
\r
**/\r
EFI_STATUS\r
-HiiSetBlockSidAction (\r
- IN UINT32 PpRequest\r
+HiiSetBlockSid (\r
+ BOOLEAN Enable\r
)\r
{\r
- UINT32 ReturnCode;\r
- EFI_STATUS Status;\r
-\r
- //\r
- // Process TCG Physical Presence request just after trusted console is ready\r
- // Platform can connect trusted consoles and then call the below function.\r
- //\r
- ReturnCode = TcgPhysicalPresenceStorageLibSubmitRequestToPreOSFunction (PpRequest, 0);\r
- if (ReturnCode == TCG_PP_SUBMIT_REQUEST_TO_PREOS_SUCCESS) {\r
- Status = EFI_SUCCESS;\r
- } else if (ReturnCode == TCG_PP_SUBMIT_REQUEST_TO_PREOS_GENERAL_FAILURE) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- } else if (ReturnCode == TCG_PP_SUBMIT_REQUEST_TO_PREOS_NOT_IMPLEMENTED) {\r
- Status = EFI_UNSUPPORTED;\r
- } else {\r
- Status = EFI_DEVICE_ERROR;\r
- }\r
+ EFI_STATUS Status;\r
+ OPAL_EXTRA_INFO_VAR OpalExtraInfo;\r
+ UINTN DataSize;\r
+\r
+ Status = EFI_SUCCESS;\r
+\r
+ OpalExtraInfo.EnableBlockSid = Enable;\r
+ DataSize = sizeof (OPAL_EXTRA_INFO_VAR);\r
+ Status = gRT->SetVariable (\r
+ OPAL_EXTRA_INFO_VAR_NAME,\r
+ &gOpalExtraInfoVariableGuid,\r
+ EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
+ DataSize,\r
+ &OpalExtraInfo\r
+ );\r
\r
return Status;\r
}\r