audk/MdePkg/Library
Hao Wu 2ecd829972 MdePkg/BaseLib: Add new AsmLfence API
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1193

This commit will add a new BaseLib API AsmLfence(). This API will perform
a serializing operation on all load-from-memory instructions that were
issued prior to the call of this function. Please note that this API is
only available on IA-32 and x64.

The purpose of adding this API is to mitigate of the [CVE-2017-5753]
Bounds Check Bypass issue when untrusted data are being processed within
SMM. More details can be referred at the 'Bounds check bypass mitigation'
section at the below link:

https://software.intel.com/security-software-guidance/insights/host-firmware-speculative-execution-side-channel-mitigation

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
2018-09-30 13:06:42 +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: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseLib MdePkg/BaseLib: Add new AsmLfence API 2018-09-30 13:06:42 +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: Clean up source files 2018-06-28 11:19:47 +08: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 XADD operands in GCC IA32/X64 assembly 2018-09-26 14:02:07 +02:00
BaseTimerLibNullTemplate MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseUefiDecompressLib MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +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: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +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: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +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: Add new EfiLocateXXXAcpiTable() APIs 2018-09-27 14:25:32 +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