public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Zhang, Chao B" <chao.b.zhang@intel.com>
To: edk2-devel@lists.01.org
Cc: jiewen.yao@intel.com, qin.long@intel.com,
	Chao Zhang <chao.b.zhang@intel.com>
Subject: [PATCH] SecurityPkg: Tcg: New field for User Confirmation Status
Date: Mon, 26 Sep 2016 10:38:55 +0800	[thread overview]
Message-ID: <1474857535-13132-1-git-send-email-chao.b.zhang@intel.com> (raw)

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>
---
 SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c | 4 ++--
 SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.h | 1 +
 SecurityPkg/Tcg/Tcg2Smm/Tpm.asl   | 5 +++--
 SecurityPkg/Tcg/TcgSmm/TcgSmm.c   | 4 ++--
 SecurityPkg/Tcg/TcgSmm/TcgSmm.h   | 3 ++-
 SecurityPkg/Tcg/TcgSmm/Tpm.asl    | 7 ++++---
 6 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c b/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c
index 19d9b48..f3b7641 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 fa77c9a..0b09032 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 9ff74f7..84143cf 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
diff --git a/SecurityPkg/Tcg/TcgSmm/TcgSmm.c b/SecurityPkg/Tcg/TcgSmm/TcgSmm.c
index 96fb456..589bab6 100644
--- a/SecurityPkg/Tcg/TcgSmm/TcgSmm.c
+++ b/SecurityPkg/Tcg/TcgSmm/TcgSmm.c
@@ -8,7 +8,7 @@
 
   PhysicalPresenceCallback() and MemoryClearCallback() will receive untrusted input and do some check.
 
-Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials 
 are licensed and made available under the terms and conditions of the BSD License 
 which accompanies this distribution.  The full text of the license may be found at 
@@ -152,7 +152,7 @@ PhysicalPresenceCallback (
 
     RequestConfirmed = FALSE;
 
-    switch (mTcgNvs->PhysicalPresence.Request) {
+    switch (mTcgNvs->PPRequestUserConfirm) {
       case PHYSICAL_PRESENCE_ENABLE:
       case PHYSICAL_PRESENCE_DISABLE:
       case PHYSICAL_PRESENCE_ACTIVATE:
diff --git a/SecurityPkg/Tcg/TcgSmm/TcgSmm.h b/SecurityPkg/Tcg/TcgSmm/TcgSmm.h
index d8eb82f..21e4ad9 100644
--- a/SecurityPkg/Tcg/TcgSmm/TcgSmm.h
+++ b/SecurityPkg/Tcg/TcgSmm/TcgSmm.h
@@ -1,7 +1,7 @@
 /** @file
   The header file for TCG SMM driver.
   
-Copyright (c) 2012 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2012 - 2016, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials 
 are licensed and made available under the terms and conditions of the BSD License 
 which accompanies this distribution.  The full text of the license may be found at 
@@ -58,6 +58,7 @@ typedef struct {
 typedef struct {
   PHYSICAL_PRESENCE_NVS  PhysicalPresence;
   MEMORY_CLEAR_NVS       MemoryClear;
+  UINT32                 PPRequestUserConfirm;
 } TCG_NVS;
 
 typedef struct {
diff --git a/SecurityPkg/Tcg/TcgSmm/Tpm.asl b/SecurityPkg/Tcg/TcgSmm/Tpm.asl
index 087ff9f..b5449d9 100644
--- a/SecurityPkg/Tcg/TcgSmm/Tpm.asl
+++ b/SecurityPkg/Tcg/TcgSmm/Tpm.asl
@@ -2,7 +2,7 @@
   The TPM definition block in ACPI table for physical presence  
   and MemoryClear.
 
-Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials 
 are licensed and made available under the terms and conditions of the BSD License 
 which accompanies this distribution.  The full text of the license may be found at 
@@ -78,7 +78,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)
@@ -269,7 +270,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
-- 
1.9.5.msysgit.1



             reply	other threads:[~2016-09-26  2:39 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-26  2:38 Zhang, Chao B [this message]
2016-09-26  2:45 ` [PATCH] SecurityPkg: Tcg: New field for User Confirmation Status Yao, Jiewen
2016-09-26  3:06 ` Long, Qin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1474857535-13132-1-git-send-email-chao.b.zhang@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox