From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=eric.jin@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 04B4C21173C8B for ; Sat, 13 Oct 2018 08:51:15 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Oct 2018 08:51:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,377,1534834800"; d="scan'208";a="94924399" Received: from jjin9-mobl.ccr.corp.intel.com ([10.249.168.56]) by fmsmga002.fm.intel.com with ESMTP; 13 Oct 2018 08:51:14 -0700 From: Eric Jin To: edk2-devel@lists.01.org Cc: Supreeth Venkatesh , Jiaxin Wu Date: Sat, 13 Oct 2018 23:51:11 +0800 Message-Id: <20181013155111.560-1-eric.jin@intel.com> X-Mailer: git-send-email 2.18.0.windows.1 Subject: [PATCH] uefi-sct/SctPkg:The original design for the 'EraseLengthGranularity' test need consider this case X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Oct 2018 15:51:16 -0000 For the SD device, no same as the eMMC, the 'EraseLengthGranularity' is 1. Cc: Supreeth Venkatesh Cc: Jiaxin Wu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Eric Jin --- .../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