Hi Liming, BuildSg is supposed to mean 'Build Scatter-Gather'. Maybe 'BuildGather' would be a better goto label since it matches the comment and the function?
Let me know. Thanks, -bob -----Original Message----- From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming via groups.io Sent: Thursday, October 28, 2021 7:46 PM To: Bob Morgan <b...@nvidia.com>; devel@edk2.groups.io Cc: 'Jian J Wang' <jian.j.w...@intel.com>; 'Guomin Jiang' <guomin.ji...@intel.com> Subject: [edk2-devel] 回复: [PATCH] MdeModulePkg/DxeCapsuleLibFmp: Capsule on Disk file name capsule External email: Use caution opening links or attachments Bob: > -----邮件原件----- > 发件人: Bob Morgan <b...@nvidia.com> > 发送时间: 2021年10月19日 4:12 > 收件人: devel@edk2.groups.io > 抄送: Bob Morgan <b...@nvidia.com>; Jian J Wang <jian.j.w...@intel.com>; > Liming Gao <gaolim...@byosoft.com.cn>; Guomin Jiang > <guomin.ji...@intel.com> > 主题: [PATCH] MdeModulePkg/DxeCapsuleLibFmp: Capsule on Disk file name > capsule > > Enhance RelocateCapsuleToRam() to skip creation of the Capsule on Disk > file name capsule if PcdSupportUpdateCapsuleReset feature is not enabled. > This avoids an EFI_UNSUPPORTED return status from UpdateCapsule() when > the file name capsule is encountered and PcdSupportUpdateCapsuleReset > is FALSE. > > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Guomin Jiang <guomin.ji...@intel.com> > Signed-off-by: Bob Morgan <b...@nvidia.com> > --- > .../Library/DxeCapsuleLibFmp/CapsuleOnDisk.c | 19 > ++++++++++++++++--- > 1 file changed, 16 insertions(+), 3 deletions(-) > > diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/CapsuleOnDisk.c > b/MdeModulePkg/Library/DxeCapsuleLibFmp/CapsuleOnDisk.c > index 4c32c6cdcf..e65e335585 100644 > --- a/MdeModulePkg/Library/DxeCapsuleLibFmp/CapsuleOnDisk.c > +++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/CapsuleOnDisk.c > @@ -1739,6 +1739,7 @@ RelocateCapsuleToRam ( > UINT8 *StringBuf; > UINTN StringSize; > UINTN TotalStringSize; > + UINTN CapsulesToProcess; > > CapsuleOnDiskBuf = NULL; > BlockDescriptors = NULL; > @@ -1778,6 +1779,13 @@ RelocateCapsuleToRam ( > TotalStringSize += StrSize > (CapsuleOnDiskBuf[Index].FileInfo->FileName); > } > > + // If Persist Across Reset isn't supported, skip the file name > + strings capsule > + if (!FeaturePcdGet (PcdSupportUpdateCapsuleReset)) { > + CapsulesToProcess = CapsuleOnDiskNum; > + goto BuildSg; > + } > + CapsulesToProcess = CapsuleOnDiskNum + 1; > + > FileNameCapsule = AllocateZeroPool (sizeof (EFI_CAPSULE_HEADER) + > TotalStringSize); > if (FileNameCapsule == NULL) { > DEBUG ((DEBUG_ERROR, "Fail to allocate memory for name > capsule.\n")); @@ -1804,18 +1812,23 @@ RelocateCapsuleToRam ( > // > // 3. Build Gather list for the capsules > // > - Status = BuildGatherList (CapsuleBuffer, CapsuleSize, > CapsuleOnDiskNum + > 1, &BlockDescriptors); > +BuildSg: What does 'BuildSg' mean? Thanks Liming > + Status = BuildGatherList (CapsuleBuffer, CapsuleSize, CapsulesToProcess, > &BlockDescriptors); > if (EFI_ERROR (Status) || BlockDescriptors == NULL) { > FreePool (CapsuleBuffer); > FreePool (CapsuleSize); > - FreePool (FileNameCapsule); > + if (FileNameCapsule != NULL) { > + FreePool (FileNameCapsule); > + } > return EFI_OUT_OF_RESOURCES; > } > > // > // 4. Call UpdateCapsule() service > // > - Status = gRT->UpdateCapsule((EFI_CAPSULE_HEADER **) CapsuleBuffer, > CapsuleOnDiskNum + 1, (UINTN) BlockDescriptors); > + Status = gRT->UpdateCapsule ((EFI_CAPSULE_HEADER **) CapsuleBuffer, > + CapsulesToProcess, > + (UINTN) BlockDescriptors); > > return Status; > } > -- > 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#82940): https://edk2.groups.io/g/devel/message/82940 Mute This Topic: https://groups.io/mt/86667788/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-