Options for x86 IOMMUs (VT-ds)

Updated: May 06, 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:

Options

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.

smmu_type_param

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

require | ignore
require
The VT-d information must be present in the ACPI tables.
ignore
Ignore ACPI information.
CAUTION:
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.
smmu_unit_param

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

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

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.