// d3dkmddi.h
typedef struct _DXGK_IOMMU_CAPS {
union {
struct {
UINT32 IommuIsolationSupported : 1;
UINT32 IommuIsolationRequired : 1;
UINT32 DmaRemappingSupported : 1;
UINT32 GpuVaIommuRequired : 1;
UINT32 GpuVaIommuGlobalRequired : 1;
UINT32 Reserved : 27;
};
UINT32 Value;
};
} DXGK_IOMMU_CAPS;
View the official Windows Driver Kit DDI referenceNo description available.
The DXGK_IOMMU_CAPS structure is used to indicate whether a driver supports IOMMU linear remapping.
IommuIsolationSupportedIndicates that the driver supports IOMMU isolation, and fully utilizes the IOMMU callback API to map driver-allocated memory objects to the IOMMU domain. This field mimics DXGK_DRIVERCAPS.MemoryManagementCaps.IOMMUSecureModeSupported. Dxgkrnl expects these capabilities to match.
IommuIsolationRequiredIndicates that the IOMMU is required for the hardware to function correctly and safely. If an IOMMU is not present on the system or a domain cannot be attached to the device, the device will not start. This field mimics DXGK_DRIVERCAPS.MemoryManagementCaps.IOMMUSecureModeRequired. Dxgkrnl expects these capabilities to match.
DmaRemappingSupportedIndicates that linear remapping is supported by the driver, and not just the 1:1 mappings used for standard isolation. If multiple linked physical adapters have different values for their highest visible address, the driver should report the minimum value of all physical adapters.
ReservedReserved; do not use.
ValueAn alternative method to access the bits.
The driver fills in this structure when Dxgkrnl calls DxgkDdiQueryAdapterInfo with a DXGK_QUERYADAPTERINFOTYPE value of DXGKQAITYPE_IOMMU_CAPS. Dxgkrnl will call DxgkDdiQueryAdapterInfo after DxgkddiAddDevice has been called for all physical adapters, but before DxgkddiStartDevice. The driver is expected to know about all linked physical adapters at this time.
To indicate logical DMA remapping support, the driver must also fill in DXGK_PHYSICAL_MEMORY_CAPS accordingly.
For more information, see IOMMU DMA remapping.