Not all opal device support BlockSid feature. So Add
code logic to check the capability before send BlockSid
command.

Cc: Feng Tian <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <[email protected]>
---
 SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c | 25 ++++++++++-------------
 1 file changed, 11 insertions(+), 14 deletions(-)

diff --git a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c 
b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c
index 4a4fa6a..7c6deb8 100644
--- a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c
+++ b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c
@@ -388,14 +388,11 @@ ReadyToBootCallback (
 {
   EFI_STATUS          Status;
   OPAL_DRIVER_DEVICE* Itr;
-  UINT8               Count;
   TCG_RESULT          Result;
   OPAL_EXTRA_INFO_VAR OpalExtraInfo;
   UINTN               DataSize;
   OPAL_SESSION        Session;
 
-  Count = 0;
-
   gBS->CloseEvent (Event);
 
   DataSize = sizeof (OPAL_EXTRA_INFO_VAR);
@@ -415,21 +412,21 @@ ReadyToBootCallback (
     // Send BlockSID command to each Opal disk
     //
     Itr = mOpalDriver.DeviceList;
-    Count = 0;
     while (Itr != NULL) {
-      ZeroMem(&Session, sizeof(Session));
-      Session.Sscp = Itr->OpalDisk.Sscp;
-      Session.MediaId = Itr->OpalDisk.MediaId;
-      Session.OpalBaseComId = Itr->OpalDisk.OpalBaseComId;
-
-      Result = OpalBlockSid (&Session, TRUE);  // HardwareReset must always be 
TRUE
-      if (Result != TcgResultSuccess) {
-        DEBUG ((DEBUG_ERROR, "OpalBlockSid fail\n"));
-        break;
+      if (Itr->OpalDisk.SupportedAttributes.BlockSid) {
+        ZeroMem(&Session, sizeof(Session));
+        Session.Sscp = Itr->OpalDisk.Sscp;
+        Session.MediaId = Itr->OpalDisk.MediaId;
+        Session.OpalBaseComId = Itr->OpalDisk.OpalBaseComId;
+
+        Result = OpalBlockSid (&Session, TRUE);  // HardwareReset must always 
be TRUE
+        if (Result != TcgResultSuccess) {
+          DEBUG ((DEBUG_ERROR, "OpalBlockSid fail\n"));
+          break;
+        }
       }
 
       Itr = Itr->Next;
-      Count++;
     }
   }
 }
-- 
2.6.4.windows.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to