Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Ard Biesheuvel e077a93dc6 MdeModulePkg/CapsuleRuntimeDxe: clean the capsule payload to DRAM
When capsule updates are staged for processing after a warm reboot,
they are copied into memory with the MMU and caches enabled. When
the capsule PEI gets around to coalescing the capsule, the MMU and
caches may still be disabled, and so on architectures where uncached
accesses are incoherent with the caches (such as ARM and AARCH64),
we need to ensure that the data passed into UpdateCapsule() is
written back to main memory before performing the warm reboot.

Unfortunately, on ARM, the only type of cache maintenance instructions
that are suitable for this purpose operate on virtual addresses only,
and given that the UpdateCapsule() prototype includes the physical
address of a linked list of scatter/gather data structures that are
mapped at an address that is unknown to the firmware (and may not even
be mapped at all when UpdateCapsule() is invoked), we can only perform
this cache maintenance at boot time. Fortunately, both Windows and Linux
only invoke UpdateCapsule() before calling ExitBootServices(), so this
is not a problem in practice.

In the future, we may propose adding a secure firmware service that
permits performing the cache maintenance at OS runtime, in which case
this code may be enhanced to call that service if available. For now,
we just fail any UpdateCapsule() calls performed at OS runtime on ARM.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2018-06-15 18:17:44 +02:00
AppPkg AppPkg/WebServer: Fix build failure. 2017-09-14 08:55:09 +08:00
ArmPkg ArmPkg/CompilerIntrinsicsLib: fix GCC8 warning for __aeabi_memcpy aliases 2018-06-11 11:41:36 +02:00
ArmPlatformPkg ArmPlatformPkg: Include PL011UartClock Lib 2018-06-15 12:57:13 +02:00
ArmVirtPkg ArmVirtPkg: add QemuRamfbDxe 2018-06-14 11:56:46 +02:00
BaseTools BaseTools/BinToPcd: Follow PEP-8 indent of 4 spaces 2018-06-14 15:43:40 -07: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 SCI_EN setting 2018-06-11 16:16:30 +08:00
CorebootPayloadPkg CorebootPayloadPkg: Conditionally add DebugAgentLib for DXE drivers 2018-03-30 07:28:18 +08:00
CryptoPkg CryptoPkg PeiCryptLib: Enable SHA384/512 support 2018-06-08 10:55:53 +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/TimeBaseLib: Add function to get Week day. 2018-06-05 16:18:21 +01:00
EmulatorPkg EmulatorPkg/SmbiosLib: Declare the correct library class. 2018-05-24 13:33:56 -07:00
FatBinPkg FatBinPkg: New EnhancedFatDxe binaries for IA32, X64, EBC and IPF 2017-12-22 09:40:18 +08:00
FatPkg FatPkg/EnhancedFatDxe: Ensure traverse of subtasks is delete-safe 2018-04-18 15:08:14 +08:00
IntelFrameworkModulePkg IntelFrameworkModulePkg: Remove X86 ASM and S files 2018-06-07 15:27:31 +08:00
IntelFrameworkPkg IntelFrameworkPkg UefiLib: Use comparison logic to check UINTN parameter 2018-06-12 09:23:12 +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 IntelVTdDxe: Fix incorrect code to clear VTd error 2018-06-06 12:46:43 +08:00
MdeModulePkg MdeModulePkg/CapsuleRuntimeDxe: clean the capsule payload to DRAM 2018-06-15 18:17:44 +02:00
MdePkg MdePkg UefiLib: Use comparison logic to check UINTN parameter 2018-06-12 09:23:11 +08:00
NetworkPkg NetworkPkg/NetworkPkg.dsc: Add the instance of library class [SafeIntLib]. 2018-05-07 11:39:32 +08:00
Nt32Pkg Nt32Pkg/NtGopInput: ReadKeyStrokeEx always return key state 2018-04-20 12:56:41 +08:00
Omap35xxPkg Omap35xxPkg/InterruptDxe: replace CPU Arch Protocol depex with notify 2018-04-12 21:24:12 +02:00
OptionRomPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
OvmfPkg OvmfPkg: add QemuRamfb to platform console 2018-06-14 11:56:45 +02:00
PcAtChipsetPkg PcAtChipsetPkg/PcRtc: Add two new PCD for RTC Index/Target registers 2018-05-28 14:49:29 +08:00
QuarkPlatformPkg QuarkPlatformPkg/PlatformFlashAccessLib: Add progress API 2018-05-28 12:23:23 -07:00
QuarkSocPkg QuarkSocPkg/QNCSmmDispatcher: Fix use after free issue #2 2017-08-16 19:42:17 -07:00
SecurityPkg SecurityPkg/SecureBootConfigDxe: Fix invalid NV data issue. 2018-06-15 23:30:35 +08:00
ShellBinPkg ShellBinPkg: Update ReadMe.txt 2018-03-19 14:39:02 +08:00
ShellPkg ShellPkg/Dp: Make the help info align with code 2018-06-12 15:50:55 +08:00
SignedCapsulePkg SignedCapsulePkg/SystemFirmwareUpdateDxe: Use progress API 2018-06-08 15:40:54 -07:00
SourceLevelDebugPkg SourceLevelDebugPkg: Remove X86 ASM and S files 2018-06-07 15:27:33 +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: Remove X86 ASM and S files 2018-06-07 15:27:36 +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/PlatformFlashAccessLib: Add progress API 2018-05-28 12:23:13 -07: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 Laszlo Ersek to stewards 2018-04-24 09:56:59 +01:00
Readme.md edk2: Add Readme.md to root of edk2 repository 2017-08-03 11:02:25 -07:00
StandaloneMmPkg Maintainers.txt: Add StandaloneMmPkg and maintainers 2018-03-21 01:13:40 +00: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