From: "Ni, Ruiyu" <ruiyu.ni@Intel.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>, edk2-devel@lists.01.org
Cc: Vincent Zimmer <vincent.zimmer@intel.com>,
Brian Richardson <brian.richardson@intel.com>,
Michael D Kinney <michael.d.kinney@intel.com>,
Andrew Fish <afish@apple.com>,
Leif Lindholm <leif.lindholm@linaro.org>,
Star Zeng <star.zeng@intel.com>, Eric Dong <eric.dong@intel.com>,
Liming Gao <liming.gao@intel.com>,
Jaben Carsey <jaben.carsey@intel.com>,
Steven Shi <steven.shi@intel.com>
Subject: Re: [PATCH v2 7/7] MdeModulePkg/DxeCore: remove explicit EBC handling
Date: Tue, 18 Sep 2018 17:05:14 +0800 [thread overview]
Message-ID: <286cf4b7-853d-8dcf-f519-46db5359c851@Intel.com> (raw)
In-Reply-To: <20180915132859.25727-8-ard.biesheuvel@linaro.org>
On 9/15/2018 9:28 PM, Ard Biesheuvel wrote:
> Now that the EBC machine type is no longer classified as a
> natively supported machine type on the architectures that can
> support it via the EBC interpreter, the EBC specific handling
> in DXE core is no longer used and can be removed.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
> MdeModulePkg/Core/Dxe/DxeMain.h | 3 --
> MdeModulePkg/Core/Dxe/DxeMain.inf | 1 -
> MdeModulePkg/Core/Dxe/Image/Image.c | 53 ++------------------
> 3 files changed, 3 insertions(+), 54 deletions(-)
>
> diff --git a/MdeModulePkg/Core/Dxe/DxeMain.h b/MdeModulePkg/Core/Dxe/DxeMain.h
> index ff2418c5ae5e..c473006813fe 100644
> --- a/MdeModulePkg/Core/Dxe/DxeMain.h
> +++ b/MdeModulePkg/Core/Dxe/DxeMain.h
> @@ -42,7 +42,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> #include <Protocol/LoadPe32Image.h>
> #include <Protocol/Security.h>
> #include <Protocol/Security2.h>
> -#include <Protocol/Ebc.h>
> #include <Protocol/Reset.h>
> #include <Protocol/Cpu.h>
> #include <Protocol/Metronome.h>
> @@ -228,8 +227,6 @@ typedef struct {
> BASE_LIBRARY_JUMP_BUFFER *JumpContext;
> /// Machine type from PE image
> UINT16 Machine;
> - /// EBC Protocol pointer
> - EFI_EBC_PROTOCOL *Ebc;
> /// PE/COFF Image Emulator Protocol pointer
> EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *PeCoffEmu;
> /// Runtime image list
> diff --git a/MdeModulePkg/Core/Dxe/DxeMain.inf b/MdeModulePkg/Core/Dxe/DxeMain.inf
> index 63e650ee7c27..a969b869b331 100644
> --- a/MdeModulePkg/Core/Dxe/DxeMain.inf
> +++ b/MdeModulePkg/Core/Dxe/DxeMain.inf
> @@ -161,7 +161,6 @@
> gEfiLoadedImageProtocolGuid ## PRODUCES
> gEfiLoadedImageDevicePathProtocolGuid ## PRODUCES
> gEfiHiiPackageListProtocolGuid ## SOMETIMES_PRODUCES
> - gEfiEbcProtocolGuid ## SOMETIMES_CONSUMES
> gEfiSmmBase2ProtocolGuid ## SOMETIMES_CONSUMES
> gEfiBlockIoProtocolGuid ## SOMETIMES_CONSUMES
> gEdkiiPeCoffImageEmulatorProtocolGuid ## SOMETIMES_CONSUMES
> diff --git a/MdeModulePkg/Core/Dxe/Image/Image.c b/MdeModulePkg/Core/Dxe/Image/Image.c
> index 0a4bb3644af0..902a44455fdd 100644
> --- a/MdeModulePkg/Core/Dxe/Image/Image.c
> +++ b/MdeModulePkg/Core/Dxe/Image/Image.c
> @@ -66,7 +66,6 @@ LOADED_IMAGE_PRIVATE_DATA mCorePrivateImage = {
> NULL, // JumpBuffer
> NULL, // JumpContext
> 0, // Machine
> - NULL, // Ebc
> NULL, // PeCoffEmu
> NULL, // RuntimeData
> NULL // LoadedImageDevicePath
> @@ -83,9 +82,6 @@ typedef struct {
> CHAR16 *MachineTypeName;
> } MACHINE_TYPE_INFO;
>
> -//
> -// EBC machine is not listed in this table, because EBC is in the default supported scopes of other machine type.
> -//
> GLOBAL_REMOVE_IF_UNREFERENCED MACHINE_TYPE_INFO mMachineTypeInfo[] = {
> {EFI_IMAGE_MACHINE_IA32, L"IA32"},
> {EFI_IMAGE_MACHINE_IA64, L"IA64"},
> @@ -705,51 +701,15 @@ CoreLoadPeImage (
> InvalidateInstructionCacheRange ((VOID *)(UINTN)Image->ImageContext.ImageAddress, (UINTN)Image->ImageContext.ImageSize);
>
> //
> - // Copy the machine type from the context to the image private data. This
> - // is needed during image unload to know if we should call an EBC protocol
> - // to unload the image.
> + // Copy the machine type from the context to the image private data.
> //
> Image->Machine = Image->ImageContext.Machine;
>
> //
> - // Get the image entry point. If it's an EBC image, then call into the
> - // interpreter to create a thunk for the entry point and use the returned
> - // value for the entry point.
> + // Get the image entry point.
> //
> Image->EntryPoint = (EFI_IMAGE_ENTRY_POINT)(UINTN)Image->ImageContext.EntryPoint;
> - if (Image->ImageContext.Machine == EFI_IMAGE_MACHINE_EBC) {
> - //
> - // Locate the EBC interpreter protocol
> - //
> - Status = CoreLocateProtocol (&gEfiEbcProtocolGuid, NULL, (VOID **)&Image->Ebc);
> - if (EFI_ERROR(Status) || Image->Ebc == NULL) {
> - DEBUG ((DEBUG_LOAD | DEBUG_ERROR, "CoreLoadPeImage: There is no EBC interpreter for an EBC image.\n"));
> - goto Done;
> - }
> -
> - //
> - // Register a callback for flushing the instruction cache so that created
> - // thunks can be flushed.
> - //
> - Status = Image->Ebc->RegisterICacheFlush (Image->Ebc, (EBC_ICACHE_FLUSH)InvalidateInstructionCacheRange);
> - if (EFI_ERROR(Status)) {
> - goto Done;
> - }
> -
> - //
> - // Create a thunk for the image's entry point. This will be the new
> - // entry point for the image.
> - //
> - Status = Image->Ebc->CreateThunk (
> - Image->Ebc,
> - Image->Handle,
> - (VOID *)(UINTN) Image->ImageContext.EntryPoint,
> - (VOID **) &Image->EntryPoint
> - );
> - if (EFI_ERROR(Status)) {
> - goto Done;
> - }
> - } else if (Image->PeCoffEmu != NULL) {
> + if (Image->PeCoffEmu != NULL) {
> Status = Image->PeCoffEmu->RegisterImage (Image->PeCoffEmu,
> Image->ImageBasePage,
> EFI_PAGES_TO_SIZE (Image->NumberOfPages),
> @@ -939,13 +899,6 @@ CoreUnloadAndCloseImage (
>
> UnprotectUefiImage (&Image->Info, Image->LoadedImageDevicePath);
>
> - if (Image->Ebc != NULL) {
> - //
> - // If EBC protocol exists we must perform cleanups for this image.
> - //
> - Image->Ebc->UnloadImage (Image->Ebc, Image->Handle);
> - }
> -
> if (Image->PeCoffEmu != NULL) {
> //
> // If the PE/COFF Emulator protocol exists we must unregister the image.
>
Ard,
Does this change mean EBC and x86 won't be enabled together?
--
Thanks,
Ray
next prev parent reply other threads:[~2018-09-18 9:04 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-15 13:28 [PATCH v2 0/7] MdeModulePkg: add support for dispatching foreign arch PE/COFF images Ard Biesheuvel
2018-09-15 13:28 ` [PATCH v2 1/7] MdeModulePkg: introduce PE/COFF image emulator protocol Ard Biesheuvel
2018-09-15 13:28 ` [PATCH v2 2/7] MdeModulePkg/DxeCore: invoke the emulator protocol for foreign images Ard Biesheuvel
2018-09-15 13:28 ` [PATCH v2 3/7] MdeModulePkg/PciBusDxe: invoke PE/COFF emulator for foreign option ROMs Ard Biesheuvel
2018-09-15 13:28 ` [PATCH v2 4/7] MdeModulePkg/UefiBootManagerLib: allow foreign Driver#### images Ard Biesheuvel
2018-09-15 13:28 ` [PATCH v2 5/7] MdeModulePkg/EbcDxe: implement the PE/COFF emulator protocol Ard Biesheuvel
2018-09-15 13:28 ` [PATCH v2 6/7] MdePkg/UefiBaseType.h: treat EBC as a non-native machine type Ard Biesheuvel
2018-09-15 13:28 ` [PATCH v2 7/7] MdeModulePkg/DxeCore: remove explicit EBC handling Ard Biesheuvel
2018-09-18 9:05 ` Ni, Ruiyu [this message]
2018-09-18 13:47 ` Ard Biesheuvel
2018-09-19 2:16 ` Ni, Ruiyu
2018-09-19 4:56 ` Ard Biesheuvel
2018-09-18 7:32 ` [PATCH v2 0/7] MdeModulePkg: add support for dispatching foreign arch PE/COFF images Yao, Jiewen
2018-09-18 13:53 ` Ard Biesheuvel
2018-09-19 9:29 ` Yao, Jiewen
2018-09-19 9:46 ` Yao, Jiewen
2018-09-19 13:55 ` Ard Biesheuvel
2018-09-19 14:15 ` Yao, Jiewen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=286cf4b7-853d-8dcf-f519-46db5359c851@Intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox