Please check the comments below.
> -----Original Message----- > From: Tan, Dun <[email protected]> > Sent: Monday, June 21, 2021 1:47 AM > To: [email protected] > Cc: Ma, Maurice <[email protected]>; Dong, Guo > <[email protected]>; You, Benjamin <[email protected]>; Tan, > Dun <[email protected]> > Subject: [PATCH 2/2] UefiPayloadPkg: consume the BootManagerMenuFile > HOB > > Consume the BootManagerMenuFile HOB in PlatformBootManagerLib > This Lib is in UefiPayloadPkg > > Cc: Maurice Ma <[email protected]> > Cc: Guo Dong <[email protected]> > Cc: Benjamin You <[email protected]> > > Signed-off-by: DunTan <[email protected]> > --- > UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c > | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ > > UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.i > nf | 5 ++++- > UefiPayloadPkg/UefiPayloadPkg.dsc | > 2 +- > 3 files changed, 56 insertions(+), 2 deletions(-) > > diff --git > a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c > b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c > index fce48d26a1..afd9664959 100644 > --- > a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c > +++ > b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c > @@ -10,6 +10,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #include "PlatformBootManager.h" > #include "PlatformConsole.h" > #include <Protocol/PlatformBootManagerOverride.h> > +#include <Guid/BootManagerMenu.h> > +#include <Library/HobLib.h> > > > UNIVERSAL_PAYLOAD_PLATFORM_BOOT_MANAGER_OVERRIDE_PROTOCO > L *mUniversalPayloadPlatformBootManagerOverrideInstance = NULL; > > @@ -286,3 +288,52 @@ PlatformBootManagerUnableToBoot ( > return; > } > > +/** > + Get/update PcdBootManagerMenuFile from GUID HOB which will be > assigned in bootloader. > + > + @retval EFI_SUCCESS The entry point is executed successfully. > + @retval other Some error occurs. > + > +**/ > +EFI_STATUS > +EFIAPI > +PlatformBootManagerLibConstructor ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > +) > +{ > + EFI_STATUS Status; > + UINTN Size; > + VOID *GuidHob; > + UNIVERSAL_PAYLOAD_GENERIC_HEADER *GenericHeader; > + UNIVERSAL_PAYLOAD_BOOT_MANAGER_MENU > *BootManagerMenuFile; > + Status = EFI_SUCCESS; It looks the Status initialization was not necessary, please double check and remove it. And please add function parameter description in function comments. > + GuidHob = GetFirstGuidHob > (&gUniversalPayloadBootManagerMenuFileGuid); > + // > + // Find the buffer information and update PCDs > + // > + if (GuidHob == NULL) { > + // > + // If the HOB is not create, the default value of PcdBootManagerMenuFile > will be used. > + // > + return EFI_SUCCESS; > + } > + It is more clear if moving the comment message " Find the buffer information and update PCDs" to here. > + GenericHeader = (UNIVERSAL_PAYLOAD_GENERIC_HEADER *) > GET_GUID_HOB_DATA (GuidHob); > + if ((sizeof (UNIVERSAL_PAYLOAD_GENERIC_HEADER) > > GET_GUID_HOB_DATA_SIZE (GuidHob)) || (GenericHeader->Length > > GET_GUID_HOB_DATA_SIZE (GuidHob))) { > + return EFI_NOT_FOUND; > + } > + if (GenericHeader->Revision == > UNIVERSAL_PAYLOAD_BOOT_MANAGER_MENU_REVISION) { > + BootManagerMenuFile = > (UNIVERSAL_PAYLOAD_BOOT_MANAGER_MENU *) GET_GUID_HOB_DATA > (GuidHob); > + if (BootManagerMenuFile->Header.Length < > UNIVERSAL_PAYLOAD_SIZEOF_THROUGH_FIELD > (UNIVERSAL_PAYLOAD_BOOT_MANAGER_MENU, FileName)) { > + return EFI_NOT_FOUND; > + } > + Size = sizeof (BootManagerMenuFile->FileName); > + Status = PcdSetPtrS (PcdBootManagerMenuFile, &Size, > &BootManagerMenuFile->FileName); > + } else { > + return EFI_NOT_FOUND; > + } > + > + ASSERT_EFI_ERROR (Status); > + return EFI_SUCCESS; > +} > diff --git > a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLi > b.inf > b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLi > b.inf > index 600a535282..9c4943a0e0 100644 > --- > a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLi > b.inf > +++ > b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLi > b.inf > @@ -13,7 +13,7 @@ > MODULE_TYPE = DXE_DRIVER > VERSION_STRING = 1.0 > LIBRARY_CLASS = PlatformBootManagerLib|DXE_DRIVER > - > + CONSTRUCTOR = PlatformBootManagerLibConstructor > > # > # The following information is for reference only and not required by the > build tools. > @@ -46,9 +46,11 @@ > HiiLib > PrintLib > PlatformHookLib > + HobLib > > [Guids] > gEfiEndOfDxeEventGroupGuid > + gUniversalPayloadBootManagerMenuFileGuid > > [Protocols] > gEfiGenericMemTestProtocolGuid ## CONSUMES > @@ -70,3 +72,4 @@ > gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits > gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity > gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits > + gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile > diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc > b/UefiPayloadPkg/UefiPayloadPkg.dsc > index 21b360256b..e46b867d30 100644 > --- a/UefiPayloadPkg/UefiPayloadPkg.dsc > +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc > @@ -289,7 +289,6 @@ > !endif > gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE > gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable|TRUE > - gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, > 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, > 0x23, 0x31 } > > > !if $(SOURCE_DEBUG_ENABLE) > @@ -297,6 +296,7 @@ > !endif > > [PcdsPatchableInModule.common] > + gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, > 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, > 0x23, 0x31 } > gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x7 > gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000004F > !if $(SOURCE_DEBUG_ENABLE) > -- > 2.31.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#76877): https://edk2.groups.io/g/devel/message/76877 Mute This Topic: https://groups.io/mt/83696285/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
