For the SD device, no same as the eMMC, the 'EraseLengthGranularity' is 1.

Cc: Supreeth Venkatesh <[email protected]>
Cc: Jiaxin Wu <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Eric Jin <[email protected]>
---
 .../BlackBoxTest/EraseBlockBBTestFunction.c   | 154 +++++++++---------
 1 file changed, 78 insertions(+), 76 deletions(-)

diff --git 
a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestFunction.c
 
b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestFunction.c
index bc16a473..ea081625 100644
--- 
a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestFunction.c
+++ 
b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestFunction.c
@@ -214,54 +214,56 @@ BBTestEraseBlocksFunctionTest (
       }      
 
       // Erase Blocks with non-EraseLengthGranularity blocks
-      Token.Event = NULL;
-      Token.TransactionStatus = EFI_NOT_READY;
-      EraseStatus = EraseBlock->EraseBlocks (EraseBlock, MediaId, Lba+1, 
&Token, BufferSize - 2 * BlockSize);
-
-      // Read the data with 0, the first/last block should not be erased
-      ReadStatus = BlockIo->ReadBlocks (BlockIo, MediaId, Lba, BufferSize, 
(VOID*)Buffer2);
-      if (ReadStatus == EFI_SUCCESS) {
-        for (Index1 = 0; Index1 < BlockSize; Index1++) {
-          if (Buffer2[Index1] != 0) {
-            IsZero1 = FALSE;
-            break;
+      if (BufferSize > 2 * BlockSize) {
+        Token.Event = NULL;
+        Token.TransactionStatus = EFI_NOT_READY;
+      
+        EraseStatus = EraseBlock->EraseBlocks (EraseBlock, MediaId, Lba+1, 
&Token, BufferSize - 2 * BlockSize);
+
+        // Read the data with 0, the first/last block should not be erased
+        ReadStatus = BlockIo->ReadBlocks (BlockIo, MediaId, Lba, BufferSize, 
(VOID*)Buffer2);
+        if (ReadStatus == EFI_SUCCESS) {
+          for (Index1 = 0; Index1 < BlockSize; Index1++) {
+            if (Buffer2[Index1] != 0) {
+              IsZero1 = FALSE;
+              break;
+            }
           }
-        }
 
-        for (Index1 = BlockSize; Index1 < BufferSize - BlockSize; Index1++) {
-          if (Buffer2[Index1] != 0) {
-            IsZero2 = FALSE;
-            break;
+          for (Index1 = BlockSize; Index1 < BufferSize - BlockSize; Index1++) {
+            if (Buffer2[Index1] != 0) {
+              IsZero2 = FALSE;
+              break;
+            }
           }
-        }
 
-        for (Index1 = BufferSize - BlockSize; Index1 < BufferSize; Index1++) {
-          if (Buffer2[Index1] != 0) {
-            IsZero3 = FALSE;
-            break;
+          for (Index1 = BufferSize - BlockSize; Index1 < BufferSize; Index1++) 
{
+            if (Buffer2[Index1] != 0) {
+              IsZero3 = FALSE;
+              break;
+            }
           }
-        }
 
-        if ((EraseStatus == EFI_SUCCESS) && (IsZero1 == FALSE) && (IsZero2 == 
TRUE) && ((IsZero3 == FALSE)))
-                 AssertionType = EFI_TEST_ASSERTION_PASSED;
-        else
-          AssertionType = EFI_TEST_ASSERTION_FAILED;
+          if ((EraseStatus == EFI_SUCCESS) && (IsZero1 == FALSE) && (IsZero2 
== TRUE) && ((IsZero3 == FALSE)))
+                   AssertionType = EFI_TEST_ASSERTION_PASSED;
+          else
+            AssertionType = EFI_TEST_ASSERTION_FAILED;
 
         
-        StandardLib->RecordAssertion (
-                       StandardLib,
-                       AssertionType,
-                       gEraseBlockBBTestFunctionAssertionGuid003,
-                       L"EraseBlocks - EraseBlocks for testing, the first/last 
block should not be erased",
-                       L"%a:%d:EraseBlocks Status - %r, IsZero1 - %d, IsZero2 
- %d, IsZero3 - %d",
-                       __FILE__,
-                       (UINTN)__LINE__,
-                       Status,
-                       IsZero1, IsZero2, IsZero3
-                       );   
+          StandardLib->RecordAssertion (
+                         StandardLib,
+                         AssertionType,
+                         gEraseBlockBBTestFunctionAssertionGuid003,
+                         L"EraseBlocks - EraseBlocks for testing, the 
first/last block should not be erased",
+                         L"%a:%d:EraseBlocks Status - %r, IsZero1 - %d, 
IsZero2 - %d, IsZero3 - %d",
+                         __FILE__,
+                         (UINTN)__LINE__,
+                         EraseStatus,
+                         IsZero1, IsZero2, IsZero3
+                         );   
 
+        }
       }
-
       //
       // Erase Blocks with the EraseLengthGranularity blocks
       //
@@ -453,13 +455,13 @@ BlockIo2:
       //
       // Erase Blocks with non EraseLengthGranularity blocks
       //
+      if (BufferSize > 2 * BlockSize) {
+        Token.Event             = NULL;
+        Token.TransactionStatus = EFI_NOT_READY;
 
-      Token.Event             = NULL;
-      Token.TransactionStatus = EFI_NOT_READY;
-
-      EnterEvent = 0;
+        EnterEvent = 0;
 
-      Status = gtBS->CreateEvent (
+        Status = gtBS->CreateEvent (
                    EVT_NOTIFY_SIGNAL,
                    TPL_CALLBACK,
                    (EFI_EVENT_NOTIFY) NotifyFunction,
@@ -467,8 +469,8 @@ BlockIo2:
                    &Token.Event
                    );
 
-      if (EFI_ERROR (Status)) {
-        StandardLib->RecordAssertion (
+        if (EFI_ERROR (Status)) {
+          StandardLib->RecordAssertion (
                        StandardLib,
                        EFI_TEST_ASSERTION_FAILED,
                        gTestGenericFailureGuid,
@@ -478,46 +480,46 @@ BlockIo2:
                        (UINTN)__LINE__,
                        Status
                        );
-        FreeAlignedPool(Buffer1);
-        FreeAlignedPool(Buffer2);
-        goto End;
-      }
+          FreeAlignedPool(Buffer1);
+          FreeAlignedPool(Buffer2);
+          goto End;
+        }
 
-      EraseStatus = EraseBlock->EraseBlocks (EraseBlock, MediaId, Lba+1, 
&Token, BufferSize - 2 * BlockSize);
+        EraseStatus = EraseBlock->EraseBlocks (EraseBlock, MediaId, Lba+1, 
&Token, BufferSize - 2 * BlockSize);
 
-      while(Token.TransactionStatus == EFI_NOT_READY);
+        while(Token.TransactionStatus == EFI_NOT_READY);
 
-      // Read the data with 0, the first/last block should not be erased
-      ReadStatus = BlockIo2->ReadBlocksEx (BlockIo2, MediaId, Lba, 
&BlockIo2Token, BufferSize, (VOID*)Buffer2);
-      if (ReadStatus == EFI_SUCCESS) {
-        for (Index1 = 0; Index1 < BlockSize; Index1++) {
-          if (Buffer2[Index1] != 0) {
-            IsZero1 = FALSE;
-            break;
+        // Read the data with 0, the first/last block should not be erased
+        ReadStatus = BlockIo2->ReadBlocksEx (BlockIo2, MediaId, Lba, 
&BlockIo2Token, BufferSize, (VOID*)Buffer2);
+        if (ReadStatus == EFI_SUCCESS) {
+          for (Index1 = 0; Index1 < BlockSize; Index1++) {
+            if (Buffer2[Index1] != 0) {
+              IsZero1 = FALSE;
+              break;
+            }
           }
-        }
 
-        for (Index1 = BlockSize; Index1 < BufferSize - BlockSize; Index1++) {
-          if (Buffer2[Index1] != 0) {
-            IsZero2 = FALSE;
-            break;
+          for (Index1 = BlockSize; Index1 < BufferSize - BlockSize; Index1++) {
+            if (Buffer2[Index1] != 0) {
+              IsZero2 = FALSE;
+              break;
+            }
           }
-        }
 
-        for (Index1 = BufferSize - BlockSize; Index1 < BufferSize; Index1++) {
-          if (Buffer2[Index1] != 0) {
-            IsZero3 = FALSE;
-            break;
+          for (Index1 = BufferSize - BlockSize; Index1 < BufferSize; Index1++) 
{
+            if (Buffer2[Index1] != 0) {
+              IsZero3 = FALSE;
+              break;
+            }
           }
-        }
 
-        if ((EraseStatus == EFI_SUCCESS) && (IsZero1 == FALSE) && (IsZero2 == 
TRUE) && ((IsZero3 == FALSE)))
-                 AssertionType = EFI_TEST_ASSERTION_PASSED;
-        else
-          AssertionType = EFI_TEST_ASSERTION_FAILED;
+          if ((EraseStatus == EFI_SUCCESS) && (IsZero1 == FALSE) && (IsZero2 
== TRUE) && ((IsZero3 == FALSE)))
+                   AssertionType = EFI_TEST_ASSERTION_PASSED;
+          else
+            AssertionType = EFI_TEST_ASSERTION_FAILED;
 
         
-        StandardLib->RecordAssertion (
+          StandardLib->RecordAssertion (
                        StandardLib,
                        AssertionType,
                        gEraseBlockBBTestFunctionAssertionGuid004,
@@ -525,12 +527,12 @@ BlockIo2:
                        L"%a:%d:EraseBlocks Status - %r, IsZero1 - %d, IsZero2 
- %d, IsZero3 - %d",
                        __FILE__,
                        (UINTN)__LINE__,
-                       Status,
+                       EraseStatus,
                        IsZero1, IsZero2, IsZero3
                        );   
 
+        }
       }
-
       //
       // Erase Blocks with the EraseLengthGranularity blocks
       //
-- 
2.18.0.windows.1

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

Reply via email to