audk/MdePkg/Library
Hao Wu d9f1cac51b MdePkg/BaseLib: Introduce new SpeculationBarrier API
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1417

X86 specific BaseLib API AsmLfence() was introduced to address the Spectre
Variant 1 (CVE-2017-5753) issue. The purpose of this API is to insert
barriers to stop speculative execution. However, the API is highly
architecture (X86) specific, and thus should be avoided using across
generic code.

To address this issue, this patch will add a new BaseLib API called
SpeculationBarrier(). Different architectures will have different
implementations for this API.

For IA32 and x64, the implementation of SpeculationBarrier() will
directly call AsmLfence().

For ARM and AARCH64, this patch will add a temporary empty implementation
as a placeholder. We hope experts in ARM can help to contribute the actual
implementation.

For EBC, similar to the ARM and AARCH64 cases, a temporary empty
implementation is added.

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2018-12-25 09:15:34 +08:00
..
BaseCacheMaintenanceLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseCpuLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseDebugLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseDebugLibSerialPort MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseDebugPrintErrorLevelLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseExtractGuidedSectionLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseIoLibIntrinsic MdePkg/BaseIoLibIntrinsicArmVirt ARM: avoid double word loads and stores 2018-11-15 04:31:42 -08:00
BaseLib MdePkg/BaseLib: Introduce new SpeculationBarrier API 2018-12-25 09:15:34 +08:00
BaseMemoryLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseMemoryLibMmx MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseMemoryLibOptDxe MdePkg/BaseMemoryLibOptDxe ARM: add missing function annotations 2018-12-13 12:45:49 +01:00
BaseMemoryLibOptPei MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseMemoryLibRepStr MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseMemoryLibSse2 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseOrderedCollectionRedBlackTreeLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePcdLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePciCf8Lib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePciExpressLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePciLibCf8 MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePciLibPciExpress MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePciSegmentInfoLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePciSegmentLibPci MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePeCoffExtraActionLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePeCoffGetEntryPointLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePeCoffLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePerformanceLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePostCodeLibDebug MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePostCodeLibPort80 MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BasePrintLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseReportStatusCodeLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseRngLib MdePkg: Convert all .uni files to utf-8 2015-12-15 04:53:50 +00:00
BaseS3BootScriptLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseS3IoLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseS3PciLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseS3PciSegmentLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseS3SmbusLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseS3StallLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseSafeIntLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseSerialPortLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseSmbusLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseStackCheckLib MdePkg BaseStackCheckLib: Correct style of file header 2018-03-20 10:25:06 +08:00
BaseSynchronizationLib MdePkg/BaseSynchronizationLib: Fix InternalSync[De|In]crement 2018-11-08 10:00:05 +08:00
BaseTimerLibNullTemplate MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseUefiDecompressLib MdePkg BaseUefiDecompressLib: Fix UEFI Decompression logic issue 2018-11-11 11:48:34 +08:00
DxeCoreEntryPoint MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxeCoreHobLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxeExtractGuidedSectionLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxeHobLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxeHstiLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxeIoLibCpuIo2 MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxePcdLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxeRuntimeDebugLibSerialPort MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxeRuntimePciExpressLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxeServicesLib MdePkg: Check input Ptrs in GetSectionFromAnyFvByFileType 2018-11-21 13:01:03 +08:00
DxeServicesTableLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
DxeSmbusLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PciSegmentLibSegmentInfo MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiCoreEntryPoint MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiDxePostCodeLibReportStatusCode MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiExtractGuidedSectionLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiHobLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiIoLibCpuIo MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiMemoryAllocationLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiMemoryLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiPcdLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiPciLibPciCfg2 MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiPciSegmentLibPciCfg2 MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiResourcePublicationLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiServicesLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiServicesTablePointerLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeiServicesTablePointerLibIdt MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiSmbusLibSmbus2Ppi MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
PeimEntryPoint MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
SecPeiDxeTimerLibCpu MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
SmiHandlerProfileLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
SmmIoLib MdePkg SmmIoLib: Use NULL pointer check instead of useless Status check 2017-06-06 09:07:10 +08:00
SmmIoLibSmmCpuIo2 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmmLibNull MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
SmmMemLib MdePkg/SmmMemLib: Avoid possible NULL ptr dereference 2018-07-31 13:07:44 +08:00
SmmMemoryAllocationLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmmPciExpressLib MdePkg: Add SMM PciExpressLib Instance 2016-09-27 11:01:23 +08:00
SmmPciLibPciRootBridgeIo MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmmPeriodicSmiLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmmServicesTableLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiApplicationEntryPoint MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiBootServicesTableLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiDebugLibConOut MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiDebugLibDebugPortProtocol MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiDebugLibStdErr MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiDevicePathLib MdePkg: check Length para before use in DevPathToTextUsbWWID 2018-11-21 13:01:02 +08:00
UefiDevicePathLibDevicePathProtocol MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiDriverEntryPoint MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiFileHandleLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiLib MdePkg UefiLib: Check Table against NULL in ScanTableInSDT 2018-10-21 09:57:44 +08:00
UefiMemoryAllocationLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiMemoryLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiPciLibPciRootBridgeIo MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiPciSegmentLibPciRootBridgeIo MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiRuntimeLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiRuntimeServicesTableLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiScsiLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
UefiUsbLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00