15#define EDKII_IOMMU_PROTOCOL_GUID \
17 0x4e939de9, 0xd948, 0x4b0f, { 0x88, 0xed, 0xe6, 0xe1, 0xce, 0x51, 0x7c, 0x1e } \
30#define EDKII_IOMMU_PROTOCOL_REVISION 0x00010000
38#define EDKII_IOMMU_ACCESS_READ 0x1
39#define EDKII_IOMMU_ACCESS_WRITE 0x2
75 EdkiiIoMmuOperationMaximum
82#define EDKII_IOMMU_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080
83#define EDKII_IOMMU_ATTRIBUTE_MEMORY_CACHED 0x0800
84#define EDKII_IOMMU_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000
86#define EDKII_IOMMU_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER (EDKII_IOMMU_ATTRIBUTE_MEMORY_WRITE_COMBINE | EDKII_IOMMU_ATTRIBUTE_MEMORY_CACHED | EDKII_IOMMU_ATTRIBUTE_DUAL_ADDRESS_CYCLE)
88#define EDKII_IOMMU_ATTRIBUTE_INVALID_FOR_ALLOCATE_BUFFER (~EDKII_IOMMU_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER)
133 IN UINT64 IoMmuAccess
161 IN VOID *HostAddress,
211 IN OUT VOID **HostAddress,
EFI_GUID gEdkiiIoMmuProtocolGuid
EFI_STATUS(EFIAPI * EDKII_IOMMU_MAP)(IN EDKII_IOMMU_PROTOCOL *This, IN EDKII_IOMMU_OPERATION Operation, IN VOID *HostAddress, IN OUT UINTN *NumberOfBytes, OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, OUT VOID **Mapping)
EFI_STATUS(EFIAPI * EDKII_IOMMU_FREE_BUFFER)(IN EDKII_IOMMU_PROTOCOL *This, IN UINTN Pages, IN VOID *HostAddress)
EFI_STATUS(EFIAPI * EDKII_IOMMU_UNMAP)(IN EDKII_IOMMU_PROTOCOL *This, IN VOID *Mapping)
EFI_STATUS(EFIAPI * EDKII_IOMMU_SET_ATTRIBUTE)(IN EDKII_IOMMU_PROTOCOL *This, IN EFI_HANDLE DeviceHandle, IN VOID *Mapping, IN UINT64 IoMmuAccess)
EFI_STATUS(EFIAPI * EDKII_IOMMU_ALLOCATE_BUFFER)(IN EDKII_IOMMU_PROTOCOL *This, IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINTN Pages, IN OUT VOID **HostAddress, IN UINT64 Attributes)
@ EdkiiIoMmuOperationBusMasterWrite
@ EdkiiIoMmuOperationBusMasterWrite64
@ EdkiiIoMmuOperationBusMasterCommonBuffer
@ EdkiiIoMmuOperationBusMasterRead64
@ EdkiiIoMmuOperationBusMasterRead
@ EdkiiIoMmuOperationBusMasterCommonBuffer64
UINT64 EFI_PHYSICAL_ADDRESS