public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH] uefi-sct/SctPkg:The original design for the 'EraseLengthGranularity' test need consider this case
@ 2018-10-13 15:51 Eric Jin
  2018-10-15  1:44 ` Supreeth Venkatesh
  2018-10-15  2:08 ` Supreeth Venkatesh
  0 siblings, 2 replies; 6+ messages in thread
From: Eric Jin @ 2018-10-13 15:51 UTC (permalink / raw)
  To: edk2-devel; +Cc: Supreeth Venkatesh, Jiaxin Wu

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

Cc: Supreeth Venkatesh <supreeth.venkatesh@arm.com>
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Eric Jin <eric.jin@intel.com>
---
 .../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



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-10-16  9:48 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-13 15:51 [PATCH] uefi-sct/SctPkg:The original design for the 'EraseLengthGranularity' test need consider this case Eric Jin
2018-10-15  1:44 ` Supreeth Venkatesh
2018-10-15 13:10   ` Supreeth Venkatesh
2018-10-15  2:08 ` Supreeth Venkatesh
2018-10-15 12:57   ` Supreeth Venkatesh
2018-10-15 13:10   ` Supreeth Venkatesh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox