audk/MdeModulePkg/Include/Protocol
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
..
BootLogo.h
DebuggerConfiguration.h MdeModulePkg/EbcDxe: add EBC Debugger configuration application 2016-11-29 12:48:33 +08:00
DisplayProtocol.h MdeModulePkg: Enable reconnect request from action request or question flag. 2015-05-27 02:32:59 +00:00
Dpc.h
EbcSimpleDebugger.h
EbcVmTest.h MdeModulePkg/EbcDxe: reorganize EBC header definitions 2016-11-23 10:20:28 +08:00
EsrtManagement.h MdeModulePkg: Add ESRT management protocol definition 2015-05-13 08:29:06 +00:00
FaultTolerantWrite.h
FileExplorer.h MdeModulePkg/Include: Change file format which the existed folder has mixed file format. 2015-12-16 03:17:41 +00:00
FormBrowserEx.h MdeModulePkg FormBrowserEx: Change its structure name with EDKII_ prefix 2016-09-27 09:40:03 +08:00
FormBrowserEx2.h Based on request, export ResetRequired info used by browser. 2014-05-14 01:52:31 +00:00
GenericMemoryTest.h
IoMmu.h MdeModulePkg/Include: Add IOMMU protocol definition. 2017-05-17 16:05:12 +08:00
IpmiProtocol.h MdeModulePkg: Add IpmiLib and Ppi/Protocol header file. 2015-12-23 08:16:20 +00:00
LoadPe32Image.h
LockBox.h
NonDiscoverableDevice.h MdeModulePkg: introduce non-discoverable device protocol 2016-12-07 09:01:27 +00:00
PlatformLogo.h MdeModulePkg/BootLogoLib&PlatformLogo: Use HII data types in parameters 2016-09-28 16:22:20 +08:00
Print2.h MdeModulePkg/Print2: Refine the comment for ASCII_VALUE_TO_STRING_S 2017-03-13 11:09:34 +08:00
Ps2Policy.h MdeModulePkg: Add Ps2KeyboardDxe driver. 2016-04-08 17:45:54 +08:00
SmmExitBootServices.h MdeModulePkg: Move SmmExitBootServices.h/SmmLegacyBoot.h/SmmReadyToBoot.h 2015-06-18 10:30:38 +00:00
SmmFaultTolerantWrite.h
SmmFirmwareVolumeBlock.h
SmmLegacyBoot.h MdeModulePkg SmmLegacyBoot.h: Add a "," after copyright year 2015-08-25 06:29:33 +00:00
SmmReadyToBoot.h MdeModulePkg: Move SmmExitBootServices.h/SmmLegacyBoot.h/SmmReadyToBoot.h 2015-06-18 10:30:38 +00:00
SmmSwapAddressRange.h
SmmVarCheck.h MdeModulePkg Variable: Implement VarCheck PROTOCOL 2015-01-05 03:38:36 +00:00
SmmVariable.h
SwapAddressRange.h
UfsHostController.h MdeModulePkg/Ufs: Refine EDKII_UFS_HOST_CONTROLLER_PROTOCOL interface 2015-05-28 07:42:05 +00:00
VarCheck.h MdeModulePkg: Add AuthVariableLib LibraryClass 2015-07-01 03:04:18 +00:00
VariableLock.h