Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Jian J Wang 7fef06af4e MdeModulePkg/Core: allow HeapGuard even before CpuArchProtocol installed
Due to the fact that HeapGuard needs CpuArchProtocol to update page
attributes, the feature is normally enabled after CpuArchProtocol is
installed. Since there're some drivers are loaded before CpuArchProtocl,
they cannot make use HeapGuard feature to detect potential issues.

This patch fixes above situation by updating the DXE core to skip the
NULL check against global gCpu in the IsMemoryTypeToGuard(), and adding
NULL check against gCpu in SetGuardPage() and UnsetGuardPage() to make
sure that they can be called but do nothing. This will allow HeapGuard to
record all guarded memory without setting the related Guard pages to not-
present.

Once the CpuArchProtocol is installed, a protocol notify will be called
to complete the work of setting Guard pages to not-present.

Please note that above changes will cause a #PF in GCD code during cleanup
of map entries, which is initiated by CpuDxe driver to update real mtrr
and paging attributes back to GCD. During that time, CpuDxe doesn't allow
GCD to update memory attributes and then any Guard page cannot be unset.
As a result, this will prevent Guarded memory from freeing during memory
map cleanup.

The solution is to avoid allocating guarded memory as memory map entries
in GCD code. It's done by setting global mOnGuarding to TRUE before memory
allocation and setting it back to FALSE afterwards in GCD function
CoreAllocateGcdMapEntry().

Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jian J Wang <jian.j.wang@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
2018-03-16 15:01:11 +08:00
AppPkg AppPkg/WebServer: Fix build failure. 2017-09-14 08:55:09 +08:00
ArmPkg ArmPkg/TimerDxe: Add ISB for timer compare value reload 2018-03-15 08:07:14 +00:00
ArmPlatformPkg ArmPlatformPkg/MemoryInitPeiLib: reserve rather than remove FV memory 2018-02-28 16:10:58 +00:00
ArmVirtPkg ArmVirtPkg/PlatformBootManagerLib: minimize the set of connected devices 2018-03-14 11:24:30 +01:00
BaseTools BaseTools: UPT: remove unused variable and inaccessible code. 2018-03-15 14:50:15 +08:00
BeagleBoardPkg BeagleBoardPkg: drop unused PcdCacheEnabled dependency 2018-02-09 09:40:11 +00:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CorebootModulePkg CorebootModulePkg/CbSupportDxe: Remove duplicated IO Space addition 2017-11-16 10:52:00 +08:00
CorebootPayloadPkg CorebootPayloadPkg/PciHostBridgeLib: clear aperture vars for (re)init 2018-03-15 08:25:56 +00:00
CryptoPkg CryptoPkg: Update package version to 0.98 2018-01-23 08:56:27 +08:00
DuetPkg DuetPkg: Add SafeIntLib and BmpSupportLib to DSC files 2018-02-11 16:06:31 -08:00
EdkCompatibilityPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EdkShellBinPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EdkShellPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EmbeddedPkg EmbeddedPkg: Correct the way of handling sections with a large size 2018-03-13 15:26:09 +00:00
EmulatorPkg EmulatorPkg: Undefine CR3 macro in Host.h 2018-02-27 18:33:51 +08:00
FatBinPkg FatBinPkg: New EnhancedFatDxe binaries for IA32, X64, EBC and IPF 2017-12-22 09:40:18 +08:00
FatPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFrameworkModulePkg IntelFrameworkModulePkg/GenericBdsLib: Remove the useless Perf codes 2018-02-12 11:36:15 +08:00
IntelFrameworkPkg IntelFrameworkPkg/FrameworkUefiLib: Sync with MdePkg/UefiLib 2018-02-11 15:10:17 -08:00
IntelFsp2Pkg IntelFsp2Pkg-Tools: GenCfgOpt.py shouldn't include specific UPD name 2017-11-08 20:44:29 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Update BaseFspWrapperApiLib to pass XCODE5 build 2018-01-18 15:39:54 +08:00
IntelFspPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFspWrapperPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelSiliconPkg IntelSiliconPkg/Vtd: Add missing dump in ExtContext. 2018-03-12 13:17:15 +08:00
MdeModulePkg MdeModulePkg/Core: allow HeapGuard even before CpuArchProtocol installed 2018-03-16 15:01:11 +08:00
MdePkg MdePkg/DevicePathFromText: Fix byte orders of iSCSI.Lun 2018-03-03 15:12:50 +08:00
NetworkPkg NetworkPkg/IScsiDxe: Fix the ISCSI connection failure in certain case. 2018-03-13 16:55:24 +08:00
Nt32Pkg Nt32Pkg/Nt32Pkg.fdf: Increase the size of FLASH Device. 2018-02-08 08:23:26 +08:00
Omap35xxPkg Omap35xxPkg: add GetTimeInNanoSecond implementation 2017-11-30 14:32:30 +00:00
OptionRomPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
OvmfPkg OvmfPkg/PciHostBridgeLib: clear PCI aperture vars for (re)init 2018-03-15 08:26:05 +00:00
PcAtChipsetPkg PcAtChipsetPkg PeiAcpiTimerLib: Add the missing DebugLib header file 2018-02-07 09:16:15 +08:00
QuarkPlatformPkg QuarkPlatformPkg: remove TrEE reference. 2018-03-16 14:19:43 +08:00
QuarkSocPkg QuarkSocPkg/QNCSmmDispatcher: Fix use after free issue #2 2017-08-16 19:42:17 -07:00
SecurityPkg SecurityPkg/dec: remove TrEE. 2018-03-16 14:19:54 +08:00
ShellBinPkg ShellBinPkg: Ia32/X64 Shell binary update. 2018-03-07 16:30:32 +08:00
ShellPkg ShellPkg/UefiHandleParsingLib: remove TrEE reference. 2018-03-16 14:19:42 +08:00
SignedCapsulePkg SignedCapsulePkg: Update EdkiiSystemCapsuleLib to check PCD value 2017-12-08 13:31:00 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg DebugUsb3: Re-Support IOMMU 2018-03-15 14:14:26 +08:00
StdLib StdLib/BsdSocketLib: Remove unused variables 2017-11-13 07:39:06 -08:00
StdLibPrivateInternalFiles edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
UefiCpuPkg UefiCpuPkg CpuExceptionHandlerLib: use FixedPcdGetSize() as the macro value 2018-03-16 14:34:44 +08:00
UnixPkg UnixPkg: Remove UnixPkg files (It is replaced by EmulatorPkg) 2013-07-29 21:09:55 +00:00
Vlv2DeviceRefCodePkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg/dsc/fdf: use Tcg2 instead of TrEE. 2018-03-16 14:19:45 +08:00
.gitignore edk2: Add .DS_Store to .gitignore for macOS 2017-05-19 15:14:34 -07:00
.gitmodules CryptoPkg: Adding OpenSSL as one submodule of EDKII repo 2018-01-18 14:06:15 +08:00
BuildNotes2.txt BaseTools: Updated BuildNotes URLs 2016-03-25 09:46:44 +08:00
Contributions.txt edk2: Fix typo in Contributions.txt 2017-08-16 17:50:44 +08:00
License.txt edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Maintainers.txt Maintainers.txt: Add Jiewen to be co-maintainer of SecurityPkg. 2018-03-02 09:25:00 +08:00
Readme.md edk2: Add Readme.md to root of edk2 repository 2017-08-03 11:02:25 -07:00
edksetup.bat BaseTools: suppress usage instructions with rebuild options 2017-07-04 10:16:13 +08:00
edksetup.sh BaseTools/edksetup.sh: fix invalid test for current working directory 2017-08-10 12:54:58 +08:00

Readme.md

EDK II Project

A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org.

Contributions to the EDK II open source project are covered by the TianoCore Contribution Agreement 1.1

The majority of the content in the EDK II open source project uses a BSD 2-Clause License. The EDK II open source project contains the following components that are covered by additional licenses:

The EDK II Project is composed of packages. The maintainers for each package are listed in Maintainers.txt.

Resources