Guo:
  This is a bug fix. I think it is OK to merge for this stable tag. 

Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Guo Dong
> 发送时间: 2023年5月13日 7:40
> 收件人: devel@edk2.groups.io; Gao, Liming <gaolim...@byosoft.com.cn>
> 抄送: Ni, Ray <ray...@intel.com>; Rhodes, Sean <sean@starlabs.systems>;
> Lu, James <james...@intel.com>; Guo, Gua <gua....@intel.com>
> 主题: Re: [edk2-devel][PATCH V2] UefiPayloadPkg: Fix boot shell issue for
> universal UEFI payload
> 
> 
> Hi Liming,
> I know EDK2 is code freeze now. This patch fixes the UEFI payload boot to
> shell bug and it got reviewed and should have no impact to other packages.
> Do you think we could merge it for this stable release?
> https://github.com/tianocore/edk2/pull/4377
> 
> Thanks,
> Guo
> 
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Guo Dong
> Sent: Friday, May 12, 2023 3:44 PM
> To: devel@edk2.groups.io
> Cc: Dong, Guo <guo.d...@intel.com>; Ni, Ray <ray...@intel.com>; Rhodes,
> Sean <sean@starlabs.systems>; Lu, James <james...@intel.com>; Guo, Gua
> <gua....@intel.com>
> Subject: [edk2-devel][PATCH V2] UefiPayloadPkg: Fix boot shell issue for
> universal UEFI payload
> 
> From: Guo Dong <guo.d...@intel.com>
> 
> After moving BDS driver to a new FV for universal UEFI payload, the shell
boot
> option path is not correct since it used the BDS FV instead of DXE FV in
its
> device path.
> This patch would find the correct FV by reading shell file.
> It also removed PcdShellFile by using gUefiShellFileGuid.
> 
> Signed-off-by: Guo Dong <guo.d...@intel.com>
> Cc: Ray Ni <ray...@intel.com>
> Cc: Sean Rhodes <sean@starlabs.systems>
> Cc: James Lu <james...@intel.com>
> Cc: Gua Guo <gua....@intel.com>
> Reviewed-by: James Lu <james...@intel.com>
> Reviewed-by: Gua Guo <gua....@intel.com>
> ---
>  UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> | 82
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++-------
> 
> UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.i
> nf |  5 +++--
>  UefiPayloadPkg/UefiPayloadPkg.dec
> |  3 ---
>  3 files changed, 78 insertions(+), 12 deletions(-)
> 
> diff --git
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> index 62637ae6aa..1660d6c330 100644
> ---
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> +++
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.
> +++ c
> @@ -2,7 +2,7 @@
>    This file include all platform action which can be customized   by
> IBV/OEM. -Copyright (c) 2015 - 2021, Intel Corporation. All rights
> reserved.<BR>+Copyright (c) 2015 - 2023, Intel Corporation. All rights
> reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent  **/@@ -11,6
> +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>  #include "PlatformConsole.h" #include <Guid/BootManagerMenu.h>
> #include <Library/HobLib.h>+#include <Protocol/FirmwareVolume2.h>  /**
> Signal EndOfDxe event and install SMM Ready to lock protocol.@@ -89,6
> +90,77 @@ PlatformFindLoadOption (
>    return -1; } +/**+  Get the FV device path for the shell file.++
@return
> A pointer to device path structure.+**/+EFI_DEVICE_PATH_PROTOCOL
> *+BdsGetShellFvDevicePath (+  VOID+  )+{+  UINTN
> FvHandleCount;+  EFI_HANDLE                     *FvHandleBuffer;+
> UINTN                          Index;+  EFI_STATUS
> Status;+  EFI_FIRMWARE_VOLUME2_PROTOCOL  *Fv;+  UINTN
> Size;+  UINT32                         AuthenticationStatus;+
> EFI_DEVICE_PATH_PROTOCOL       *DevicePath;+  EFI_FV_FILETYPE
> FoundType;+  EFI_FV_FILE_ATTRIBUTES         FileAttributes;++  Status
> = EFI_SUCCESS;+  gBS->LocateHandleBuffer (+         ByProtocol,+
> &gEfiFirmwareVolume2ProtocolGuid,+         NULL,+
> &FvHandleCount,+         &FvHandleBuffer+         );++  for (Index =
> 0; Index < FvHandleCount; Index++) {+    Size   = 0;+
> gBS->HandleProtocol (+           FvHandleBuffer[Index],+
> &gEfiFirmwareVolume2ProtocolGuid,+           (VOID
> **)&Fv+           );+    Status = Fv->ReadFile (+
> Fv,+                   &gUefiShellFileGuid,+
> NULL,+                   &Size,+                   &FoundType,+
> &FileAttributes,+
> &AuthenticationStatus+                   );+    if (!EFI_ERROR (Status))
> {+      //+      // Found the shell file+      //+
> break;+    }+  }++  if (EFI_ERROR (Status)) {+    if (FvHandleCount) {+
> FreePool (FvHandleBuffer);+    }++    return NULL;+  }++  DevicePath =
> DevicePathFromHandle (FvHandleBuffer[Index]);++  if (FvHandleCount) {+
> FreePool (FvHandleBuffer);+  }++  return DevicePath;+}+ /**   Register a
> boot option using a file GUID in the FV. @@ -109,15 +181,11 @@
> PlatformRegisterFvBootOption (
>    EFI_BOOT_MANAGER_LOAD_OPTION       *BootOptions;   UINTN
> BootOptionCount;   MEDIA_FW_VOL_FILEPATH_DEVICE_PATH  FileNode;-
> EFI_LOADED_IMAGE_PROTOCOL          *LoadedImage;
> EFI_DEVICE_PATH_PROTOCOL           *DevicePath; -  Status =
> gBS->HandleProtocol (gImageHandle, &gEfiLoadedImageProtocolGuid, (VOID
> **)&LoadedImage);-  ASSERT_EFI_ERROR (Status);-
> EfiInitializeFwVolDevicepathNode (&FileNode, FileGuid);   DevicePath =
> AppendDevicePathNode (-                 DevicePathFromHandle
> (LoadedImage->DeviceHandle),+
> BdsGetShellFvDevicePath (),
> (EFI_DEVICE_PATH_PROTOCOL *)&FileNode                  ); @@
> -248,7 +316,7 @@ PlatformBootManagerAfterConsole (
>    //   // Register UEFI Shell   //-  PlatformRegisterFvBootOption
> (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);+
> PlatformRegisterFvBootOption (&gUefiShellFileGuid, L"UEFI Shell",
> LOAD_OPTION_ACTIVE);    if (FixedPcdGetBool (PcdBootManagerEscape))
> {     Print (diff --git
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib
> .inf
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib
> .inf
> index f9626175e2..a3951b7a7e 100644
> ---
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib
> .inf
> +++
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerL
> +++ ib.inf
> @@ -1,7 +1,7 @@
>  ## @file #  Include all platform action which can be customized by
> IBV/OEM. #-#  Copyright (c) 2012 - 2021, Intel Corporation. All rights
> reserved.<BR>+#  Copyright (c) 2012 - 2023, Intel Corporation. All rights
> reserved.<BR> #  SPDX-License-Identifier: BSD-2-Clause-Patent # ##@@
> -32,6 +32,7 @@
>    MdePkg/MdePkg.dec   MdeModulePkg/MdeModulePkg.dec
> UefiPayloadPkg/UefiPayloadPkg.dec+  ShellPkg/ShellPkg.dec
> [LibraryClasses]   BaseLib@@ -52,6 +53,7 @@
>  [Guids]   gEfiEndOfDxeEventGroupGuid
> gEdkiiBootManagerMenuFileGuid+  gUefiShellFileGuid  [Protocols]
> gEfiGenericMemTestProtocolGuid  ## CONSUMES@@ -69,7 +71,6 @@
>    gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow
> gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn
> gEfiMdeModulePkgTokenSpaceGuid.PcdConInConnectOnDemand-
> gUefiPayloadPkgTokenSpaceGuid.PcdShellFile
> gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
> gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits
> gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParitydiff --git
> a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
> index a23a7b5a78..8d111f3a90 100644
> --- a/UefiPayloadPkg/UefiPayloadPkg.dec
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dec
> @@ -67,9 +67,6 @@
> gUefiPayloadPkgTokenSpaceGuid.PcdPayloadFdMemSize|0|UINT32|0x10000
> 002
>  ## Save bootloader parameter
> gUefiPayloadPkgTokenSpaceGuid.PcdBootloaderParameter|0|UINT64|0x100
> 00004 -## FFS filename to find the shell
> application.-gUefiPayloadPkgTokenSpaceGuid.PcdShellFile|{ 0x83, 0xA5,
0x04,
> 0x7C, 0x3E, 0x9E, 0x1c, 0x4f, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4,
> 0xD1 }|VOID*|0x10000005- ## Used to help reduce fragmentation in the EFI
> memory map
> gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0x
> 19|UINT32|0x10000012
> gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS|0x04|
> UINT32|0x10000013--
> 2.39.1.windows.1
> 
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#104812):
> https://edk2.groups.io/g/devel/message/104812
> Mute This Topic: https://groups.io/mt/98859456/1781375
> Group Owner: devel+ow...@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [guo.d...@intel.com]
> -=-=-=-=-=-=
> 
> 
> 
> 
> 
> 





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#104828): https://edk2.groups.io/g/devel/message/104828
Mute This Topic: https://groups.io/mt/98894131/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to