SecurityPkg: Tcg2: Fix TCG2 PP issues
Several issues exist in TCG2 PP 1. TCG2 PP use NVS PPRQ/PPRM as PP parameter as well as current PP state cache. But it doesn't handle PP set failure case 2. TCG2 PP Submit TPM Operation Request to Pre-OS Environment forgets to clean PPRM 3. Potential alignment issue Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Chao Zhang <chao.b.zhang@intel.com> Reviewed-by: Qin Long <qin.long@intel.com>
This commit is contained in:
@@ -119,6 +119,9 @@ PhysicalPresenceCallback (
|
||||
{
|
||||
UINT32 MostRecentRequest;
|
||||
UINT32 Response;
|
||||
UINT32 OperationRequest;
|
||||
UINT32 RequestParameter;
|
||||
|
||||
|
||||
if (mTcgNvs->PhysicalPresence.Parameter == TCG_ACPI_FUNCTION_RETURN_REQUEST_RESPONSE_TO_OS) {
|
||||
mTcgNvs->PhysicalPresence.ReturnCode = Tcg2PhysicalPresenceLibReturnOperationResponseToOsFunction (
|
||||
@@ -130,10 +133,15 @@ PhysicalPresenceCallback (
|
||||
return EFI_SUCCESS;
|
||||
} else if ((mTcgNvs->PhysicalPresence.Parameter == TCG_ACPI_FUNCTION_SUBMIT_REQUEST_TO_BIOS)
|
||||
|| (mTcgNvs->PhysicalPresence.Parameter == TCG_ACPI_FUNCTION_SUBMIT_REQUEST_TO_BIOS_2)) {
|
||||
mTcgNvs->PhysicalPresence.ReturnCode = Tcg2PhysicalPresenceLibSubmitRequestToPreOSFunction (
|
||||
mTcgNvs->PhysicalPresence.Request,
|
||||
mTcgNvs->PhysicalPresence.RequestParameter
|
||||
|
||||
OperationRequest = mTcgNvs->PhysicalPresence.Request;
|
||||
RequestParameter = mTcgNvs->PhysicalPresence.RequestParameter;
|
||||
mTcgNvs->PhysicalPresence.ReturnCode = Tcg2PhysicalPresenceLibSubmitRequestToPreOSFunctionEx (
|
||||
&OperationRequest,
|
||||
&RequestParameter
|
||||
);
|
||||
mTcgNvs->PhysicalPresence.Request = OperationRequest;
|
||||
mTcgNvs->PhysicalPresence.RequestParameter = RequestParameter;
|
||||
} else if (mTcgNvs->PhysicalPresence.Parameter == TCG_ACPI_FUNCTION_GET_USER_CONFIRMATION_STATUS_FOR_REQUEST) {
|
||||
mTcgNvs->PhysicalPresence.ReturnCode = Tcg2PhysicalPresenceLibGetUserConfirmationStatusFunction (mTcgNvs->PPRequestUserConfirm);
|
||||
}
|
||||
|
@@ -198,6 +198,7 @@ DefinitionBlock (
|
||||
//
|
||||
|
||||
Store (DerefOf (Index (Arg2, 0x00)), PPRQ)
|
||||
Store (0, PPRM)
|
||||
Store (0x02, PPIP)
|
||||
|
||||
//
|
||||
|
Reference in New Issue
Block a user