From: "gaoliming" <gaoliming@byosoft.com.cn>
To: <devel@edk2.groups.io>, <gaoliming@byosoft.com.cn>,
"'Chen Lin Z'" <lin.z.chen@intel.com>, <jian.j.wang@intel.com>,
<dandan.bi@intel.com>, <eric.dong@intel.com>
Cc: <zhuangzhi.li@intel.com>, <di.zhang@intel.com>
Subject: 回复: [edk2-devel] 回复: [PATCH-V2] Fix Setup numeric default value incorrect issue
Date: Fri, 8 Apr 2022 08:47:41 +0800 [thread overview]
Message-ID: <037801d84ae2$40c6bbe0$c25433a0$@byosoft.com.cn> (raw)
In-Reply-To: <16E384C9AA220AC9.11968@groups.io>
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@edk2.groups.io <devel@edk2.groups.io> 代表 gaoliming
> 发送时间: 2022年4月7日 13:05
> 收件人: 'Chen Lin Z' <lin.z.chen@intel.com>; jian.j.wang@intel.com;
> dandan.bi@intel.com; eric.dong@intel.com; devel@edk2.groups.io
> 抄送: zhuangzhi.li@intel.com; di.zhang@intel.com
> 主题: [edk2-devel] 回复: [PATCH-V2] Fix Setup numeric default value
> incorrect issue
>
> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
>
> > -----邮件原件-----
> > 发件人: Chen Lin Z <lin.z.chen@intel.com>
> > 发送时间: 2022年4月1日 14:09
> > 收件人: jian.j.wang@intel.com; gaoliming@byosoft.com.cn;
> > dandan.bi@intel.com; eric.dong@intel.com; devel@edk2.groups.io
> > 抄送: zhuangzhi.li@intel.com; di.zhang@intel.com; Chen Lin Z
> > <lin.z.chen@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@intel.com>
> > Signed-off-by: Dandan Bi <dandan.bi@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
>
>
>
>
>
>
>
next prev parent reply other threads:[~2022-04-08 0:47 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-01 6:09 [PATCH-V2] Fix Setup numeric default value incorrect issue Chen Lin Z
2022-04-07 1:46 ` Chen Lin Z
2022-04-07 5:04 ` 回复: " gaoliming
[not found] ` <16E384C9AA220AC9.11968@groups.io>
2022-04-08 0:47 ` gaoliming [this message]
2022-04-08 2:12 ` [edk2-devel] " Dandan Bi
2022-04-08 2:56 ` Chen Lin Z
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='037801d84ae2$40c6bbe0$c25433a0$@byosoft.com.cn' \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox