[edk2-devel] [patch 04/11] MdeModulePkg/Core: Remove PcdFrameworkCompatibilitySupport usage
Wu, Hao A
hao.a.wu at intel.com
Mon May 6 01:22:35 UTC 2019
> -----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
> 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.PcdLoadFixAddressBootTimeCodePageNu
> mber ## SOMETIMES_CONSUMES
>
> gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressRuntimeCodePageNum
> 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.PcdPeiCoreImageLoaderSearchTeSectionFi
> rst ## CONSUMES
> - gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport
> ## CONSUMES
> gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressPeiCodePageNumber
> ## SOMETIMES_CONSUMES
>
> gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressBootTimeCodePageNu
> mber ## SOMETIMES_CONSUMES
>
> gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressRuntimeCodePageNum
> 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 (#40010): https://edk2.groups.io/g/devel/message/40010
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