From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web09.28863.1604311201963795923 for ; Mon, 02 Nov 2020 02:00:02 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: arvinx.chen@intel.com) IronPort-SDR: u6Wr+V6JyVEOEQijdU0zK6HYRqkSk+Znj3eKZPw6VA6O8sYbUi9XxynyuS0Wv/29OSyRB4SI/K RmIiiKZ1fzFA== X-IronPort-AV: E=McAfee;i="6000,8403,9792"; a="166270143" X-IronPort-AV: E=Sophos;i="5.77,444,1596524400"; d="scan'208";a="166270143" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Nov 2020 02:00:01 -0800 IronPort-SDR: wa4vKgSkFP3rUjyWidrEUrZTDFMaFUF0oB/2BbQvuiQswXX90q0p7Nn1+UOh5XmTZGyXzeYr/Z uv39mmXFviFQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,444,1596524400"; d="scan'208";a="305393258" Received: from crystalh-mobl1.gar.corp.intel.com (HELO chiena2x-mobl2.gar.corp.intel.com) ([10.5.242.10]) by fmsmga008.fm.intel.com with ESMTP; 02 Nov 2020 02:00:00 -0800 From: "Chen, ArvinX" To: devel@edk2.groups.io Cc: G Edhaya Chandran , Eric Jin Subject: [PATCH 2/2] uefi-sct/SctPkg: Correct BBTestEraseBlocks behavior (EFI_BLOCK_IO_PROTOCOL) Date: Mon, 2 Nov 2020 17:59:50 +0800 Message-Id: <20201102095950.763-1-arvinx.chen@intel.com> X-Mailer: git-send-email 2.26.2.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3022=0D =0D The storage device erase behavior may have two possibilities:=0D 1.Write all data into "0"=0D 2.Write all data into "1"=0D but now tool behavior can only check case 1 (Write all data into "0"),=0D so we need add the other case into SCT tool to correct the test behavior.=0D =0D Cc: G Edhaya Chandran =0D Cc: Eric Jin =0D Signed-off-by: ArvinX Chen =0D ---=0D .../BlackBoxTest/EraseBlockBBTestFunction.c | 55 +++++++++++++++----=0D 1 file changed, 43 insertions(+), 12 deletions(-)=0D =0D diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBox= Test/EraseBlockBBTestFunction.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protoco= l/EraseBlock/BlackBoxTest/EraseBlockBBTestFunction.c=0D index cbf43e1d..dbbb70c6 100644=0D --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/Er= aseBlockBBTestFunction.c=0D +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/Er= aseBlockBBTestFunction.c=0D @@ -71,6 +71,7 @@ BBTestEraseBlocksFunctionTest (=0D UINT64 Index;=0D UINTN Index1;=0D UINTN Remainder;=0D + UINT64 EraseCounter;=0D =0D EFI_ERASE_BLOCK_TOKEN Token;=0D EFI_BLOCK_IO2_TOKEN BlockIo2Token;=0D @@ -223,26 +224,41 @@ BBTestEraseBlocksFunctionTest (=0D // Read the data with 0, the first/last block should not be erased= =0D ReadStatus =3D BlockIo->ReadBlocks (BlockIo, MediaId, Lba, BufferS= ize, (VOID*)Buffer2);=0D if (ReadStatus =3D=3D EFI_SUCCESS) {=0D - for (Index1 =3D 0; Index1 < BlockSize; Index1++) {=0D - if (Buffer2[Index1] !=3D 0) {=0D + for (Index1 =3D 0, EraseCounter =3D 0; Index1 < BlockSize; Index= 1++) {=0D + if (Buffer2[Index1] !=3D 0x00 && Buffer2[Index1] !=3D 0xFF) {= =0D IsZero1 =3D FALSE;=0D break;=0D + } else if (Buffer2[Index1] =3D=3D 0x00) {=0D + EraseCounter++;=0D }=0D }=0D + if (EraseCounter!=3D0 && EraseCounter!=3DBlockSize) {=0D + IsZero1 =3D FALSE;=0D + }=0D =0D - for (Index1 =3D BlockSize; Index1 < BufferSize - BlockSize; Inde= x1++) {=0D - if (Buffer2[Index1] !=3D 0) {=0D + for (Index1 =3D BlockSize, EraseCounter =3D 0; Index1 < BufferSi= ze - BlockSize; Index1++) {=0D + if (Buffer2[Index1] !=3D 0x00 && Buffer2[Index1] !=3D 0xFF) {= =0D IsZero2 =3D FALSE;=0D break;=0D + } else if (Buffer2[Index1] =3D=3D 0x00) {=0D + EraseCounter++;=0D }=0D }=0D + if (EraseCounter!=3D0 && EraseCounter!=3D(BufferSize - (BlockSiz= e*2))) {=0D + IsZero2 =3D FALSE;=0D + }=0D =0D - for (Index1 =3D BufferSize - BlockSize; Index1 < BufferSize; Ind= ex1++) {=0D - if (Buffer2[Index1] !=3D 0) {=0D + for (Index1 =3D BufferSize - BlockSize, EraseCounter =3D 0; Inde= x1 < BufferSize; Index1++) {=0D + if (Buffer2[Index1] !=3D 0x00 && Buffer2[Index1] !=3D 0xFF) {= =0D IsZero3 =3D FALSE;=0D break;=0D + } else if (Buffer2[Index1] =3D=3D 0x00) {=0D + EraseCounter++;=0D }=0D }=0D + if (EraseCounter!=3D0 && EraseCounter!=3DBlockSize) {=0D + IsZero3 =3D FALSE;=0D + }=0D =0D if ((EraseStatus =3D=3D EFI_SUCCESS) && (IsZero1 =3D=3D FALSE) &= & (IsZero2 =3D=3D TRUE) && ((IsZero3 =3D=3D FALSE)))=0D AssertionType =3D EFI_TEST_ASSERTION_PASSED;=0D @@ -492,26 +508,41 @@ BlockIo2:=0D // Read the data with 0, the first/last block should not be erased= =0D ReadStatus =3D BlockIo2->ReadBlocksEx (BlockIo2, MediaId, Lba, &Bl= ockIo2Token, BufferSize, (VOID*)Buffer2);=0D if (ReadStatus =3D=3D EFI_SUCCESS) {=0D - for (Index1 =3D 0; Index1 < BlockSize; Index1++) {=0D - if (Buffer2[Index1] !=3D 0) {=0D + for (Index1 =3D 0, EraseCounter =3D 0; Index1 < BlockSize; Index= 1++) {=0D + if (Buffer2[Index1] !=3D 0x00 && Buffer2[Index1] !=3D 0xFF) {= =0D IsZero1 =3D FALSE;=0D break;=0D + } else if (Buffer2[Index1] =3D=3D 0x00) {=0D + EraseCounter++;=0D }=0D }=0D + if (EraseCounter!=3D0 && EraseCounter!=3DBlockSize) {=0D + IsZero1 =3D FALSE;=0D + }=0D =0D - for (Index1 =3D BlockSize; Index1 < BufferSize - BlockSize; Inde= x1++) {=0D - if (Buffer2[Index1] !=3D 0) {=0D + for (Index1 =3D BlockSize, EraseCounter =3D 0; Index1 < BufferSi= ze - BlockSize; Index1++) {=0D + if (Buffer2[Index1] !=3D 0x00 && Buffer2[Index1] !=3D 0xFF) {= =0D IsZero2 =3D FALSE;=0D break;=0D + } else if (Buffer2[Index1] =3D=3D 0x00) {=0D + EraseCounter++;=0D }=0D }=0D + if (EraseCounter!=3D0 && EraseCounter!=3D(BufferSize - (BlockSiz= e*2))) {=0D + IsZero2 =3D FALSE;=0D + }=0D =0D - for (Index1 =3D BufferSize - BlockSize; Index1 < BufferSize; Ind= ex1++) {=0D - if (Buffer2[Index1] !=3D 0) {=0D + for (Index1 =3D BufferSize - BlockSize, EraseCounter =3D 0; Inde= x1 < BufferSize; Index1++) {=0D + if (Buffer2[Index1] !=3D 0x00 && Buffer2[Index1] !=3D 0xFF) {= =0D IsZero3 =3D FALSE;=0D break;=0D + } else if (Buffer2[Index1] =3D=3D 0x00) {=0D + EraseCounter++;=0D }=0D }=0D + if (EraseCounter!=3D0 && EraseCounter!=3DBlockSize) {=0D + IsZero3 =3D FALSE;=0D + }=0D =0D if ((EraseStatus =3D=3D EFI_SUCCESS) && (IsZero1 =3D=3D FALSE) &= & (IsZero2 =3D=3D TRUE) && ((IsZero3 =3D=3D FALSE)))=0D AssertionType =3D EFI_TEST_ASSERTION_PASSED;=0D -- =0D 2.26.2.windows.1=0D =0D