REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1853 Code change form Mu project: https://github.com/microsoft/mu_basecore/blob/release/201903/ MdeModulePkg/Universal/CapsulePei/UefiCapsule.c#L801 Separate the capsule check function from GetCapsuleDescriptors to AreCapsulesStaged. The original one is unclear. Avoid querying the capsule variable twice. Use a fixed array to cache the SG list during count the number of SG list. Then allocate memory buffer to save the SG list from array. Using MemoryAllocationLib instead of memory function in Pei services. Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Michael Turner <Michael.Turner@microsoft.com> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com> Cc: Leif Lindholm <leif.lindholm@linaro.org> Signed-off-by: Zhichao gao <zhichao.gao@intel.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
94 lines
2.4 KiB
INI
94 lines
2.4 KiB
INI
## @file
|
|
# Capsule update PEIM supports EFI and UEFI.
|
|
#
|
|
# Caution: This module requires additional review when modified.
|
|
# This driver will have external input - capsule image.
|
|
# This external input must be validated carefully to avoid security issue like
|
|
# buffer overflow, integer overflow.
|
|
#
|
|
# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
|
|
# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
|
|
#
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
##
|
|
|
|
[Defines]
|
|
INF_VERSION = 0x00010005
|
|
BASE_NAME = CapsulePei
|
|
MODULE_UNI_FILE = CapsulePei.uni
|
|
FILE_GUID = C779F6D8-7113-4AA1-9648-EB1633C7D53B
|
|
MODULE_TYPE = PEIM
|
|
VERSION_STRING = 1.0
|
|
|
|
ENTRY_POINT = CapsuleMain
|
|
|
|
#
|
|
# The following information is for reference only and not required by the build tools.
|
|
#
|
|
# VALID_ARCHITECTURES = IA32 X64 EBC
|
|
#
|
|
|
|
[Sources]
|
|
UefiCapsule.c
|
|
Capsule.h
|
|
Common/CapsuleCoalesce.c
|
|
|
|
[Packages]
|
|
MdePkg/MdePkg.dec
|
|
MdeModulePkg/MdeModulePkg.dec
|
|
|
|
|
|
[LibraryClasses]
|
|
BaseLib
|
|
HobLib
|
|
BaseMemoryLib
|
|
MemoryAllocationLib
|
|
PeiServicesLib
|
|
PeimEntryPoint
|
|
DebugLib
|
|
PeiServicesTablePointerLib
|
|
PrintLib
|
|
ReportStatusCodeLib
|
|
|
|
[LibraryClasses.IA32]
|
|
PeCoffGetEntryPointLib
|
|
PcdLib
|
|
DebugAgentLib
|
|
|
|
[Guids]
|
|
## SOMETIMES_CONSUMES ## Variable:L"CapsuleUpdateData"
|
|
## SOMETIMES_CONSUMES ## Variable:L"CapsuleLongModeBuffer"
|
|
gEfiCapsuleVendorGuid
|
|
|
|
[Ppis]
|
|
gEfiPeiReadOnlyVariable2PpiGuid ## CONSUMES
|
|
gEfiPeiCapsulePpiGuid ## PRODUCES
|
|
|
|
[Ppis.IA32]
|
|
gEfiPeiLoadFilePpiGuid ## SOMETIMES_CONSUMES
|
|
|
|
[Pcd.IA32]
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleCoalesceFile ## SOMETIMES_CONSUMES
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable ## SOMETIMES_CONSUMES
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask ## CONSUMES
|
|
|
|
[FeaturePcd.IA32]
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUMES
|
|
|
|
[Depex]
|
|
gEfiPeiReadOnlyVariable2PpiGuid
|
|
|
|
# [BootMode]
|
|
# FLASH_UPDATE ## SOMETIMES_CONSUMES
|
|
|
|
# [Hob.IA32]
|
|
# UNDEFINED ## SOMETIMES_CONSUMES # CPU
|
|
|
|
# [Hob]
|
|
# UNDEFINED ## SOMETIMES_PRODUCES # UEFI_CAPSULE
|
|
|
|
|
|
[UserExtensions.TianoCore."ExtraFiles"]
|
|
CapsulePeiExtra.uni
|