> -----Original Message----- > From: Wu, Hao A > Sent: Monday, May 6, 2019 9:23 AM > To: devel@edk2.groups.io; Bi, Dandan <dandan...@intel.com> > Cc: Gao, Liming <liming....@intel.com> > Subject: RE: [edk2-devel] [patch 04/11] MdeModulePkg/Core: Remove > PcdFrameworkCompatibilitySupport usage > > > -----Original Message----- > > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of > > Dandan Bi > > Sent: Monday, April 29, 2019 10:16 AM > > To: devel@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....@intel.com> > > Signed-off-by: Dandan Bi <dandan...@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_REGISTRATION 0x02 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? 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 (#40026): https://edk2.groups.io/g/devel/message/40026 Mute This Topic: https://groups.io/mt/31378998/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-