mbox series

[edk2,v2,0/7] MdeModulePkg: add support for dispatching foreign arch PE/COFF images

Message ID 20180915132859.25727-1-ard.biesheuvel@linaro.org
Headers show
Series MdeModulePkg: add support for dispatching foreign arch PE/COFF images | expand

Message

Ard Biesheuvel Sept. 15, 2018, 1:28 p.m. UTC
Add the basic plumbing to DXE core, the PCI bus driver and the boot manager
to allow PE/COFF images to be dispatched that target an architecture that is
not native for the platform, but which is supported by one of potentially
several available emulators.

One implementation of such an emulator can be found here:
https://github.com/ardbiesheuvel/X86EmulatorPkg

This also allows us to get rid of the special treatment of EBC images in
core code. Instead, the EbcDxe driver is augmented with an implementation
of the EDK2 PE/COFF image emulator so that internal knowledge of how EBC
is implemented (I-cache flushing, thunks) is removed from the DXE core.

Changes since v2:
- subsume the EBC handling into the EDK2 emulator protocol and abstract
  away from EBC specifics in core code.
- allow multiple emulator implementations to co-exist
- incorporate Star's review feedback

Cc: Vincent Zimmer <vincent.zimmer@intel.com>
Cc: Brian Richardson <brian.richardson@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Andrew Fish <afish@apple.com>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Jaben Carsey <jaben.carsey@intel.com>
Cc: Steven Shi <steven.shi@intel.com>

Ard Biesheuvel (7):
  MdeModulePkg: introduce PE/COFF image emulator protocol
  MdeModulePkg/DxeCore: invoke the emulator protocol for foreign images
  MdeModulePkg/PciBusDxe: invoke PE/COFF emulator for foreign option
    ROMs
  MdeModulePkg/UefiBootManagerLib: allow foreign Driver#### images
  MdeModulePkg/EbcDxe: implement the PE/COFF emulator protocol
  MdePkg/UefiBaseType.h: treat EBC as a non-native machine type
  MdeModulePkg/DxeCore: remove explicit EBC handling

 MdeModulePkg/Bus/Pci/PciBusDxe/PciBus.h       |   1 +
 MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf  |   1 +
 .../Bus/Pci/PciBusDxe/PciOptionRomSupport.c   |  51 ++++++-
 MdeModulePkg/Core/Dxe/DxeMain.h               |   6 +-
 MdeModulePkg/Core/Dxe/DxeMain.inf             |   2 +-
 MdeModulePkg/Core/Dxe/Image/Image.c           | 141 +++++++++++-------
 .../Include/Protocol/PeCoffImageEmulator.h    |  99 ++++++++++++
 .../Library/UefiBootManagerLib/BmLoadOption.c |  51 ++++++-
 .../Library/UefiBootManagerLib/InternalBm.h   |   1 +
 .../UefiBootManagerLib/UefiBootManagerLib.inf |   1 +
 MdeModulePkg/MdeModulePkg.dec                 |   4 +
 MdeModulePkg/Universal/EbcDxe/EbcDxe.inf      |   3 +
 MdeModulePkg/Universal/EbcDxe/EbcInt.c        | 124 +++++++++++++++
 MdeModulePkg/Universal/EbcDxe/EbcInt.h        |   3 +
 MdePkg/Include/Uefi/UefiBaseType.h            |   8 +-
 15 files changed, 432 insertions(+), 64 deletions(-)
 create mode 100644 MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h

-- 
2.17.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Comments

Yao, Jiewen Sept. 18, 2018, 7:32 a.m. UTC | #1
HI Ard
This is a great feature.

May I know what test has been done for this patch series?

Would you please share that information? No matter your unit test, or system level test.

Thank you
Yao Jiewen


> -----Original Message-----

> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of

> Ard Biesheuvel

> Sent: Saturday, September 15, 2018 9:29 PM

> To: edk2-devel@lists.01.org

> Cc: Ni, Ruiyu <ruiyu.ni@intel.com>; Zimmer, Vincent

> <vincent.zimmer@intel.com>; Dong, Eric <eric.dong@intel.com>; Andrew

> Fish <afish@apple.com>; Carsey, Jaben <jaben.carsey@intel.com>;

> Richardson, Brian <brian.richardson@intel.com>; Gao, Liming

> <liming.gao@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>;

> Zeng, Star <star.zeng@intel.com>

> Subject: [edk2] [PATCH v2 0/7] MdeModulePkg: add support for dispatching

> foreign arch PE/COFF images

> 

> Add the basic plumbing to DXE core, the PCI bus driver and the boot manager

> to allow PE/COFF images to be dispatched that target an architecture that is

> not native for the platform, but which is supported by one of potentially

> several available emulators.

> 

> One implementation of such an emulator can be found here:

> https://github.com/ardbiesheuvel/X86EmulatorPkg

> 

> This also allows us to get rid of the special treatment of EBC images in

> core code. Instead, the EbcDxe driver is augmented with an implementation

> of the EDK2 PE/COFF image emulator so that internal knowledge of how EBC

> is implemented (I-cache flushing, thunks) is removed from the DXE core.

> 

> Changes since v2:

> - subsume the EBC handling into the EDK2 emulator protocol and abstract

>   away from EBC specifics in core code.

> - allow multiple emulator implementations to co-exist

> - incorporate Star's review feedback

> 

> Cc: Vincent Zimmer <vincent.zimmer@intel.com>

> Cc: Brian Richardson <brian.richardson@intel.com>

> Cc: Michael D Kinney <michael.d.kinney@intel.com>

> Cc: Andrew Fish <afish@apple.com>

> Cc: Leif Lindholm <leif.lindholm@linaro.org>

> Cc: Star Zeng <star.zeng@intel.com>

> Cc: Eric Dong <eric.dong@intel.com>

> Cc: Ruiyu Ni <ruiyu.ni@intel.com>

> Cc: Liming Gao <liming.gao@intel.com>

> Cc: Jaben Carsey <jaben.carsey@intel.com>

> Cc: Steven Shi <steven.shi@intel.com>

> 

> Ard Biesheuvel (7):

>   MdeModulePkg: introduce PE/COFF image emulator protocol

>   MdeModulePkg/DxeCore: invoke the emulator protocol for foreign

> images

>   MdeModulePkg/PciBusDxe: invoke PE/COFF emulator for foreign option

>     ROMs

>   MdeModulePkg/UefiBootManagerLib: allow foreign Driver#### images

>   MdeModulePkg/EbcDxe: implement the PE/COFF emulator protocol

>   MdePkg/UefiBaseType.h: treat EBC as a non-native machine type

>   MdeModulePkg/DxeCore: remove explicit EBC handling

> 

>  MdeModulePkg/Bus/Pci/PciBusDxe/PciBus.h       |   1 +

>  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf  |   1 +

>  .../Bus/Pci/PciBusDxe/PciOptionRomSupport.c   |  51 ++++++-

>  MdeModulePkg/Core/Dxe/DxeMain.h               |   6 +-

>  MdeModulePkg/Core/Dxe/DxeMain.inf             |   2 +-

>  MdeModulePkg/Core/Dxe/Image/Image.c           | 141

> +++++++++++-------

>  .../Include/Protocol/PeCoffImageEmulator.h    |  99 ++++++++++++

>  .../Library/UefiBootManagerLib/BmLoadOption.c |  51 ++++++-

>  .../Library/UefiBootManagerLib/InternalBm.h   |   1 +

>  .../UefiBootManagerLib/UefiBootManagerLib.inf |   1 +

>  MdeModulePkg/MdeModulePkg.dec                 |   4 +

>  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf      |   3 +

>  MdeModulePkg/Universal/EbcDxe/EbcInt.c        | 124

> +++++++++++++++

>  MdeModulePkg/Universal/EbcDxe/EbcInt.h        |   3 +

>  MdePkg/Include/Uefi/UefiBaseType.h            |   8 +-

>  15 files changed, 432 insertions(+), 64 deletions(-)

>  create mode 100644

> MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h

> 

> --

> 2.17.1

> 

> _______________________________________________

> edk2-devel mailing list

> edk2-devel@lists.01.org

> https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Ard Biesheuvel Sept. 18, 2018, 1:53 p.m. UTC | #2
On 18 September 2018 at 00:32, Yao, Jiewen <jiewen.yao@intel.com> wrote:
> HI Ard

> This is a great feature.

>


Thanks!

> May I know what test has been done for this patch series?

>

> Would you please share that information? No matter your unit test, or system level test.

>


I have used ArmVirtPkg/ArmVirtQemu.dsc built for AARCH64 in two configurations:
- one replacing the native FAT driver built from source with the EBC
binary version
- another one replacing the FAT driver and including the X86 emulator [0]

The tests involved accessing a FAT partition (both builds) and running
the X86 version of iPXE (the latter build only)



[0] https://github.com/ardbiesheuvel/X86EmulatorPkg


>> -----Original Message-----

>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of

>> Ard Biesheuvel

>> Sent: Saturday, September 15, 2018 9:29 PM

>> To: edk2-devel@lists.01.org

>> Cc: Ni, Ruiyu <ruiyu.ni@intel.com>; Zimmer, Vincent

>> <vincent.zimmer@intel.com>; Dong, Eric <eric.dong@intel.com>; Andrew

>> Fish <afish@apple.com>; Carsey, Jaben <jaben.carsey@intel.com>;

>> Richardson, Brian <brian.richardson@intel.com>; Gao, Liming

>> <liming.gao@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>;

>> Zeng, Star <star.zeng@intel.com>

>> Subject: [edk2] [PATCH v2 0/7] MdeModulePkg: add support for dispatching

>> foreign arch PE/COFF images

>>

>> Add the basic plumbing to DXE core, the PCI bus driver and the boot manager

>> to allow PE/COFF images to be dispatched that target an architecture that is

>> not native for the platform, but which is supported by one of potentially

>> several available emulators.

>>

>> One implementation of such an emulator can be found here:

>> https://github.com/ardbiesheuvel/X86EmulatorPkg

>>

>> This also allows us to get rid of the special treatment of EBC images in

>> core code. Instead, the EbcDxe driver is augmented with an implementation

>> of the EDK2 PE/COFF image emulator so that internal knowledge of how EBC

>> is implemented (I-cache flushing, thunks) is removed from the DXE core.

>>

>> Changes since v2:

>> - subsume the EBC handling into the EDK2 emulator protocol and abstract

>>   away from EBC specifics in core code.

>> - allow multiple emulator implementations to co-exist

>> - incorporate Star's review feedback

>>

>> Cc: Vincent Zimmer <vincent.zimmer@intel.com>

>> Cc: Brian Richardson <brian.richardson@intel.com>

>> Cc: Michael D Kinney <michael.d.kinney@intel.com>

>> Cc: Andrew Fish <afish@apple.com>

>> Cc: Leif Lindholm <leif.lindholm@linaro.org>

>> Cc: Star Zeng <star.zeng@intel.com>

>> Cc: Eric Dong <eric.dong@intel.com>

>> Cc: Ruiyu Ni <ruiyu.ni@intel.com>

>> Cc: Liming Gao <liming.gao@intel.com>

>> Cc: Jaben Carsey <jaben.carsey@intel.com>

>> Cc: Steven Shi <steven.shi@intel.com>

>>

>> Ard Biesheuvel (7):

>>   MdeModulePkg: introduce PE/COFF image emulator protocol

>>   MdeModulePkg/DxeCore: invoke the emulator protocol for foreign

>> images

>>   MdeModulePkg/PciBusDxe: invoke PE/COFF emulator for foreign option

>>     ROMs

>>   MdeModulePkg/UefiBootManagerLib: allow foreign Driver#### images

>>   MdeModulePkg/EbcDxe: implement the PE/COFF emulator protocol

>>   MdePkg/UefiBaseType.h: treat EBC as a non-native machine type

>>   MdeModulePkg/DxeCore: remove explicit EBC handling

>>

>>  MdeModulePkg/Bus/Pci/PciBusDxe/PciBus.h       |   1 +

>>  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf  |   1 +

>>  .../Bus/Pci/PciBusDxe/PciOptionRomSupport.c   |  51 ++++++-

>>  MdeModulePkg/Core/Dxe/DxeMain.h               |   6 +-

>>  MdeModulePkg/Core/Dxe/DxeMain.inf             |   2 +-

>>  MdeModulePkg/Core/Dxe/Image/Image.c           | 141

>> +++++++++++-------

>>  .../Include/Protocol/PeCoffImageEmulator.h    |  99 ++++++++++++

>>  .../Library/UefiBootManagerLib/BmLoadOption.c |  51 ++++++-

>>  .../Library/UefiBootManagerLib/InternalBm.h   |   1 +

>>  .../UefiBootManagerLib/UefiBootManagerLib.inf |   1 +

>>  MdeModulePkg/MdeModulePkg.dec                 |   4 +

>>  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf      |   3 +

>>  MdeModulePkg/Universal/EbcDxe/EbcInt.c        | 124

>> +++++++++++++++

>>  MdeModulePkg/Universal/EbcDxe/EbcInt.h        |   3 +

>>  MdePkg/Include/Uefi/UefiBaseType.h            |   8 +-

>>  15 files changed, 432 insertions(+), 64 deletions(-)

>>  create mode 100644

>> MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h

>>

>> --

>> 2.17.1

>>

>> _______________________________________________

>> edk2-devel mailing list

>> edk2-devel@lists.01.org

>> https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Yao, Jiewen Sept. 19, 2018, 9:29 a.m. UTC | #3
Thank you Ard. Good to know. 

Did you also try some security test, such as input a bad image to see if the code can return failure gracefully? 

Or enable secure boot to see if the image verification process still works well ?

thank you!
Yao, Jiewen


> 在 2018年9月18日,下午9:53,Ard Biesheuvel <ard.biesheuvel@linaro.org> 写道:

> 

>> On 18 September 2018 at 00:32, Yao, Jiewen <jiewen.yao@intel.com> wrote:

>> HI Ard

>> This is a great feature.

>> 

> 

> Thanks!

> 

>> May I know what test has been done for this patch series?

>> 

>> Would you please share that information? No matter your unit test, or system level test.

>> 

> 

> I have used ArmVirtPkg/ArmVirtQemu.dsc built for AARCH64 in two configurations:

> - one replacing the native FAT driver built from source with the EBC

> binary version

> - another one replacing the FAT driver and including the X86 emulator [0]

> 

> The tests involved accessing a FAT partition (both builds) and running

> the X86 version of iPXE (the latter build only)

> 

> 

> 

> [0] https://github.com/ardbiesheuvel/X86EmulatorPkg

> 

> 

>>> -----Original Message-----

>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of

>>> Ard Biesheuvel

>>> Sent: Saturday, September 15, 2018 9:29 PM

>>> To: edk2-devel@lists.01.org

>>> Cc: Ni, Ruiyu <ruiyu.ni@intel.com>; Zimmer, Vincent

>>> <vincent.zimmer@intel.com>; Dong, Eric <eric.dong@intel.com>; Andrew

>>> Fish <afish@apple.com>; Carsey, Jaben <jaben.carsey@intel.com>;

>>> Richardson, Brian <brian.richardson@intel.com>; Gao, Liming

>>> <liming.gao@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>;

>>> Zeng, Star <star.zeng@intel.com>

>>> Subject: [edk2] [PATCH v2 0/7] MdeModulePkg: add support for dispatching

>>> foreign arch PE/COFF images

>>> 

>>> Add the basic plumbing to DXE core, the PCI bus driver and the boot manager

>>> to allow PE/COFF images to be dispatched that target an architecture that is

>>> not native for the platform, but which is supported by one of potentially

>>> several available emulators.

>>> 

>>> One implementation of such an emulator can be found here:

>>> https://github.com/ardbiesheuvel/X86EmulatorPkg

>>> 

>>> This also allows us to get rid of the special treatment of EBC images in

>>> core code. Instead, the EbcDxe driver is augmented with an implementation

>>> of the EDK2 PE/COFF image emulator so that internal knowledge of how EBC

>>> is implemented (I-cache flushing, thunks) is removed from the DXE core.

>>> 

>>> Changes since v2:

>>> - subsume the EBC handling into the EDK2 emulator protocol and abstract

>>>  away from EBC specifics in core code.

>>> - allow multiple emulator implementations to co-exist

>>> - incorporate Star's review feedback

>>> 

>>> Cc: Vincent Zimmer <vincent.zimmer@intel.com>

>>> Cc: Brian Richardson <brian.richardson@intel.com>

>>> Cc: Michael D Kinney <michael.d.kinney@intel.com>

>>> Cc: Andrew Fish <afish@apple.com>

>>> Cc: Leif Lindholm <leif.lindholm@linaro.org>

>>> Cc: Star Zeng <star.zeng@intel.com>

>>> Cc: Eric Dong <eric.dong@intel.com>

>>> Cc: Ruiyu Ni <ruiyu.ni@intel.com>

>>> Cc: Liming Gao <liming.gao@intel.com>

>>> Cc: Jaben Carsey <jaben.carsey@intel.com>

>>> Cc: Steven Shi <steven.shi@intel.com>

>>> 

>>> Ard Biesheuvel (7):

>>>  MdeModulePkg: introduce PE/COFF image emulator protocol

>>>  MdeModulePkg/DxeCore: invoke the emulator protocol for foreign

>>> images

>>>  MdeModulePkg/PciBusDxe: invoke PE/COFF emulator for foreign option

>>>    ROMs

>>>  MdeModulePkg/UefiBootManagerLib: allow foreign Driver#### images

>>>  MdeModulePkg/EbcDxe: implement the PE/COFF emulator protocol

>>>  MdePkg/UefiBaseType.h: treat EBC as a non-native machine type

>>>  MdeModulePkg/DxeCore: remove explicit EBC handling

>>> 

>>> MdeModulePkg/Bus/Pci/PciBusDxe/PciBus.h       |   1 +

>>> MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf  |   1 +

>>> .../Bus/Pci/PciBusDxe/PciOptionRomSupport.c   |  51 ++++++-

>>> MdeModulePkg/Core/Dxe/DxeMain.h               |   6 +-

>>> MdeModulePkg/Core/Dxe/DxeMain.inf             |   2 +-

>>> MdeModulePkg/Core/Dxe/Image/Image.c           | 141

>>> +++++++++++-------

>>> .../Include/Protocol/PeCoffImageEmulator.h    |  99 ++++++++++++

>>> .../Library/UefiBootManagerLib/BmLoadOption.c |  51 ++++++-

>>> .../Library/UefiBootManagerLib/InternalBm.h   |   1 +

>>> .../UefiBootManagerLib/UefiBootManagerLib.inf |   1 +

>>> MdeModulePkg/MdeModulePkg.dec                 |   4 +

>>> MdeModulePkg/Universal/EbcDxe/EbcDxe.inf      |   3 +

>>> MdeModulePkg/Universal/EbcDxe/EbcInt.c        | 124

>>> +++++++++++++++

>>> MdeModulePkg/Universal/EbcDxe/EbcInt.h        |   3 +

>>> MdePkg/Include/Uefi/UefiBaseType.h            |   8 +-

>>> 15 files changed, 432 insertions(+), 64 deletions(-)

>>> create mode 100644

>>> MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h

>>> 

>>> --

>>> 2.17.1

>>> 

>>> _______________________________________________

>>> edk2-devel mailing list

>>> edk2-devel@lists.01.org

>>> https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Yao, Jiewen Sept. 19, 2018, 9:46 a.m. UTC | #4
One more, did you enable tpm to see if tpm measurement still works well ?

Also did defer image solution still takes effect with this change?

Sorry to ask many questions, I want to make sure the current security design still work with this new capability. 

thank you!
Yao, Jiewen


> 在 2018年9月19日,下午5:30,Yao, Jiewen <jiewen.yao@intel.com> 写道:

> 

> Thank you Ard. Good to know. 

> 

> Did you also try some security test, such as input a bad image to see if the code can return failure gracefully? 

> 

> Or enable secure boot to see if the image verification process still works well ?

> 

> thank you!

> Yao, Jiewen

> 

> 

>>> 在 2018年9月18日,下午9:53,Ard Biesheuvel <ard.biesheuvel@linaro.org> 写道:

>>> 

>>> On 18 September 2018 at 00:32, Yao, Jiewen <jiewen.yao@intel.com> wrote:

>>> HI Ard

>>> This is a great feature.

>>> 

>> 

>> Thanks!

>> 

>>> May I know what test has been done for this patch series?

>>> 

>>> Would you please share that information? No matter your unit test, or system level test.

>>> 

>> 

>> I have used ArmVirtPkg/ArmVirtQemu.dsc built for AARCH64 in two configurations:

>> - one replacing the native FAT driver built from source with the EBC

>> binary version

>> - another one replacing the FAT driver and including the X86 emulator [0]

>> 

>> The tests involved accessing a FAT partition (both builds) and running

>> the X86 version of iPXE (the latter build only)

>> 

>> 

>> 

>> [0] https://github.com/ardbiesheuvel/X86EmulatorPkg

>> 

>> 

>>>> -----Original Message-----

>>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of

>>>> Ard Biesheuvel

>>>> Sent: Saturday, September 15, 2018 9:29 PM

>>>> To: edk2-devel@lists.01.org

>>>> Cc: Ni, Ruiyu <ruiyu.ni@intel.com>; Zimmer, Vincent

>>>> <vincent.zimmer@intel.com>; Dong, Eric <eric.dong@intel.com>; Andrew

>>>> Fish <afish@apple.com>; Carsey, Jaben <jaben.carsey@intel.com>;

>>>> Richardson, Brian <brian.richardson@intel.com>; Gao, Liming

>>>> <liming.gao@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>;

>>>> Zeng, Star <star.zeng@intel.com>

>>>> Subject: [edk2] [PATCH v2 0/7] MdeModulePkg: add support for dispatching

>>>> foreign arch PE/COFF images

>>>> 

>>>> Add the basic plumbing to DXE core, the PCI bus driver and the boot manager

>>>> to allow PE/COFF images to be dispatched that target an architecture that is

>>>> not native for the platform, but which is supported by one of potentially

>>>> several available emulators.

>>>> 

>>>> One implementation of such an emulator can be found here:

>>>> https://github.com/ardbiesheuvel/X86EmulatorPkg

>>>> 

>>>> This also allows us to get rid of the special treatment of EBC images in

>>>> core code. Instead, the EbcDxe driver is augmented with an implementation

>>>> of the EDK2 PE/COFF image emulator so that internal knowledge of how EBC

>>>> is implemented (I-cache flushing, thunks) is removed from the DXE core.

>>>> 

>>>> Changes since v2:

>>>> - subsume the EBC handling into the EDK2 emulator protocol and abstract

>>>> away from EBC specifics in core code.

>>>> - allow multiple emulator implementations to co-exist

>>>> - incorporate Star's review feedback

>>>> 

>>>> Cc: Vincent Zimmer <vincent.zimmer@intel.com>

>>>> Cc: Brian Richardson <brian.richardson@intel.com>

>>>> Cc: Michael D Kinney <michael.d.kinney@intel.com>

>>>> Cc: Andrew Fish <afish@apple.com>

>>>> Cc: Leif Lindholm <leif.lindholm@linaro.org>

>>>> Cc: Star Zeng <star.zeng@intel.com>

>>>> Cc: Eric Dong <eric.dong@intel.com>

>>>> Cc: Ruiyu Ni <ruiyu.ni@intel.com>

>>>> Cc: Liming Gao <liming.gao@intel.com>

>>>> Cc: Jaben Carsey <jaben.carsey@intel.com>

>>>> Cc: Steven Shi <steven.shi@intel.com>

>>>> 

>>>> Ard Biesheuvel (7):

>>>> MdeModulePkg: introduce PE/COFF image emulator protocol

>>>> MdeModulePkg/DxeCore: invoke the emulator protocol for foreign

>>>> images

>>>> MdeModulePkg/PciBusDxe: invoke PE/COFF emulator for foreign option

>>>>   ROMs

>>>> MdeModulePkg/UefiBootManagerLib: allow foreign Driver#### images

>>>> MdeModulePkg/EbcDxe: implement the PE/COFF emulator protocol

>>>> MdePkg/UefiBaseType.h: treat EBC as a non-native machine type

>>>> MdeModulePkg/DxeCore: remove explicit EBC handling

>>>> 

>>>> MdeModulePkg/Bus/Pci/PciBusDxe/PciBus.h       |   1 +

>>>> MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf  |   1 +

>>>> .../Bus/Pci/PciBusDxe/PciOptionRomSupport.c   |  51 ++++++-

>>>> MdeModulePkg/Core/Dxe/DxeMain.h               |   6 +-

>>>> MdeModulePkg/Core/Dxe/DxeMain.inf             |   2 +-

>>>> MdeModulePkg/Core/Dxe/Image/Image.c           | 141

>>>> +++++++++++-------

>>>> .../Include/Protocol/PeCoffImageEmulator.h    |  99 ++++++++++++

>>>> .../Library/UefiBootManagerLib/BmLoadOption.c |  51 ++++++-

>>>> .../Library/UefiBootManagerLib/InternalBm.h   |   1 +

>>>> .../UefiBootManagerLib/UefiBootManagerLib.inf |   1 +

>>>> MdeModulePkg/MdeModulePkg.dec                 |   4 +

>>>> MdeModulePkg/Universal/EbcDxe/EbcDxe.inf      |   3 +

>>>> MdeModulePkg/Universal/EbcDxe/EbcInt.c        | 124

>>>> +++++++++++++++

>>>> MdeModulePkg/Universal/EbcDxe/EbcInt.h        |   3 +

>>>> MdePkg/Include/Uefi/UefiBaseType.h            |   8 +-

>>>> 15 files changed, 432 insertions(+), 64 deletions(-)

>>>> create mode 100644

>>>> MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h

>>>> 

>>>> --

>>>> 2.17.1

>>>> 

>>>> _______________________________________________

>>>> edk2-devel mailing list

>>>> edk2-devel@lists.01.org

>>>> https://lists.01.org/mailman/listinfo/edk2-devel

> _______________________________________________

> edk2-devel mailing list

> edk2-devel@lists.01.org

> https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Ard Biesheuvel Sept. 19, 2018, 1:55 p.m. UTC | #5
On 19 September 2018 at 02:29, Yao, Jiewen <jiewen.yao@intel.com> wrote:
> Thank you Ard. Good to know.

>

> Did you also try some security test, such as input a bad image to see if the code can return failure gracefully?

>

> Or enable secure boot to see if the image verification process still works well ?

>

> One more, did you enable tpm to see if tpm measurement still works well ?

>

> Also did defer image solution still takes effect with this change?

>

> Sorry to ask many questions, I want to make sure the current security design still work with this new capability.

>


Hello Jiewen,

As far as I can tell, all the security checks are done *before*
CoreLoadPeImage() is called, and the code flow has not changed at all
before that point.
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Yao, Jiewen Sept. 19, 2018, 2:15 p.m. UTC | #6
Ok. Cool!


> -----Original Message-----

> From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org]

> Sent: Wednesday, September 19, 2018 9:55 PM

> To: Yao, Jiewen <jiewen.yao@intel.com>

> Cc: Ni, Ruiyu <ruiyu.ni@intel.com>; Zimmer, Vincent

> <vincent.zimmer@intel.com>; Dong, Eric <eric.dong@intel.com>;

> edk2-devel@lists.01.org; Andrew Fish <afish@apple.com>; Gao, Liming

> <liming.gao@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>;

> Richardson, Brian <brian.richardson@intel.com>; Carsey, Jaben

> <jaben.carsey@intel.com>; Zeng, Star <star.zeng@intel.com>

> Subject: Re: [edk2] [PATCH v2 0/7] MdeModulePkg: add support for

> dispatching foreign arch PE/COFF images

> 

> On 19 September 2018 at 02:29, Yao, Jiewen <jiewen.yao@intel.com>

> wrote:

> > Thank you Ard. Good to know.

> >

> > Did you also try some security test, such as input a bad image to see if the

> code can return failure gracefully?

> >

> > Or enable secure boot to see if the image verification process still works

> well ?

> >

> > One more, did you enable tpm to see if tpm measurement still works well ?

> >

> > Also did defer image solution still takes effect with this change?

> >

> > Sorry to ask many questions, I want to make sure the current security

> design still work with this new capability.

> >

> 

> Hello Jiewen,

> 

> As far as I can tell, all the security checks are done *before*

> CoreLoadPeImage() is called, and the code flow has not changed at all

> before that point.

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel