summaryrefslogtreecommitdiff
path: root/SecurityPkg/Tcg/Tcg2Smm
diff options
context:
space:
mode:
authorZhang, Chao B <chao.b.zhang@intel.com>2016-09-26 10:31:15 +0800
committerZhang, Chao B <chao.b.zhang@intel.com>2016-09-27 09:01:06 +0800
commit053f31e3d025f535af0626538f3d1a2415c67d2d (patch)
tree94a3cb1343d9b5d03b174d21c4c34c2380853301 /SecurityPkg/Tcg/Tcg2Smm
parentf6be48e9907d8bb8f8534df50049ce428c38f719 (diff)
downloadedk2-platforms-053f31e3d025f535af0626538f3d1a2415c67d2d.tar.xz
SecurityPkg: Tcg: New field for User Confirmation Status
Add a new field in TcgNVS for PP operation user confirmation status, instead of previous logic overriding Request. Previous logic causes Get Pending TPM Operation Requested sub function return wrong value. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Chao Zhang <chao.b.zhang@intel.com> Reviewed-by: Yao Jiewen <jiewen.yao@intel.com> Reviewed-by: Long Qin <qin.long@intel.com>
Diffstat (limited to 'SecurityPkg/Tcg/Tcg2Smm')
-rw-r--r--SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c4
-rw-r--r--SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.h1
-rw-r--r--SecurityPkg/Tcg/Tcg2Smm/Tpm.asl5
3 files changed, 6 insertions, 4 deletions
diff --git a/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c b/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c
index 19d9b489fe..f3b76418a2 100644
--- a/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c
+++ b/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c
@@ -135,8 +135,8 @@ PhysicalPresenceCallback (
mTcgNvs->PhysicalPresence.RequestParameter
);
} else if (mTcgNvs->PhysicalPresence.Parameter == TCG_ACPI_FUNCTION_GET_USER_CONFIRMATION_STATUS_FOR_REQUEST) {
- mTcgNvs->PhysicalPresence.ReturnCode = Tcg2PhysicalPresenceLibGetUserConfirmationStatusFunction (mTcgNvs->PhysicalPresence.Request);
- }
+ mTcgNvs->PhysicalPresence.ReturnCode = Tcg2PhysicalPresenceLibGetUserConfirmationStatusFunction (mTcgNvs->PPRequestUserConfirm);
+ }
return EFI_SUCCESS;
}
diff --git a/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.h b/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.h
index fa77c9a89c..0b09032d63 100644
--- a/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.h
+++ b/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.h
@@ -62,6 +62,7 @@ typedef struct {
typedef struct {
PHYSICAL_PRESENCE_NVS PhysicalPresence;
MEMORY_CLEAR_NVS MemoryClear;
+ UINT32 PPRequestUserConfirm;
} TCG_NVS;
typedef struct {
diff --git a/SecurityPkg/Tcg/Tcg2Smm/Tpm.asl b/SecurityPkg/Tcg/Tcg2Smm/Tpm.asl
index 9ff74f76e3..84143cfce9 100644
--- a/SecurityPkg/Tcg/Tcg2Smm/Tpm.asl
+++ b/SecurityPkg/Tcg/Tcg2Smm/Tpm.asl
@@ -79,7 +79,8 @@ DefinitionBlock (
MCIN, 8, // Software SMI for Memory Clear Interface
MCIP, 32, // Used for save the Mor paramter
MORD, 32, // Memory Overwrite Request Data
- MRET, 32 // Memory Overwrite function return code
+ MRET, 32, // Memory Overwrite function return code
+ UCRQ, 32 // Phyical Presence request operation to Get User Confirmation Status
}
Method (PTS, 1, Serialized)
@@ -274,7 +275,7 @@ DefinitionBlock (
// e) Get User Confirmation Status for Operation
//
Store (8, PPIP)
- Store (DerefOf (Index (Arg2, 0x00)), PPRQ)
+ Store (DerefOf (Index (Arg2, 0x00)), UCRQ)
//
// Triggle the SMI interrupt