Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Jiewen Yao d1fddc4533 MdeModulePkg/Include: Add IOMMU protocol definition.
This protocol is to abstract DMA access from IOMMU.
1) Intel "DMAR" ACPI table.
2) AMD "IVRS" ACPI table
3) ARM "IORT" ACPI table.

There might be multiple IOMMU engines on one platform.
For example, one for graphic and one for rest PCI devices
(such as ATA/USB).
All IOMMU engines are reported by one ACPI table.

All IOMMU protocol provider should be based upon ACPI table.
This single IOMMU protocol can handle multiple IOMMU engines on one system.

This IOMMU protocol provider can use UEFI device path to distinguish
if the device is graphic or ATA/USB, and find out corresponding
IOMMU engine.

The IOMMU protocol provides 2 capabilities:
A) Set DMA access attribute - such as write/read control.
B) Remap DMA memory - such as remap above 4GiB system memory address
to below 4GiB device address.
It provides AllocateBuffer/FreeBuffer/Map/Unmap for DMA memory.
The remapping can be static (fixed at build time) or dynamic (allocate
at runtime).

4) AMD "SEV" feature.
We can have an AMD SEV specific IOMMU driver to produce IOMMU protocol,
and manage SEV bit.

Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Leo Duran <leo.duran@amd.com>
Cc: Brijesh Singh <brijesh.singh@amd.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Previous patch Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Previous patch Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Leo Duran <leo.duran@amd.com>
2017-05-17 16:05:12 +08:00
AppPkg AppPkg/Applications/Python/PyMod-2.7.2: Replace non-ascii characters 2017-04-10 08:34:08 +08:00
ArmPkg ArmPkg: copy/paste fixes in ARM ArmHvcLib/ArmSmcLib 2017-04-13 10:58:28 +01:00
ArmPlatformPkg ArmPlatformPkg,ArmVirtPkg: delete redundant PL031 functions 2017-05-10 14:28:37 +01:00
ArmVirtPkg ArmPlatformPkg,ArmVirtPkg: delete redundant PL031 functions 2017-05-10 14:28:37 +01:00
BaseTools BaseTools: Fix the bug for CArray PCD override in command line 2017-05-12 13:36:20 +08:00
BeagleBoardPkg BeagleBoardPkg: add missing BootLogoLib resolution 2017-03-31 11:43:22 +01:00
Conf
CorebootModulePkg
CorebootPayloadPkg
CryptoPkg CryptoPkg: Update package version to 0.97 2017-05-05 11:29:22 +08:00
DuetPkg DuetPkg: Add SortLib/UefiBootManagerLib 2017-03-20 14:48:18 +08:00
EdkCompatibilityPkg
EdkShellBinPkg
EdkShellPkg
EmbeddedPkg EmbeddedPkg: import EfiTimeBaseLib (as TimeBaseLib) 2017-05-10 14:28:14 +01:00
EmulatorPkg EmulatorPkg: Add SortLib/UefiBootManagerLib 2017-03-20 14:48:18 +08:00
FatBinPkg FatBinPkg: New EnhancedFatDxe binaries for IA32, X64, EBC and IPF 2017-04-07 13:14:20 +08:00
FatPkg
IntelFrameworkModulePkg IntelFrameworkModulePkg/IdeBusDxe: Fix undefined behavior in signed left shift 2017-04-13 08:59:24 +08:00
IntelFrameworkPkg IntelFrameworkPkg/UefiLib: Avoid mis-calculate of graphic console size 2017-04-14 13:16:12 +08:00
IntelFsp2Pkg IntelFsp2Pkg: Convert files to CRLF line ending 2017-04-06 15:42:56 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Convert files to CRLF line ending 2017-04-06 15:43:08 +08:00
IntelFspPkg
IntelFspWrapperPkg
IntelSiliconPkg
MdeModulePkg MdeModulePkg/Include: Add IOMMU protocol definition. 2017-05-17 16:05:12 +08:00
MdePkg MdePkg DxeServicesLib: Handle potential NULL FvHandle 2017-05-08 08:57:03 +08:00
NetworkPkg NetworkPkg/IScsiDxe: Switch IP4 configuration policy to Static before DHCP 2017-05-11 10:52:50 +08:00
Nt32Pkg Nt32Pkg/SnpNt32Dxe: Fix hang issue when multiple network interfaces existed 2017-05-09 14:32:16 +08:00
Omap35xxPkg
OptionRomPkg OptionRomPkg: Fix calling convention issue for UndiRuntiumeDxe driver. 2017-04-24 10:10:45 +08:00
OvmfPkg OvmfPkg/PlatformPei: handle non-power-of-two spare size for emu variables 2017-05-05 18:02:12 +02:00
PcAtChipsetPkg
PerformancePkg PerformancePkg Dp_App: Handle "/" separator in debug path for GCC build 2017-03-16 11:08:44 +08:00
QuarkPlatformPkg QuarkPlatformPkg/PlatformBootManagerLib: use new UefiShellFileGuid definition 2017-03-22 15:43:57 +00:00
QuarkSocPkg
SecurityPkg SecurityPkg: Add TCG Spec info to TCG related modules 2017-05-11 16:20:05 +08:00
ShellBinPkg ShellBinPkg: Ia32/X64 Shell binary update. 2017-05-12 14:51:10 +08:00
ShellPkg ShellPkg/memmap: Dump memory map information for all memory types 2017-05-12 10:50:51 +08:00
SignedCapsulePkg SignedCapsulePkg: Convert files to CRLF line ending 2017-04-06 15:43:14 +08:00
SourceLevelDebugPkg PeCoffGetEntryPointLib: Fix spelling issue 2017-04-26 08:58:18 +08:00
StdLib StdLib: GCC 6 build fixes 2017-04-28 17:06:59 +01:00
StdLibPrivateInternalFiles
UefiCpuPkg UefiCpuPkg/PiSmmCpuDxeSmm: Fix logic check error 2017-05-11 16:33:27 +08:00
UnixPkg
Vlv2DeviceRefCodePkg
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Fix build failure by adding UefiBootManagerLib 2017-04-01 13:20:11 +08:00
.gitignore
BuildNotes2.txt
Edk2Setup.bat
Maintainers.txt Maintainers.txt: Update maintainers for MdeModulePkg 2017-05-04 08:32:38 +08:00
edksetup.bat
edksetup.sh