Options for x86 IOMMUs (VT-ds)

Updated: October 26, 2022

On x86 boards, IOMMU/SMMUs are known as VT-ds; configuration is needed only for non-standard VT-d variants.

The configurations described here are for use with the smmu-vtd.so and smmu-vtd-safety.so support libraries for IOMMUs with the x86 VT-d architecture. These support libraries implement the code to communicate with x86 VT-ds, as specified in Intel Virtualization Technology for Directed I/O Architecture Specification. Intel, Nov. 2017 (D51397-009, Rev. 2.5).

To load these support libraries, you must set the smmu option's smmu_type argument to the name of the support library:


The following describes the options for a smmuman service using a smmu-vtd.so or smmu-vtd-safety.so support library for IOMMUs that use the x86 VT-d architecture.


On boards with Intel VT-d IOMMU hardware, the syntax for smmu_type_param is as follows:

require | ignore
The VT-d information must be present in the ACPI tables.
Ignore ACPI information.
Use ignore only if the board firmware is incorrect for your board design and you need to manually input the VT-d unit and device information that would normally be found in these tables. Consult your board manufacturer's documentation. For example, see “Intel Virtualization Technology for Directed I/O” available from software.intel.com/en-us/articles/intel-sdm.
If neither required nor ignore is specified, the smmuman service doesn't require the ACPI tables, but uses them if they are present.

On boards with Intel VT-d IOMMU hardware, the syntax for smmu_type_param is as follows:

The base physical address of the VT-d device registers for the unit.
On boards with Intel VT-d IOMMU hardware, no value is required or permitted for smmu_use_param.

The most common way to start smmuman for x86 systems is:

smmuman smmu vtd

This startup configures smmuman to use the default ACPI tables, and the default locations for VT-d.