[edk2-devel] [patch 04/11] MdeModulePkg/Core: Remove PcdFrameworkCompatibilitySupport usage

Liming Gao liming.gao at intel.com
Wed May 8 08:23:01 UTC 2019


Dandan:
  I am OK to submit the separate BZ to remove the header definition of EFI_PE32_IMAGE_PROTOCOL. 

  For this patch, the change is good. Reviewed-by: Liming Gao <liming.gao at intel.com>

Thanks
Liming
>-----Original Message-----
>From: Bi, Dandan
>Sent: Tuesday, May 07, 2019 3:08 PM
>To: Wu, Hao A <hao.a.wu at intel.com>; devel at edk2.groups.io
>Cc: Gao, Liming <liming.gao at intel.com>; Bi, Dandan <dandan.bi at intel.com>
>Subject: RE: [edk2-devel] [patch 04/11] MdeModulePkg/Core: Remove
>PcdFrameworkCompatibilitySupport usage
>
>Hi Hao and Liming,
>
>Any comments for this patch itself?
>As for whether delete the header definition of EFI_PE32_IMAGE_PROTOCOL ,
>it is another topic. Liming, do you have any comments on this one?
>
>Thanks,
>Dandan
>> -----Original Message-----
>> From: Wu, Hao A
>> Sent: Monday, May 6, 2019 10:55 AM
>> To: Bi, Dandan <dandan.bi at intel.com>; devel at edk2.groups.io
>> Cc: Gao, Liming <liming.gao at intel.com>
>> Subject: RE: [edk2-devel] [patch 04/11] MdeModulePkg/Core: Remove
>> PcdFrameworkCompatibilitySupport usage
>>
>> > -----Original Message-----
>> > From: Bi, Dandan
>> > Sent: Monday, May 06, 2019 10:48 AM
>> > To: Wu, Hao A; devel at edk2.groups.io
>> > Cc: Gao, Liming; Bi, Dandan
>> > Subject: RE: [edk2-devel] [patch 04/11] MdeModulePkg/Core: Remove
>> > PcdFrameworkCompatibilitySupport usage
>> >
>> > > -----Original Message-----
>> > > From: Wu, Hao A
>> > > Sent: Monday, May 6, 2019 9:23 AM
>> > > To: devel at edk2.groups.io; Bi, Dandan <dandan.bi at intel.com>
>> > > Cc: Gao, Liming <liming.gao at intel.com>
>> > > Subject: RE: [edk2-devel] [patch 04/11] MdeModulePkg/Core: Remove
>> > > PcdFrameworkCompatibilitySupport usage
>> > >
>> > > > -----Original Message-----
>> > > > From: devel at edk2.groups.io [mailto:devel at edk2.groups.io] On
>Behalf
>> > > > Of Dandan Bi
>> > > > Sent: Monday, April 29, 2019 10:16 AM
>> > > > To: devel at edk2.groups.io
>> > > > Cc: Gao, Liming
>> > > > Subject: [edk2-devel] [patch 04/11] MdeModulePkg/Core: Remove
>> > > > PcdFrameworkCompatibilitySupport usage
>> > > >
>> > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1464
>> > > >
>> > > > Currently Framework compatibility is not needed and
>> > > > PcdFrameworkCompatibilitySupport will be removed from edk2.
>> > > > So remove the usage of this PCD firstly.
>> > > >
>> > > > Cc: Liming Gao <liming.gao at intel.com>
>> > > > Signed-off-by: Dandan Bi <dandan.bi at intel.com>
>> > > > ---
>> > > >  MdeModulePkg/Core/Dxe/DxeMain.inf   |   6 +-
>> > > >  MdeModulePkg/Core/Dxe/Image/Image.c | 132
>> > > > +---------------------------  MdeModulePkg/Core/Dxe/Image/Image.h
>> > > > +|
>> > > > 85 +-----------------  MdeModulePkg/Core/Pei/FwVol/FwVol.c |  65
>> > > > ----------
>> > > ----
>> > > >  MdeModulePkg/Core/Pei/PeiMain.inf   |   1 -
>> > > >  5 files changed, 3 insertions(+), 286 deletions(-)
>> > > >
>> > > > diff --git a/MdeModulePkg/Core/Dxe/DxeMain.inf
>> > > > b/MdeModulePkg/Core/Dxe/DxeMain.inf
>> > > > index 8dee5bee0a..61161bee28 100644
>> > > > --- a/MdeModulePkg/Core/Dxe/DxeMain.inf
>> > > > +++ b/MdeModulePkg/Core/Dxe/DxeMain.inf
>> > > > @@ -1,11 +1,11 @@
>> > > >  ## @file
>> > > >  #  This is core module in DXE phase.
>> > > >  #
>> > > >  #  It provides an implementation of DXE Core that is compliant
>> > > > with DXE
>> > CIS.
>> > > >  #
>> > > > -#  Copyright (c) 2006 - 2018, Intel Corporation. All rights
>> > > > reserved.<BR>
>> > > > +#  Copyright (c) 2006 - 2019, Intel Corporation. All rights
>> > > > +reserved.<BR>
>> > > >  #  SPDX-License-Identifier: BSD-2-Clause-Patent  #  ##
>> > > >
>> > > >  [Defines]
>> > > > @@ -130,11 +130,10 @@
>> > > >
>> > > >  [Protocols]
>> > > >    ## PRODUCES
>> > > >    ## SOMETIMES_CONSUMES
>> > > >    gEfiDecompressProtocolGuid
>> > > > -  gEfiLoadPeImageProtocolGuid                   ## SOMETIMES_PRODUCES
>> #
>> > > > Produces when PcdFrameworkCompatibilitySupport is set
>> > >
>> > > A couple of questions.
>> > >
>> > > Is '#include <Protocol/LoadPe32Image.h>' in
>> > > MdeModulePkg\Core\Dxe\DxeMain.h still needed?
>> > >
>> > > Can we remove EFI_PE32_IMAGE_PROTOCOL altogether? Seems to me
>> there
>> > > is no other consumer within edk2.
>> > >
>> > > Best Regards,
>> > > Hao Wu
>> >
>> > Hi Hao,
>> >
>> > 1. Yes,  since following definitions in <Protocol/LoadPe32Image.h> are
>> > still used in MdeModulePkg\Core\Dxe\Image\Image.c
>> > #define EFI_LOAD_PE_IMAGE_ATTRIBUTE_RUNTIME_REGISTRATION
>> > 0x01
>> > #define
>> >
>> EFI_LOAD_PE_IMAGE_ATTRIBUTE_DEBUG_IMAGE_INFO_TABLE_REGISTRA
>> TIO
>> > N  0x02
>>
>> OK. I overlooked that these definitions are still being used.
>>
>> >
>> > 2. I also think we can remove this protocol, but I prefer a separate
>> > patch (not covered by this patch series) to remove it and solve the
>> > dependency issue in 1 together. Is it OK to you?
>>
>> As point 1 mentioned above, I think the protocol should be kept to preserve
>> the definitions.
>>
>> Maybe Liming will have some comments on this.
>>
>> Best Regards,
>> Hao Wu
>>
>> >
>> > Thanks,
>> > Dandan
>> > >
>> > > >    gEfiSimpleFileSystemProtocolGuid              ##
>SOMETIMES_CONSUMES
>> > > >    gEfiLoadFileProtocolGuid                      ## SOMETIMES_CONSUMES
>> > > >    gEfiLoadFile2ProtocolGuid                     ## SOMETIMES_CONSUMES
>> > > >    gEfiBusSpecificDriverOverrideProtocolGuid     ##
>> > SOMETIMES_CONSUMES
>> > > >    gEfiDriverFamilyOverrideProtocolGuid          ##
>> SOMETIMES_CONSUMES
>> > > > @@ -171,13 +170,10 @@
>> > > >    gEfiVariableWriteArchProtocolGuid             ## CONSUMES
>> > > >    gEfiVariableArchProtocolGuid                  ## CONSUMES
>> > > >    gEfiCapsuleArchProtocolGuid                   ## CONSUMES
>> > > >    gEfiWatchdogTimerArchProtocolGuid             ## CONSUMES
>> > > >
>> > > > -[FeaturePcd]
>> > > > -
>> > >
>> gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport
>> > > > ## CONSUMES
>> > > > -
>> > > >  [Pcd]
>> > > >
>> > > >
>> > >
>>
>gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressBootTimeCodePage
>> > > Nu
>> > > > mber    ## SOMETIMES_CONSUMES
>> > > >
>> > > >
>> > >
>>
>gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressRuntimeCodePageN
>> > > um
>> > > > ber     ## SOMETIMES_CONSUMES
>> > > >
>> gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable
>> > > > ## CONSUMES
>> > > >
>> > >
>> gEfiMdeModulePkgTokenSpaceGuid.PcdMaxEfiSystemTablePointerAddress
>> > > > ## CONSUMES
>> > > > diff --git a/MdeModulePkg/Core/Dxe/Image/Image.c
>> > > > b/MdeModulePkg/Core/Dxe/Image/Image.c
>> > > > index de5b8bed27..22a87ecf6d 100644
>> > > > --- a/MdeModulePkg/Core/Dxe/Image/Image.c
>> > > > +++ b/MdeModulePkg/Core/Dxe/Image/Image.c
>> > > > @@ -1,9 +1,9 @@
>> > > >  /** @file
>> > > >    Core image handling services to load and unload PeImage.
>> > > >
>> > > > -Copyright (c) 2006 - 2018, Intel Corporation. All rights
>> > > > reserved.<BR>
>> > > > +Copyright (c) 2006 - 2019, Intel Corporation. All rights
>> > > > +reserved.<BR>
>> > > >  SPDX-License-Identifier: BSD-2-Clause-Patent
>> > > >
>> > > >  **/
>> > > >
>> > > >  #include "DxeMain.h"
>> > > > @@ -12,19 +12,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>> > > > // // Module Globals  //  LOADED_IMAGE_PRIVATE_DATA
>> > > > *mCurrentImage
>> > > =
>> > > > NULL;
>> > > >
>> > > > -LOAD_PE32_IMAGE_PRIVATE_DATA  mLoadPe32PrivateData = {
>> > > > -  LOAD_PE32_IMAGE_PRIVATE_DATA_SIGNATURE,
>> > > > -  NULL,
>> > > > -  {
>> > > > -    CoreLoadImageEx,
>> > > > -    CoreUnloadImageEx
>> > > > -  }
>> > > > -};
>> > > > -
>> > > >  typedef struct {
>> > > >    LIST_ENTRY                            Link;
>> > > >    EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL  *Emulator;
>> > > >    UINT16                                MachineType;
>> > > >  } EMULATOR_ENTRY;
>> > > > @@ -274,22 +265,10 @@ CoreInitializeImageServices (
>> > > >               );
>> > > >    ASSERT_EFI_ERROR(Status);
>> > > >
>> > > >    InitializeListHead (&mAvailableEmulators);
>> > > >
>> > > > -  if (FeaturePcdGet (PcdFrameworkCompatibilitySupport)) {
>> > > > -    //
>> > > > -    // Export DXE Core PE Loader functionality for backward
>compatibility.
>> > > > -    //
>> > > > -    Status = CoreInstallProtocolInterface (
>> > > > -               &mLoadPe32PrivateData.Handle,
>> > > > -               &gEfiLoadPeImageProtocolGuid,
>> > > > -               EFI_NATIVE_INTERFACE,
>> > > > -               &mLoadPe32PrivateData.Pe32Image
>> > > > -               );
>> > > > -  }
>> > > > -
>> > > >    ProtectUefiImage (&Image->Info, Image->LoadedImageDevicePath);
>> > > >
>> > > >    return Status;
>> > > >  }
>> > > >
>> > > > @@ -1564,96 +1543,10 @@ CoreLoadImage (
>> > > >    PERF_LOAD_IMAGE_END (Handle);
>> > > >
>> > > >    return Status;
>> > > >  }
>> > > >
>> > > > -
>> > > > -
>> > > > -/**
>> > > > -  Loads an EFI image into memory and returns a handle to the
>> > > > image with extended parameters.
>> > > > -
>> > > > -  @param  This                    Calling context
>> > > > -  @param  ParentImageHandle       The caller's image handle.
>> > > > -  @param  FilePath                The specific file path from which the image
>> is
>> > > > -                                  loaded.
>> > > > -  @param  SourceBuffer            If not NULL, a pointer to the memory
>> > > location
>> > > > -                                  containing a copy of the image to be loaded.
>> > > > -  @param  SourceSize              The size in bytes of SourceBuffer.
>> > > > -  @param  DstBuffer               The buffer to store the image.
>> > > > -  @param  NumberOfPages           For input, specifies the space size of
>> the
>> > > > -                                  image by caller if not NULL. For output,
>> > > > -                                  specifies the actual space size needed.
>> > > > -  @param  ImageHandle             Image handle for output.
>> > > > -  @param  EntryPoint              Image entry point for output.
>> > > > -  @param  Attribute               The bit mask of attributes to set for the
>> load
>> > > > -                                  PE image.
>> > > > -
>> > > > -  @retval EFI_SUCCESS             The image was loaded into memory.
>> > > > -  @retval EFI_NOT_FOUND           The FilePath was not found.
>> > > > -  @retval EFI_INVALID_PARAMETER   One of the parameters has an
>> invalid
>> > > > value.
>> > > > -  @retval EFI_UNSUPPORTED         The image type is not supported, or
>> the
>> > > > device
>> > > > -                                  path cannot be parsed to locate the proper
>> > > > -                                  protocol for loading the file.
>> > > > -  @retval EFI_OUT_OF_RESOURCES    Image was not loaded due to
>> > > insufficient
>> > > > -                                  resources.
>> > > > -  @retval EFI_LOAD_ERROR          Image was not loaded because the
>> > image
>> > > > format was corrupt or not
>> > > > -                                  understood.
>> > > > -  @retval EFI_DEVICE_ERROR        Image was not loaded because the
>> > > device
>> > > > returned a read error.
>> > > > -  @retval EFI_ACCESS_DENIED       Image was not loaded because the
>> > > platform
>> > > > policy prohibits the
>> > > > -                                  image from being loaded. NULL is returned in
>> > > > *ImageHandle.
>> > > > -  @retval EFI_SECURITY_VIOLATION  Image was loaded and an
>> > > ImageHandle
>> > > > was created with a
>> > > > -                                  valid EFI_LOADED_IMAGE_PROTOCOL. However, the
>> > > > current
>> > > > -                                  platform policy specifies that the image should not
>be
>> > > > started.
>> > > > -
>> > > > -**/
>> > > > -EFI_STATUS
>> > > > -EFIAPI
>> > > > -CoreLoadImageEx (
>> > > > -  IN  EFI_PE32_IMAGE_PROTOCOL          *This,
>> > > > -  IN  EFI_HANDLE                       ParentImageHandle,
>> > > > -  IN  EFI_DEVICE_PATH_PROTOCOL         *FilePath,
>> > > > -  IN  VOID                             *SourceBuffer       OPTIONAL,
>> > > > -  IN  UINTN                            SourceSize,
>> > > > -  IN  EFI_PHYSICAL_ADDRESS             DstBuffer           OPTIONAL,
>> > > > -  OUT UINTN                            *NumberOfPages      OPTIONAL,
>> > > > -  OUT EFI_HANDLE                       *ImageHandle,
>> > > > -  OUT EFI_PHYSICAL_ADDRESS             *EntryPoint         OPTIONAL,
>> > > > -  IN  UINT32                           Attribute
>> > > > -  )
>> > > > -{
>> > > > -  EFI_STATUS    Status;
>> > > > -  EFI_HANDLE    Handle;
>> > > > -
>> > > > -  PERF_LOAD_IMAGE_BEGIN (NULL);
>> > > > -
>> > > > -  Status = CoreLoadImageCommon (
>> > > > -           TRUE,
>> > > > -           ParentImageHandle,
>> > > > -           FilePath,
>> > > > -           SourceBuffer,
>> > > > -           SourceSize,
>> > > > -           DstBuffer,
>> > > > -           NumberOfPages,
>> > > > -           ImageHandle,
>> > > > -           EntryPoint,
>> > > > -           Attribute
>> > > > -           );
>> > > > -
>> > > > -  Handle = NULL;
>> > > > -  if (!EFI_ERROR (Status)) {
>> > > > -    //
>> > > > -    // ImageHandle will be valid only Status is success.
>> > > > -    //
>> > > > -    Handle = *ImageHandle;
>> > > > -  }
>> > > > -
>> > > > -  PERF_LOAD_IMAGE_END (Handle);
>> > > > -
>> > > > -  return Status;
>> > > > -}
>> > > > -
>> > > > -
>> > > >  /**
>> > > >    Transfer control to a loaded image's entry point.
>> > > >
>> > > >    @param  ImageHandle             Handle of image to be started.
>> > > >    @param  ExitDataSize            Pointer of the size to ExitData
>> > > > @@ -2010,28 +1903,5 @@ CoreUnloadImage (
>> > > >    }
>> > > >
>> > > >  Done:
>> > > >    return Status;
>> > > >  }
>> > > > -
>> > > > -
>> > > > -
>> > > > -/**
>> > > > -  Unload the specified image.
>> > > > -
>> > > > -  @param  This                    Indicates the calling context.
>> > > > -  @param  ImageHandle             The specified image handle.
>> > > > -
>> > > > -  @retval EFI_INVALID_PARAMETER   Image handle is NULL.
>> > > > -  @retval EFI_UNSUPPORTED         Attempt to unload an unsupported
>> > > image.
>> > > > -  @retval EFI_SUCCESS             Image successfully unloaded.
>> > > > -
>> > > > -**/
>> > > > -EFI_STATUS
>> > > > -EFIAPI
>> > > > -CoreUnloadImageEx (
>> > > > -  IN EFI_PE32_IMAGE_PROTOCOL  *This,
>> > > > -  IN EFI_HANDLE                         ImageHandle
>> > > > -  )
>> > > > -{
>> > > > -  return CoreUnloadImage (ImageHandle); -} diff --git
>> > > > a/MdeModulePkg/Core/Dxe/Image/Image.h
>> > > > b/MdeModulePkg/Core/Dxe/Image/Image.h
>> > > > index 6020a27371..e9c44ab2a7 100644
>> > > > --- a/MdeModulePkg/Core/Dxe/Image/Image.h
>> > > > +++ b/MdeModulePkg/Core/Dxe/Image/Image.h
>> > > > @@ -1,30 +1,17 @@
>> > > >  /** @file
>> > > >    Data structure and functions to load and unload PeImage.
>> > > >
>> > > > -Copyright (c) 2006 - 2018, Intel Corporation. All rights
>> > > > reserved.<BR>
>> > > > +Copyright (c) 2006 - 2019, Intel Corporation. All rights
>> > > > +reserved.<BR>
>> > > >  SPDX-License-Identifier: BSD-2-Clause-Patent
>> > > >
>> > > >  **/
>> > > >
>> > > >
>> > > >  #ifndef _IMAGE_H_
>> > > >  #define _IMAGE_H_
>> > > >
>> > > > -#define LOAD_PE32_IMAGE_PRIVATE_DATA_SIGNATURE
>> > > > SIGNATURE_32('l','p','e','i')
>> > > > -
>> > > > -typedef struct {
>> > > > -  UINTN                       Signature;
>> > > > -  /// Image handle
>> > > > -  EFI_HANDLE                  Handle;
>> > > > -  EFI_PE32_IMAGE_PROTOCOL     Pe32Image;
>> > > > -} LOAD_PE32_IMAGE_PRIVATE_DATA;
>> > > > -
>> > > > -#define LOAD_PE32_IMAGE_PRIVATE_DATA_FROM_THIS(a) \
>> > > > -          CR(a, LOAD_PE32_IMAGE_PRIVATE_DATA, Pe32Image,
>> > > > LOAD_PE32_IMAGE_PRIVATE_DATA_SIGNATURE)
>> > > > -
>> > > > -
>> > > >  //
>> > > >  // Private Data Types
>> > > >  //
>> > > >  #define IMAGE_FILE_HANDLE_SIGNATURE
>> SIGNATURE_32('i','m','g','f')
>> > > >  typedef struct {
>> > > > @@ -32,76 +19,6 @@ typedef struct {
>> > > >    BOOLEAN             FreeBuffer;
>> > > >    VOID                *Source;
>> > > >    UINTN               SourceSize;
>> > > >  } IMAGE_FILE_HANDLE;
>> > > >
>> > > > -/**
>> > > > -  Loads an EFI image into memory and returns a handle to the
>> > > > image with extended parameters.
>> > > > -
>> > > > -  @param  This                    Calling context
>> > > > -  @param  ParentImageHandle       The caller's image handle.
>> > > > -  @param  FilePath                The specific file path from which the image
>> is
>> > > > -                                  loaded.
>> > > > -  @param  SourceBuffer            If not NULL, a pointer to the memory
>> > > location
>> > > > -                                  containing a copy of the image to be loaded.
>> > > > -  @param  SourceSize              The size in bytes of SourceBuffer.
>> > > > -  @param  DstBuffer               The buffer to store the image.
>> > > > -  @param  NumberOfPages           For input, specifies the space size of
>> the
>> > > > -                                  image by caller if not NULL. For output,
>> > > > -                                  specifies the actual space size needed.
>> > > > -  @param  ImageHandle             Image handle for output.
>> > > > -  @param  EntryPoint              Image entry point for output.
>> > > > -  @param  Attribute               The bit mask of attributes to set for the
>> load
>> > > > -                                  PE image.
>> > > > -
>> > > > -  @retval EFI_SUCCESS             The image was loaded into memory.
>> > > > -  @retval EFI_NOT_FOUND           The FilePath was not found.
>> > > > -  @retval EFI_INVALID_PARAMETER   One of the parameters has an
>> invalid
>> > > > value.
>> > > > -  @retval EFI_UNSUPPORTED         The image type is not supported, or
>> the
>> > > > device
>> > > > -                                  path cannot be parsed to locate the proper
>> > > > -                                  protocol for loading the file.
>> > > > -  @retval EFI_OUT_OF_RESOURCES    Image was not loaded due to
>> > > insufficient
>> > > > -                                  resources.
>> > > > -  @retval EFI_LOAD_ERROR          Image was not loaded because the
>> > image
>> > > > format was corrupt or not
>> > > > -                                  understood.
>> > > > -  @retval EFI_DEVICE_ERROR        Image was not loaded because the
>> > > device
>> > > > returned a read error.
>> > > > -  @retval EFI_ACCESS_DENIED       Image was not loaded because the
>> > > platform
>> > > > policy prohibits the
>> > > > -                                  image from being loaded. NULL is returned in
>> > > > *ImageHandle.
>> > > > -  @retval EFI_SECURITY_VIOLATION  Image was loaded and an
>> > > ImageHandle
>> > > > was created with a
>> > > > -                                  valid EFI_LOADED_IMAGE_PROTOCOL. However, the
>> > > > current
>> > > > -                                  platform policy specifies that the image should not
>be
>> > > > started.
>> > > > -
>> > > > -**/
>> > > > -EFI_STATUS
>> > > > -EFIAPI
>> > > > -CoreLoadImageEx (
>> > > > -  IN  EFI_PE32_IMAGE_PROTOCOL          *This,
>> > > > -  IN  EFI_HANDLE                       ParentImageHandle,
>> > > > -  IN  EFI_DEVICE_PATH_PROTOCOL         *FilePath,
>> > > > -  IN  VOID                             *SourceBuffer       OPTIONAL,
>> > > > -  IN  UINTN                            SourceSize,
>> > > > -  IN  EFI_PHYSICAL_ADDRESS             DstBuffer           OPTIONAL,
>> > > > -  OUT UINTN                            *NumberOfPages      OPTIONAL,
>> > > > -  OUT EFI_HANDLE                       *ImageHandle,
>> > > > -  OUT EFI_PHYSICAL_ADDRESS             *EntryPoint         OPTIONAL,
>> > > > -  IN  UINT32                           Attribute
>> > > > -  );
>> > > > -
>> > > > -
>> > > > -/**
>> > > > -  Unload the specified image.
>> > > > -
>> > > > -  @param  This                    Indicates the calling context.
>> > > > -  @param  ImageHandle             The specified image handle.
>> > > > -
>> > > > -  @retval EFI_INVALID_PARAMETER   Image handle is NULL.
>> > > > -  @retval EFI_UNSUPPORTED         Attempt to unload an unsupported
>> > > image.
>> > > > -  @retval EFI_SUCCESS             Image successfully unloaded.
>> > > > -
>> > > > -**/
>> > > > -EFI_STATUS
>> > > > -EFIAPI
>> > > > -CoreUnloadImageEx (
>> > > > -  IN EFI_PE32_IMAGE_PROTOCOL  *This,
>> > > > -  IN EFI_HANDLE                         ImageHandle
>> > > > -  );
>> > > >  #endif
>> > > > diff --git a/MdeModulePkg/Core/Pei/FwVol/FwVol.c
>> > > > b/MdeModulePkg/Core/Pei/FwVol/FwVol.c
>> > > > index f817ba04e2..709db00694 100644
>> > > > --- a/MdeModulePkg/Core/Pei/FwVol/FwVol.c
>> > > > +++ b/MdeModulePkg/Core/Pei/FwVol/FwVol.c
>> > > > @@ -1092,19 +1092,10 @@ PeiFfsFindNextFile (  {
>> > > >    PEI_CORE_FV_HANDLE      *CoreFvHandle;
>> > > >
>> > > >    CoreFvHandle = FvHandleToCoreHandle (FvHandle);
>> > > >
>> > > > -  //
>> > > > -  // To make backward compatiblity, if can not find corresponding
>> > > > the handle of FV
>> > > > -  // then treat FV as build-in FFS2/FFS3 format and memory mapped
>> > > > FV that FV handle is pointed
>> > > > -  // to the address of first byte of FV.
>> > > > -  //
>> > > > -  if ((CoreFvHandle == NULL) && FeaturePcdGet
>> > > > (PcdFrameworkCompatibilitySupport)) {
>> > > > -    return FindFileEx (FvHandle, NULL, SearchType, FileHandle, NULL);
>> > > > -  }
>> > > > -
>> > > >    if ((CoreFvHandle == NULL) || CoreFvHandle->FvPpi == NULL) {
>> > > >      return EFI_NOT_FOUND;
>> > > >    }
>> > > >
>> > > >    return CoreFvHandle->FvPpi->FindFileByType
>> > > > (CoreFvHandle->FvPpi, SearchType, FvHandle, FileHandle); @@
>> > > > -2109,66 +2100,10 @@ PEI_CORE_FV_HANDLE *
>> FindNextCoreFvHandle (
>> > > >    IN PEI_CORE_INSTANCE  *Private,
>> > > >    IN UINTN              Instance
>> > > >    )
>> > > >  {
>> > > > -  UINTN                    Index;
>> > > > -  BOOLEAN                  Match;
>> > > > -  EFI_HOB_FIRMWARE_VOLUME  *FvHob;
>> > > > -
>> > > > -  //
>> > > > -  // Handle Framework FvHob and Install FvInfo Ppi for it.
>> > > > -  //
>> > > > -  if (FeaturePcdGet (PcdFrameworkCompatibilitySupport)) {
>> > > > -    //
>> > > > -    // Loop to search the wanted FirmwareVolume which supports FFS
>> > > > -    //
>> > > > -    FvHob = (EFI_HOB_FIRMWARE_VOLUME *)GetFirstHob
>> > > (EFI_HOB_TYPE_FV);
>> > > > -    while (FvHob != NULL) {
>> > > > -      //
>> > > > -      // Search whether FvHob has been installed into PeiCore's FV
>> database.
>> > > > -      // If found, no need install new FvInfoPpi for it.
>> > > > -      //
>> > > > -      for (Index = 0, Match = FALSE; Index < Private->FvCount; Index++)
>{
>> > > > -        if ((EFI_PEI_FV_HANDLE)(UINTN)FvHob->BaseAddress ==
>Private-
>> > > > >Fv[Index].FvHeader) {
>> > > > -          Match = TRUE;
>> > > > -          break;
>> > > > -        }
>> > > > -      }
>> > > > -
>> > > > -      //
>> > > > -      // Search whether FvHob has been cached into PeiCore's Unknown
>> FV
>> > > > database.
>> > > > -      // If found, no need install new FvInfoPpi for it.
>> > > > -      //
>> > > > -      if (!Match) {
>> > > > -        for (Index = 0; Index < Private->UnknownFvInfoCount; Index ++)
>{
>> > > > -          if ((UINTN)FvHob->BaseAddress == (UINTN)Private-
>> > > > >UnknownFvInfo[Index].FvInfo) {
>> > > > -            Match = TRUE;
>> > > > -            break;
>> > > > -          }
>> > > > -        }
>> > > > -      }
>> > > > -
>> > > > -      //
>> > > > -      // If the Fv in FvHob has not been installed into PeiCore's FV
>> database
>> > > and
>> > > > has
>> > > > -      // not been cached into PeiCore's Unknown FV database, install a
>> new
>> > > > FvInfoPpi
>> > > > -      // for it then PeiCore will dispatch it in callback of FvInfoPpi.
>> > > > -      //
>> > > > -      if (!Match) {
>> > > > -        PeiServicesInstallFvInfoPpi (
>> > > > -          &(((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvHob-
>> > > >BaseAddress)-
>> > > > >FileSystemGuid),
>> > > > -          (VOID *)(UINTN)FvHob->BaseAddress,
>> > > > -          (UINT32)FvHob->Length,
>> > > > -          NULL,
>> > > > -          NULL
>> > > > -          );
>> > > > -      }
>> > > > -
>> > > > -      FvHob = (EFI_HOB_FIRMWARE_VOLUME *)GetNextHob
>> > > > (EFI_HOB_TYPE_FV, (VOID *)((UINTN)FvHob + FvHob-
>> > > >Header.HobLength));
>> > > > -    }
>> > > > -  }
>> > > > -
>> > > >    if (Instance >= Private->FvCount) {
>> > > >      return NULL;
>> > > >    }
>> > > >
>> > > >    return &Private->Fv[Instance];
>> > > > diff --git a/MdeModulePkg/Core/Pei/PeiMain.inf
>> > > > b/MdeModulePkg/Core/Pei/PeiMain.inf
>> > > > index c8a6d5b80b..7c482dacfc 100644
>> > > > --- a/MdeModulePkg/Core/Pei/PeiMain.inf
>> > > > +++ b/MdeModulePkg/Core/Pei/PeiMain.inf
>> > > > @@ -100,11 +100,10 @@
>> > > >    gEfiPeiCoreFvLocationPpiGuid                  ## SOMETIMES_CONSUMES
>> > > >
>> > > >  [Pcd]
>> > > >    gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreMaxPeiStackSize
>> > > > ## CONSUMES
>> > > >
>> > > >
>> > >
>> gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSecti
>> > > onFi
>> > > > rst  ## CONSUMES
>> > > > -
>> > >
>> gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport
>> > > > ## CONSUMES
>> > > >
>> > >
>> gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressPeiCodePageNumb
>> > > er
>> > > > ## SOMETIMES_CONSUMES
>> > > >
>> > > >
>> > >
>>
>gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressBootTimeCodePage
>> > > Nu
>> > > > mber    ## SOMETIMES_CONSUMES
>> > > >
>> > > >
>> > >
>>
>gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressRuntimeCodePageN
>> > > um
>> > > > ber     ## SOMETIMES_CONSUMES
>> > > >
>> gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable
>> > > > ## CONSUMES
>> > > >    gEfiMdeModulePkgTokenSpaceGuid.PcdShadowPeimOnS3Boot
>> > > > ## CONSUMES
>> > > > --
>> > > > 2.18.0.windows.1
>> > > >
>> > > >
>> > > > 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#40185): https://edk2.groups.io/g/devel/message/40185
Mute This Topic: https://groups.io/mt/31378998/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