Re: [edk2] [PATCH] uefi-sct/SctPkg:Enhance the EraseBlock Test

2018-10-16 Thread Supreeth Venkatesh




On 10/14/2018 05:26 PM, Eric Jin wrote:

The EraseSize in the EraseBlocks conf test should be bytes.
Cover the case that the size of the data to erase is a
multiple of the 'EraseLengthGranularity' value of an Erase Block
Protocol instance. And check whether the data on adjacent blocks
are mistakenly erased.

Cc: Supreeth Venkatesh 
Cc: Jiaxin Wu 
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Eric Jin 
---
  .../EraseBlockBBTestConformance.c |  25 +-
  .../BlackBoxTest/EraseBlockBBTestFunction.c   | 600 --
  .../BlackBoxTest/EraseBlockBBTestMain.h   |  16 +-
  .../Protocol/EraseBlock/BlackBoxTest/Guid.c   |   4 +-
  .../Protocol/EraseBlock/BlackBoxTest/Guid.h   |   7 +
  5 files changed, 589 insertions(+), 63 deletions(-)

diff --git 
a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
 
b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
index df057b26..7e848239 100644
--- 
a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
+++ 
b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
@@ -1,7 +1,7 @@
  /** @file
  
Copyright 2017 Unified EFI, Inc.

-  Copyright (c) 2017, Intel Corporation. All rights reserved.
+  Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.
  
This program and the accompanying materials

are licensed and made available under the terms and conditions of the BSD 
License
@@ -51,8 +51,8 @@ BBTestEraseBlocksConformanceTest (
UINT32BlockSize;
UINT32IoAlign;
EFI_LBA   LastBlock;
-
-  UINT32BlockNumber;
+  UINT32EraseLengthGranularity;
+  UINTN EraseSize;
  
EFI_ERASE_BLOCK_TOKEN Token;
  
@@ -121,10 +121,11 @@ BBTestEraseBlocksConformanceTest (

IoAlign   = Media->IoAlign;
LastBlock = Media->LastBlock;
  
-  BlockNumber   = (UINT32) MINIMUM(LastBlock, MAX_NUMBER_OF_READ_BLOCK_BUFFER);

+  EraseLengthGranularity = EraseBlock->EraseLengthGranularity;
+  EraseSize  = (UINTN)SctMultU64x32 (EraseLengthGranularity, 
BlockSize);
  
if (MediaPresent == FALSE) {

-Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
BlockNumber);
+Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
EraseSize);
  if (Status == EFI_NO_MEDIA)
AssertionType = EFI_TEST_ASSERTION_PASSED;
  else
@@ -141,7 +142,7 @@ BBTestEraseBlocksConformanceTest (
   Status
   );
  
-Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock + 1, , BlockNumber);

+Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock + 1, 
, EraseSize);
  if (Status == EFI_NO_MEDIA)
AssertionType = EFI_TEST_ASSERTION_PASSED;
  else
@@ -158,7 +159,7 @@ BBTestEraseBlocksConformanceTest (
   Status
   );
  
-Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock - 10, , BlockNumber + 1);

+Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock - 10, 
, EraseSize + 1);

Why -10? Magic Number.

  if (Status == EFI_NO_MEDIA)
AssertionType = EFI_TEST_ASSERTION_PASSED;
  else
@@ -177,7 +178,7 @@ BBTestEraseBlocksConformanceTest (
   
} else {

  if (ReadOnly == TRUE) {
-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
BlockNumber);
+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
EraseSize);
if (Status == EFI_WRITE_PROTECTED)
  AssertionType = EFI_TEST_ASSERTION_PASSED;
else
@@ -195,7 +196,7 @@ BBTestEraseBlocksConformanceTest (
   );
  
  } else {

-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, 0, , 
BlockNumber);
+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, 0, , 
EraseSize);
if (Status == EFI_MEDIA_CHANGED)
  AssertionType = EFI_TEST_ASSERTION_PASSED;
else
@@ -212,7 +213,7 @@ BBTestEraseBlocksConformanceTest (
   Status
   );
  
-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock + 1, , BlockNumber);

+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock + 1, 
, EraseSize);
if (Status == EFI_MEDIA_CHANGED)
  AssertionType = EFI_TEST_ASSERTION_PASSED;
else
@@ -229,7 +230,7 @@ BBTestEraseBlocksConformanceTest (
   Status
   );
  
-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock - 10, , BlockNumber + 1);

+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock - 10, 
, EraseSize + 1);

Magic Number 

Re: [edk2] [PATCH] uefi-sct/SctPkg:Enhance the EraseBlock Test

2018-10-15 Thread Supreeth Venkatesh
FYI

On 10/15/2018 03:43 AM, Supreeth Venkatesh wrote:


On 10/14/2018 05:26 PM, Eric Jin wrote:

The EraseSize in the EraseBlocks conf test should be bytes.
Cover the case that the size of the data to erase is a
multiple of the 'EraseLengthGranularity' value of an Erase Block
Protocol instance. And check whether the data on adjacent blocks
are mistakenly erased.

Cc: Supreeth Venkatesh 

Cc: Jiaxin Wu 
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Eric Jin 
---
  .../EraseBlockBBTestConformance.c |  25 +-
  .../BlackBoxTest/EraseBlockBBTestFunction.c   | 600 --
  .../BlackBoxTest/EraseBlockBBTestMain.h   |  16 +-
  .../Protocol/EraseBlock/BlackBoxTest/Guid.c   |   4 +-
  .../Protocol/EraseBlock/BlackBoxTest/Guid.h   |   7 +
  5 files changed, 589 insertions(+), 63 deletions(-)

diff --git 
a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
 
b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
index df057b26..7e848239 100644
--- 
a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
+++ 
b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
@@ -1,7 +1,7 @@
  /** @file
  Copyright 2017 Unified EFI, Inc.
-  Copyright (c) 2017, Intel Corporation. All rights reserved.
+  Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.
  This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD 
License
@@ -51,8 +51,8 @@ BBTestEraseBlocksConformanceTest (
UINT32BlockSize;
UINT32IoAlign;
EFI_LBA   LastBlock;
-
-  UINT32BlockNumber;
+  UINT32EraseLengthGranularity;
+  UINTN EraseSize;
  EFI_ERASE_BLOCK_TOKEN Token;
  @@ -121,10 +121,11 @@ BBTestEraseBlocksConformanceTest (
IoAlign   = Media->IoAlign;
LastBlock = Media->LastBlock;
  -  BlockNumber   = (UINT32) MINIMUM(LastBlock, 
MAX_NUMBER_OF_READ_BLOCK_BUFFER);
+  EraseLengthGranularity = EraseBlock->EraseLengthGranularity;
+  EraseSize  = (UINTN)SctMultU64x32 (EraseLengthGranularity, 
BlockSize);
  if (MediaPresent == FALSE) {
-Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
BlockNumber);
+Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
EraseSize);
  if (Status == EFI_NO_MEDIA)
AssertionType = EFI_TEST_ASSERTION_PASSED;
  else
@@ -141,7 +142,7 @@ BBTestEraseBlocksConformanceTest (
   Status
   );
  -Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock + 1, 
, BlockNumber);
+Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock + 1, 
, EraseSize);
  if (Status == EFI_NO_MEDIA)
AssertionType = EFI_TEST_ASSERTION_PASSED;
  else
@@ -158,7 +159,7 @@ BBTestEraseBlocksConformanceTest (
   Status
   );
  -Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock - 10, 
, BlockNumber + 1);
+Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock - 10, 
, EraseSize + 1);
Why -10? Magic Number.

  if (Status == EFI_NO_MEDIA)
AssertionType = EFI_TEST_ASSERTION_PASSED;
  else
@@ -177,7 +178,7 @@ BBTestEraseBlocksConformanceTest (
   } else {
  if (ReadOnly == TRUE) {
-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
BlockNumber);
+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
EraseSize);
if (Status == EFI_WRITE_PROTECTED)
  AssertionType = EFI_TEST_ASSERTION_PASSED;
else
@@ -195,7 +196,7 @@ BBTestEraseBlocksConformanceTest (
   );
} else {
-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, 0, , 
BlockNumber);
+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, 0, , 
EraseSize);
if (Status == EFI_MEDIA_CHANGED)
  AssertionType = EFI_TEST_ASSERTION_PASSED;
else
@@ -212,7 +213,7 @@ BBTestEraseBlocksConformanceTest (
   Status
   );
  -  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock + 
1, , BlockNumber);
+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock + 1, 
, EraseSize);
if (Status == EFI_MEDIA_CHANGED)
  AssertionType = EFI_TEST_ASSERTION_PASSED;
else
@@ -229,7 +230,7 @@ BBTestEraseBlocksConformanceTest (
   Status
   );
  -  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock - 
10, , 

[edk2] [PATCH] uefi-sct/SctPkg:Enhance the EraseBlock Test

2018-10-14 Thread Eric Jin
The EraseSize in the EraseBlocks conf test should be bytes.
Cover the case that the size of the data to erase is a
multiple of the 'EraseLengthGranularity' value of an Erase Block
Protocol instance. And check whether the data on adjacent blocks
are mistakenly erased.

Cc: Supreeth Venkatesh 
Cc: Jiaxin Wu 
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Eric Jin 
---
 .../EraseBlockBBTestConformance.c |  25 +-
 .../BlackBoxTest/EraseBlockBBTestFunction.c   | 600 --
 .../BlackBoxTest/EraseBlockBBTestMain.h   |  16 +-
 .../Protocol/EraseBlock/BlackBoxTest/Guid.c   |   4 +-
 .../Protocol/EraseBlock/BlackBoxTest/Guid.h   |   7 +
 5 files changed, 589 insertions(+), 63 deletions(-)

diff --git 
a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
 
b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
index df057b26..7e848239 100644
--- 
a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
+++ 
b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlockBBTestConformance.c
@@ -1,7 +1,7 @@
 /** @file
 
   Copyright 2017 Unified EFI, Inc.
-  Copyright (c) 2017, Intel Corporation. All rights reserved.
+  Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.
 
   This program and the accompanying materials
   are licensed and made available under the terms and conditions of the BSD 
License
@@ -51,8 +51,8 @@ BBTestEraseBlocksConformanceTest (
   UINT32BlockSize;
   UINT32IoAlign;
   EFI_LBA   LastBlock;
-
-  UINT32BlockNumber;
+  UINT32EraseLengthGranularity;
+  UINTN EraseSize;
 
   EFI_ERASE_BLOCK_TOKEN Token;
 
@@ -121,10 +121,11 @@ BBTestEraseBlocksConformanceTest (
   IoAlign   = Media->IoAlign;
   LastBlock = Media->LastBlock;
 
-  BlockNumber   = (UINT32) MINIMUM(LastBlock, 
MAX_NUMBER_OF_READ_BLOCK_BUFFER);
+  EraseLengthGranularity = EraseBlock->EraseLengthGranularity;
+  EraseSize  = (UINTN)SctMultU64x32 (EraseLengthGranularity, 
BlockSize);
 
   if (MediaPresent == FALSE) {
-Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
BlockNumber);
+Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
EraseSize);
 if (Status == EFI_NO_MEDIA)
   AssertionType = EFI_TEST_ASSERTION_PASSED;
 else
@@ -141,7 +142,7 @@ BBTestEraseBlocksConformanceTest (
  Status
  );
 
-Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock + 1, 
, BlockNumber);
+Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock + 1, 
, EraseSize);
 if (Status == EFI_NO_MEDIA)
   AssertionType = EFI_TEST_ASSERTION_PASSED;
 else
@@ -158,7 +159,7 @@ BBTestEraseBlocksConformanceTest (
  Status
  );
 
-Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock - 10, 
, BlockNumber + 1);
+Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, LastBlock - 10, 
, EraseSize + 1);
 if (Status == EFI_NO_MEDIA)
   AssertionType = EFI_TEST_ASSERTION_PASSED;
 else
@@ -177,7 +178,7 @@ BBTestEraseBlocksConformanceTest (
  
   } else {
 if (ReadOnly == TRUE) {
-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
BlockNumber);
+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId, 0, , 
EraseSize);
   if (Status == EFI_WRITE_PROTECTED)
 AssertionType = EFI_TEST_ASSERTION_PASSED;
   else
@@ -195,7 +196,7 @@ BBTestEraseBlocksConformanceTest (
  );  
 
 } else {
-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, 0, , 
BlockNumber);
+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, 0, , 
EraseSize);
   if (Status == EFI_MEDIA_CHANGED)
 AssertionType = EFI_TEST_ASSERTION_PASSED;
   else
@@ -212,7 +213,7 @@ BBTestEraseBlocksConformanceTest (
  Status
  );  
 
-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock + 1, 
, BlockNumber);
+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock + 1, 
, EraseSize);
   if (Status == EFI_MEDIA_CHANGED)
 AssertionType = EFI_TEST_ASSERTION_PASSED;
   else
@@ -229,7 +230,7 @@ BBTestEraseBlocksConformanceTest (
  Status
  );  
 
-  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock - 
10, , BlockNumber + 1);
+  Status = EraseBlock->EraseBlocks(EraseBlock, MediaId + 1, LastBlock - 
10, , EraseSize + 1);
   if (Status == EFI_MEDIA_CHANGED)
 AssertionType = EFI_TEST_ASSERTION_PASSED;
   else
@@ -246,7 +247,7 @@