[edk2-devel] [PATCH 2/2] uefi-sct/SctPkg: Correct BBTestEraseBlocks behavior (EFI_BLOCK_IO_PROTOCOL)

G Edhaya Chandran edhaya.chandran at arm.com
Tue Nov 24 05:49:57 UTC 2020


Hi Arvin,

    This patch is scheduled to be submitted in master today.

With Warm Regards,
Edhay


From: Chen, ArvinX <arvinx.chen at intel.com>
Sent: 24 November 2020 11:17
To: devel at edk2.groups.io; Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud at arm.com>
Cc: G Edhaya Chandran <Edhaya.Chandran at arm.com>; Jin, Eric <eric.jin at intel.com>; gaoliming at byosoft.com.cn; Chu, Maggie <maggie.chu at intel.com>
Subject: 回覆: [edk2-devel] [PATCH 2/2] uefi-sct/SctPkg: Correct BBTestEraseBlocks behavior (EFI_BLOCK_IO_PROTOCOL)

Hi all,

   If this patch is OK to you guys~ maybe we can submit it into master ^^

Thanks!
Arvin
________________________________
寄件者: devel at edk2.groups.io<mailto:devel at edk2.groups.io> <devel at edk2.groups.io<mailto:devel at edk2.groups.io>> 代表 Samer El-Haj-Mahmoud <samer.el-haj-mahmoud at arm.com<mailto:samer.el-haj-mahmoud at arm.com>>
寄件日期: 2020年11月17日 下午 09:53
收件者: devel at edk2.groups.io<mailto:devel at edk2.groups.io> <devel at edk2.groups.io<mailto:devel at edk2.groups.io>>; Chen, ArvinX <arvinx.chen at intel.com<mailto:arvinx.chen at intel.com>>
副本: G Edhaya Chandran <Edhaya.Chandran at arm.com<mailto:Edhaya.Chandran at arm.com>>; Jin, Eric <eric.jin at intel.com<mailto:eric.jin at intel.com>>; gaoliming at byosoft.com.cn<mailto:gaoliming at byosoft.com.cn> <gaoliming at byosoft.com.cn<mailto:gaoliming at byosoft.com.cn>>; Chu, Maggie <maggie.chu at intel.com<mailto:maggie.chu at intel.com>>; Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud at arm.com<mailto:Samer.El-Haj-Mahmoud at arm.com>>
主旨: Re: [edk2-devel] [PATCH 2/2] uefi-sct/SctPkg: Correct BBTestEraseBlocks behavior (EFI_BLOCK_IO_PROTOCOL)


Thanks for the explanation.



Reviewed-By: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud at arm.com<mailto:Samer.El-Haj-Mahmoud at arm.com>>





From: devel at edk2.groups.io<mailto:devel at edk2.groups.io> <devel at edk2.groups.io<mailto:devel at edk2.groups.io>> On Behalf Of Chen, ArvinX via groups.io
Sent: Tuesday, November 17, 2020 12:51 AM
To: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud at arm.com<mailto:Samer.El-Haj-Mahmoud at arm.com>>; devel at edk2.groups.io<mailto:devel at edk2.groups.io>
Cc: G Edhaya Chandran <Edhaya.Chandran at arm.com<mailto:Edhaya.Chandran at arm.com>>; Jin, Eric <eric.jin at intel.com<mailto:eric.jin at intel.com>>; gaoliming at byosoft.com.cn<mailto:gaoliming at byosoft.com.cn>; Chu, Maggie <maggie.chu at intel.com<mailto:maggie.chu at intel.com>>
Subject: 回覆: [edk2-devel] [PATCH 2/2] uefi-sct/SctPkg: Correct BBTestEraseBlocks behavior (EFI_BLOCK_IO_PROTOCOL)



HI Samer,



    Sorry for the slow reply, In EMMC's case, it allowed storage firmware erase to "1" to be a valid behavior (please reference the spec of emmc JESD84-B51/6.6.9), so once verification team use kind of this device, the test case will always failed. To avoid this problem, I think this change is required.



Thanks!!

Arvin



________________________________

寄件者: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud at arm.com<mailto:Samer.El-Haj-Mahmoud at arm.com>>
寄件日期: 2020年11月12日 上午 04:56
收件者: devel at edk2.groups.io<mailto:devel at edk2.groups.io> <devel at edk2.groups.io<mailto:devel at edk2.groups.io>>; Chen, ArvinX <arvinx.chen at intel.com<mailto:arvinx.chen at intel.com>>
副本: G Edhaya Chandran <Edhaya.Chandran at arm.com<mailto:Edhaya.Chandran at arm.com>>; Jin, Eric <eric.jin at intel.com<mailto:eric.jin at intel.com>>; Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud at arm.com<mailto:Samer.El-Haj-Mahmoud at arm.com>>; gaoliming at byosoft.com.cn<mailto:gaoliming at byosoft.com.cn> <gaoliming at byosoft.com.cn<mailto:gaoliming at byosoft.com.cn>>
主旨: RE: [edk2-devel] [PATCH 2/2] uefi-sct/SctPkg: Correct BBTestEraseBlocks behavior (EFI_BLOCK_IO_PROTOCOL)



Hi Chen,

The UEFI Specification 2.8ErrataB (page 575) states that " It is the intention of the EraseBlocks() operation to be at least as performant as writing zeroes to each of the specified LBA locations while ensuring the equivalent security."

So while not explicitly saying that Erase should "erase to 0", it implies that at least is the intention. Do we know that erasing to "1" is a valid behavior?



> -----Original Message-----
> From: devel at edk2.groups.io<mailto:devel at edk2.groups.io> <devel at edk2.groups.io<mailto:devel at edk2.groups.io>> On Behalf Of Chen,
> ArvinX via groups.io
> Sent: Monday, November 2, 2020 5:00 AM
> To: devel at edk2.groups.io<mailto:devel at edk2.groups.io>
> Cc: G Edhaya Chandran <Edhaya.Chandran at arm.com<mailto:Edhaya.Chandran at arm.com>>; Eric Jin
> <eric.jin at intel.com<mailto:eric.jin at intel.com>>
> Subject: [edk2-devel] [PATCH 2/2] uefi-sct/SctPkg: Correct
> BBTestEraseBlocks behavior (EFI_BLOCK_IO_PROTOCOL)
>
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3022
>
>
>
> The storage device erase behavior may have two possibilities:
>
>  1.Write all data into "0"
>
>  2.Write all data into "1"
>
> but now tool behavior can only check case 1 (Write all data into "0"),
>
> so we need add the other case into SCT tool to correct the test behavior.
>
>
>
> Cc: G Edhaya Chandran <Edhaya.Chandran at arm.com<mailto:Edhaya.Chandran at arm.com>>
>
> Cc: Eric Jin <eric.jin at intel.com<mailto:eric.jin at intel.com>>
>
> Signed-off-by: ArvinX Chen <arvinx.chen at intel.com<mailto:arvinx.chen at intel.com>>
>
> ---
>
>  .../BlackBoxTest/EraseBlockBBTestFunction.c   | 55 +++++++++++++++----
>
>  1 file changed, 43 insertions(+), 12 deletions(-)
>
>
>
> diff --git a/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlock
> BBTestFunction.c b/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlock
> BBTestFunction.c
>
> index cbf43e1d..dbbb70c6 100644
>
> --- a/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlock
> BBTestFunction.c
>
> +++ b/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/Protocol/EraseBlock/BlackBoxTest/EraseBlock
> BBTestFunction.c
>
> @@ -71,6 +71,7 @@ BBTestEraseBlocksFunctionTest (
>
>    UINT64                                Index;
>
>    UINTN                                 Index1;
>
>    UINTN                                 Remainder;
>
> +  UINT64                                EraseCounter;
>
>
>
>    EFI_ERASE_BLOCK_TOKEN                 Token;
>
>    EFI_BLOCK_IO2_TOKEN                   BlockIo2Token;
>
> @@ -223,26 +224,41 @@ BBTestEraseBlocksFunctionTest (
>
>          // 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) {
>
> +          for (Index1 = 0, EraseCounter = 0; Index1 < BlockSize; Index1++) {
>
> +            if (Buffer2[Index1] != 0x00 && Buffer2[Index1] != 0xFF) {
>
>                IsZero1 = FALSE;
>
>                break;
>
> +            } else if (Buffer2[Index1] == 0x00) {
>
> +              EraseCounter++;
>
>              }
>
>            }
>
> +          if (EraseCounter!=0 && EraseCounter!=BlockSize) {
>
> +            IsZero1 = FALSE;
>
> +          }
>
>
>
> -          for (Index1 = BlockSize; Index1 < BufferSize - BlockSize; Index1++) {
>
> -            if (Buffer2[Index1] != 0) {
>
> +          for (Index1 = BlockSize, EraseCounter = 0; Index1 < BufferSize -
> BlockSize; Index1++) {
>
> +            if (Buffer2[Index1] != 0x00 && Buffer2[Index1] != 0xFF) {
>
>                IsZero2 = FALSE;
>
>                break;
>
> +            } else if (Buffer2[Index1] == 0x00) {
>
> +              EraseCounter++;
>
>              }
>
>            }
>
> +          if (EraseCounter!=0 && EraseCounter!=(BufferSize - (BlockSize*2))) {
>
> +            IsZero2 = FALSE;
>
> +          }
>
>
>
> -          for (Index1 = BufferSize - BlockSize; Index1 < BufferSize; Index1++) {
>
> -            if (Buffer2[Index1] != 0) {
>
> +          for (Index1 = BufferSize - BlockSize, EraseCounter = 0; Index1 <
> BufferSize; Index1++) {
>
> +            if (Buffer2[Index1] != 0x00 && Buffer2[Index1] != 0xFF) {
>
>                IsZero3 = FALSE;
>
>                break;
>
> +            } else if (Buffer2[Index1] == 0x00) {
>
> +              EraseCounter++;
>
>              }
>
>            }
>
> +          if (EraseCounter!=0 && EraseCounter!=BlockSize) {
>
> +            IsZero3 = FALSE;
>
> +          }
>
>
>
>            if ((EraseStatus == EFI_SUCCESS) && (IsZero1 == FALSE) && (IsZero2 ==
> TRUE) && ((IsZero3 == FALSE)))
>
>              AssertionType = EFI_TEST_ASSERTION_PASSED;
>
> @@ -492,26 +508,41 @@ BlockIo2:
>
>          // 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) {
>
> +          for (Index1 = 0, EraseCounter = 0; Index1 < BlockSize; Index1++) {
>
> +            if (Buffer2[Index1] != 0x00 && Buffer2[Index1] != 0xFF) {
>
>                IsZero1 = FALSE;
>
>                break;
>
> +            } else if (Buffer2[Index1] == 0x00) {
>
> +              EraseCounter++;
>
>              }
>
>            }
>
> +          if (EraseCounter!=0 && EraseCounter!=BlockSize) {
>
> +            IsZero1 = FALSE;
>
> +          }
>
>
>
> -          for (Index1 = BlockSize; Index1 < BufferSize - BlockSize; Index1++) {
>
> -            if (Buffer2[Index1] != 0) {
>
> +          for (Index1 = BlockSize, EraseCounter = 0; Index1 < BufferSize -
> BlockSize; Index1++) {
>
> +            if (Buffer2[Index1] != 0x00 && Buffer2[Index1] != 0xFF) {
>
>                IsZero2 = FALSE;
>
>                break;
>
> +            } else if (Buffer2[Index1] == 0x00) {
>
> +              EraseCounter++;
>
>              }
>
>            }
>
> +          if (EraseCounter!=0 && EraseCounter!=(BufferSize - (BlockSize*2))) {
>
> +            IsZero2 = FALSE;
>
> +          }
>
>
>
> -          for (Index1 = BufferSize - BlockSize; Index1 < BufferSize; Index1++) {
>
> -            if (Buffer2[Index1] != 0) {
>
> +          for (Index1 = BufferSize - BlockSize, EraseCounter = 0; Index1 <
> BufferSize; Index1++) {
>
> +            if (Buffer2[Index1] != 0x00 && Buffer2[Index1] != 0xFF) {
>
>                IsZero3 = FALSE;
>
>                break;
>
> +            } else if (Buffer2[Index1] == 0x00) {
>
> +              EraseCounter++;
>
>              }
>
>            }
>
> +          if (EraseCounter!=0 && EraseCounter!=BlockSize) {
>
> +            IsZero3 = FALSE;
>
> +          }
>
>
>
>            if ((EraseStatus == EFI_SUCCESS) && (IsZero1 == FALSE) && (IsZero2 ==
> TRUE) && ((IsZero3 == FALSE)))
>
>              AssertionType = EFI_TEST_ASSERTION_PASSED;
>
> --
>
> 2.26.2.windows.1
>
>
>
>
>
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#66857): https://edk2.groups.io/g/devel/message/66857
> Mute This Topic: https://groups.io/mt/77977762/1945644
> Group Owner: devel+owner at edk2.groups.io<mailto:devel+owner at edk2.groups.io>
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [samer.el-haj-
> mahmoud at arm.com<mailto:mahmoud at arm.com>]
> -=-=-=-=-=-=
>

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#67868): https://edk2.groups.io/g/devel/message/67868
Mute This Topic: https://groups.io/mt/78471961/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20201124/a7d7d54e/attachment.htm>


More information about the edk2-devel-archive mailing list