summaryrefslogtreecommitdiffstats
path: root/SecurityPkg/Library/DxeTcgPhysicalPresenceLib
diff options
context:
space:
mode:
authorgdong1 <gdong1@6f19259b-4bc3-4df7-8a09-765794883524>2012-06-01 07:58:58 +0000
committergdong1 <gdong1@6f19259b-4bc3-4df7-8a09-765794883524>2012-06-01 07:58:58 +0000
commit1f728ac751c2c7349d28a5b6c67ab7eeedf37157 (patch)
treeed86d21417a789686ce197eb3e93081862ad35a8 /SecurityPkg/Library/DxeTcgPhysicalPresenceLib
parent16e5944abde9ea3f01c9ccff2a86a41e5a6a1dd0 (diff)
downloadedk2-1f728ac751c2c7349d28a5b6c67ab7eeedf37157.tar.gz
edk2-1f728ac751c2c7349d28a5b6c67ab7eeedf37157.tar.bz2
edk2-1f728ac751c2c7349d28a5b6c67ab7eeedf37157.zip
Fix TCG PPI request EnableActivateClear failure.
Signed-off-by: Dong Guo <guo.dong@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Ouyang Qian <qian.ouyang@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13421 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'SecurityPkg/Library/DxeTcgPhysicalPresenceLib')
-rw-r--r--SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c b/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c
index bee311bed8..515b0a5d72 100644
--- a/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c
+++ b/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c
@@ -393,16 +393,23 @@ ExecutePhysicalPresence (
return 0;
case PHYSICAL_PRESENCE_ENABLE_ACTIVATE_CLEAR:
- TpmResponse = ExecutePhysicalPresence (TcgProtocol, PHYSICAL_PRESENCE_ENABLE_ACTIVATE, PpiFlags);
- if (TpmResponse == 0) {
+ //
+ // PHYSICAL_PRESENCE_ENABLE_ACTIVATE + PHYSICAL_PRESENCE_CLEAR
+ // PHYSICAL_PRESENCE_CLEAR will be executed after reboot.
+ //
+ if ((*PpiFlags & FLAG_RESET_TRACK) == 0) {
+ TpmResponse = ExecutePhysicalPresence (TcgProtocol, PHYSICAL_PRESENCE_ENABLE_ACTIVATE, PpiFlags);
+ *PpiFlags |= FLAG_RESET_TRACK;
+ } else {
TpmResponse = ExecutePhysicalPresence (TcgProtocol, PHYSICAL_PRESENCE_CLEAR, PpiFlags);
+ *PpiFlags &= ~FLAG_RESET_TRACK;
}
return TpmResponse;
case PHYSICAL_PRESENCE_ENABLE_ACTIVATE_CLEAR_ENABLE_ACTIVATE:
//
// PHYSICAL_PRESENCE_ENABLE_ACTIVATE + PHYSICAL_PRESENCE_CLEAR_ENABLE_ACTIVATE
- // PHYSICAL_PRESENCE_CLEAR_ENABLE_ACTIVATE will be executed atfer reboot.
+ // PHYSICAL_PRESENCE_CLEAR_ENABLE_ACTIVATE will be executed after reboot.
//
if ((*PpiFlags & FLAG_RESET_TRACK) == 0) {
TpmResponse = ExecutePhysicalPresence (TcgProtocol, PHYSICAL_PRESENCE_ENABLE_ACTIVATE, PpiFlags);