回复: [edk2-devel] 回复: [PATCH-V2] Fix Setup numeric default value incorrect issue

gaoliming gaoliming at byosoft.com.cn
Fri Apr 8 00:47:41 UTC 2022


Lin:
  Here is PR https://github.com/tianocore/edk2/pull/2748. There is the issue
in the change. Please check it. 

ERROR -
/home/vsts/work/1/s/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
ERROR - --->Test Failed: Uncrustify Coding Standard Test NO-TARGET returned
1

Thanks
Liming
> -----邮件原件-----
> 发件人: devel at edk2.groups.io <devel at edk2.groups.io> 代表 gaoliming
> 发送时间: 2022年4月7日 13:05
> 收件人: 'Chen Lin Z' <lin.z.chen at intel.com>; jian.j.wang at intel.com;
> dandan.bi at intel.com; eric.dong at intel.com; devel at edk2.groups.io
> 抄送: zhuangzhi.li at intel.com; di.zhang at intel.com
> 主题: [edk2-devel] 回复: [PATCH-V2] Fix Setup numeric default value
> incorrect issue
> 
> Reviewed-by: Liming Gao <gaoliming at byosoft.com.cn>
> 
> > -----邮件原件-----
> > 发件人: Chen Lin Z <lin.z.chen at intel.com>
> > 发送时间: 2022年4月1日 14:09
> > 收件人: jian.j.wang at intel.com; gaoliming at byosoft.com.cn;
> > dandan.bi at intel.com; eric.dong at intel.com; devel at edk2.groups.io
> > 抄送: zhuangzhi.li at intel.com; di.zhang at intel.com; Chen Lin Z
> > <lin.z.chen at intel.com>
> > 主题: [PATCH-V2] Fix Setup numeric default value incorrect issue
> >
> > When default/manufacturing flag get removed from numeric varid, it can't
> > get default value from StructurePcd in
> 'UpdateDefaultSettingInFormPackage'
> > function since there is no EFI_IFR_DEFAULT_OP opcode in IFR file. Add a
> > chance to get numeric default value from StructurePcd in the case that
> > numeric minimum value will be used as default value.
> >
> > Signed-off-by: Chen Lin Z <lin.z.chen at intel.com>
> > Signed-off-by: Dandan Bi <dandan.bi at intel.com>
> > ---
> >  .../Universal/HiiDatabaseDxe/ConfigRouting.c  | 22
> ++++++++++++++++++
> >  .../Universal/HiiDatabaseDxe/HiiDatabase.h    | 23
> > +++++++++++++++++++
> >  2 files changed, 45 insertions(+)
> >
> > diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
> > b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
> > index 2f792d2965..1c6af853b3 100644
> > --- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
> > +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
> > @@ -2171,6 +2171,7 @@ ParseIfrData (
> >    UINTN                        PackageOffset;
> >
> >    EFI_IFR_VARSTORE             *IfrVarStore;
> >
> >    EFI_IFR_VARSTORE_EFI         *IfrEfiVarStore;
> >
> > +  EFI_IFR_VARSTORE_EFI         *IfrEfiVarStoreTmp;
> >
> >    EFI_IFR_OP_HEADER            *IfrOpHdr;
> >
> >    EFI_IFR_ONE_OF               *IfrOneOf;
> >
> >    EFI_IFR_REF4                 *IfrRef;
> >
> > @@ -2187,6 +2188,7 @@ ParseIfrData (
> >    IFR_BLOCK_DATA               *BlockData;
> >
> >    CHAR16                       *VarStoreName;
> >
> >    UINTN                        NameSize;
> >
> > +  UINTN                        NvDefaultStoreSize;
> >
> >    UINT16                       VarWidth;
> >
> >    UINT16                       VarDefaultId;
> >
> >    BOOLEAN                      FirstOneOfOption;
> >
> > @@ -2212,6 +2214,7 @@ ParseIfrData (
> >    SmallestDefaultId      = 0xFFFF;
> >
> >    FromOtherDefaultOpcode = FALSE;
> >
> >    QuestionReferBitField  = FALSE;
> >
> > +  IfrEfiVarStoreTmp      = NULL;
> >
> >
> >
> >    //
> >
> >    // Go through the form package to parse OpCode one by one.
> >
> > @@ -2303,6 +2306,17 @@ ParseIfrData (
> >          }
> >
> >
> >
> >          AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name,
> > VarStoreName, NameSize);
> >
> > +        if (IfrEfiVarStoreTmp != NULL) {
> >
> > +          FreePool (IfrEfiVarStoreTmp);
> >
> > +        }
> >
> > +        IfrEfiVarStoreTmp = AllocatePool (IfrEfiVarStore->Header.Length
> +
> > AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name));
> >
> > +        if (IfrEfiVarStoreTmp == NULL) {
> >
> > +          Status = EFI_OUT_OF_RESOURCES;
> >
> > +          goto Done;
> >
> > +        }
> >
> > +
> >
> > +        CopyMem (IfrEfiVarStoreTmp, IfrEfiVarStore,
> > IfrEfiVarStore->Header.Length);
> >
> > +        AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, (CHAR16
> > *)&(IfrEfiVarStoreTmp->Name[0]), AsciiStrSize ((CHAR8
> > *)IfrEfiVarStore->Name) * sizeof (CHAR16));
> >
> >
> >
> >          if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName,
> > ConfigHdr)) {
> >
> >            //
> >
> > @@ -2502,9 +2516,13 @@ ParseIfrData (
> >            //
> >
> >            // Set default value base on the DefaultId list get from IFR
> data.
> >
> >            //
> >
> > +          NvDefaultStoreSize = PcdGetSize
> > (PcdNvStoreDefaultValueBuffer);
> >
> >            for (LinkData = DefaultIdArray->Entry.ForwardLink;
> LinkData !=
> > &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
> >
> >              DefaultDataPtr        = BASE_CR (LinkData,
> > IFR_DEFAULT_DATA, Entry);
> >
> >              DefaultData.DefaultId = DefaultDataPtr->DefaultId;
> >
> > +            if (NvDefaultStoreSize > sizeof
> > (PCD_NV_STORE_DEFAULT_BUFFER_HEADER)) {
> >
> > +              FindQuestionDefaultSetting (DefaultData.DefaultId,
> > IfrEfiVarStoreTmp, &(IfrOneOf->Question), &DefaultData.Value, VarWidth,
> > QuestionReferBitField);
> >
> > +            }
> >
> >              InsertDefaultValue (BlockData, &DefaultData);
> >
> >            }
> >
> >          }
> >
> > @@ -3192,6 +3210,10 @@ Done:
> >      }
> >
> >    }
> >
> >
> >
> > +  if (IfrEfiVarStoreTmp != NULL) {
> >
> > +    FreePool (IfrEfiVarStoreTmp);
> >
> > +  }
> >
> > +
> >
> >    return Status;
> >
> >  }
> >
> >
> >
> > diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h
> > b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h
> > index c4ca6ad6ee..421c293cfc 100644
> > --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h
> > +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h
> > @@ -2308,6 +2308,29 @@ HiiGetConfigRespInfo (
> >    IN CONST EFI_HII_DATABASE_PROTOCOL  *This
> >
> >    );
> >
> >
> >
> > +/**
> >
> > +  Find question default value from PcdNvStoreDefaultValueBuffer
> >
> > +
> >
> > +  @param DefaultId          Default store ID
> >
> > +  @param EfiVarStore        Point to EFI VarStore header
> >
> > +  @param IfrQuestionHdr     Point to Question header
> >
> > +  @param ValueBuffer        Point to Buffer includes the found default
> > setting
> >
> > +  @param Width              Width of the default value
> >
> > +  @param BitFieldQuestion   Whether the Question is stored in Bit
field.
> >
> > +
> >
> > +  @retval EFI_SUCCESS       Question default value is found.
> >
> > +  @retval EFI_NOT_FOUND     Question default value is not found.
> >
> > +**/
> >
> > +EFI_STATUS
> >
> > +FindQuestionDefaultSetting (
> >
> > +  IN  UINT16                   DefaultId,
> >
> > +  IN  EFI_IFR_VARSTORE_EFI     *EfiVarStore,
> >
> > +  IN  EFI_IFR_QUESTION_HEADER  *IfrQuestionHdr,
> >
> > +  OUT VOID                     *ValueBuffer,
> >
> > +  IN  UINTN                    Width,
> >
> > +  IN  BOOLEAN                  BitFieldQuestion
> >
> > +  );
> >
> > +
> >
> >  //
> >
> >  // Global variables
> >
> >  //
> >
> > --
> > 2.25.1
> 
> 
> 
> 
> 
> 
> 





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




More information about the edk2-devel-archive mailing list