docs/system/arm/virt: Document user-creatable SMMUv3

The virt machine now supports creating multiple SMMUv3 instances, each
associated with a separate PCIe root complex.

Update the documentation with an example.

Signed-off-by: Shameer Kolothum <skolothumtho@nvidia.com>
[PMM: some minor wording tweaks]

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell
2025-10-27 12:40:47 +00:00
parent 92122685e5
commit 65e3b1de55
+33 -2
View File
@@ -37,7 +37,8 @@ The virt board supports:
- An RTC
- The fw_cfg device that allows a guest to obtain data from QEMU
- A PL061 GPIO controller
- An optional SMMUv3 IOMMU
- An optional machine-wide SMMUv3 IOMMU
- User-creatable SMMUv3 devices (see below for example)
- hotpluggable DIMMs
- hotpluggable NVDIMMs
- An MSI controller (GICv2M or ITS). GICv2M is selected by default along
@@ -176,7 +177,7 @@ iommu
``none``
Don't create an IOMMU (the default)
``smmuv3``
Create an SMMUv3
Create a machine-wide SMMUv3.
default-bus-bypass-iommu
Set ``on``/``off`` to enable/disable `bypass_iommu
@@ -219,6 +220,36 @@ x-oem-table-id
Set string (up to 8 bytes) to override the default value of field OEM Table ID
in ACPI table header.
SMMU configuration
""""""""""""""""""
Machine-wide SMMUv3 IOMMU
Setting the machine-specific option ``iommu=smmuv3`` causes QEMU to
create a single, machine-wide SMMUv3 instance that applies to all
devices in the PCIe topology.
For information about selectively bypassing devices, refer to
``docs/bypass-iommu.txt``.
User-creatable SMMUv3 devices
You can use the ``-device arm-smmuv3`` option to create multiple
user-defined SMMUv3 devices, each associated with a separate PCIe
root complex. This is only permitted if the machine-wide SMMUv3
(``iommu=smmuv3``) option is not used. Each ``arm-smmuv3`` device
uses the ``primary-bus`` sub-option to specify which PCIe root
complex it is associated with.
This model is useful when you want to mirror a host configuration where
each NUMA node typically has its own SMMU, allowing the VM topology to
align more closely with the hosts hardware layout.
Example::
-device arm-smmuv3,primary-bus=pcie.0,id=smmuv3.0
...
-device pxb-pcie,id=pcie.1,numa_node=1
-device arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1
Linux guest kernel configuration
""""""""""""""""""""""""""""""""