audk/MdeModulePkg/Library/DxeCapsuleLibFmp
Ard Biesheuvel 2c0d39ac47 MdeModulePkg/DxeCapsuleLibFmp: clone ESRT for runtime access
The DxeCapsuleLibFmp code accesses the ESRT table to decide whether
a certain capsule is an FMP capsule. Since the UEFI spec mandates
that the ESRT resides in EfiBootServicesData memory, this results
in problems at OS runtime, since the firmware implementation itself
cannot access memory that has not been virtually remapped.

So let's take a private copy of the ESRT at ReadyToBoot, and store
it in EfiRuntimeServicesData memory. The ESRT's size is order 10s
of bytes so the memory footprint is going to be negligigble.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2019-04-23 18:15:00 +02:00
..
DxeCapsuleLib.c MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeCapsuleLib.inf MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeCapsuleLib.uni MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeCapsuleProcessLib.c MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeCapsuleProcessLibNull.c MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeCapsuleReportLib.c MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeCapsuleReportLibNull.c MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeCapsuleRuntime.c MdeModulePkg/DxeCapsuleLibFmp: clone ESRT for runtime access 2019-04-23 18:15:00 +02:00
DxeRuntimeCapsuleLib.inf MdeModulePkg/DxeCapsuleLibFmp: clone ESRT for runtime access 2019-04-23 18:15:00 +02:00
DxeRuntimeCapsuleLib.uni MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00