@samitouri / QOSamiQemu / commits / 94e3ad7800

docs/system/arm/virt: Document accelerated SMMUv3 and Tegra241 CMDQV

Add subsections for accel=on (nested Stage-1/Stage-2 translation) and cmdqv (Tegra241 CMDQV hardware command queues) under "User-creatable SMMUv3 devices". Signed-off-by: Shameer Kolothum <skolothumtho@nvidia.com> Message-id: 20260623104003.36590-1-skolothumtho@nvidia.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Shameer Kolothum committed Jun 23, 2026 at 11:40 UTC 94e3ad78004787b0dea9625544fb45d8cf037147
1 file changed +26
docs/system/arm/virt.rst
+26
@@ -288,6 +288,32 @@ User-creatable SMMUv3 devices
288 -device pxb-pcie,id=pcie.1,numa_node=1
289 -device arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1
290
291 + *Accelerated SMMUv3 (nested translation)*
292 +
293 + The ``accel=on`` option enables hardware-accelerated nested translation
294 + for vfio-pci passthrough devices. In this mode the guest SMMU driver
295 + programs its own Stage-1 page tables, with the host SMMUv3 handling both
296 + Stage-1 (guest) and Stage-2 (host) translations in hardware. The host
297 + SMMUv3 must support nested translation. This mode requires the iommufd
298 + backend and is only supported when booting with ACPI (not device tree).
299 +
300 + When ``accel=on``, QEMU automatically derives the values for the
301 + ``ril``, ``ats``, ``oas``, ``ssidsize`` and ``cmdqv`` sub-options
302 + from the host SMMUv3 capabilities unless they are set explicitly.
303 +
304 + Example::
305 +
306 + -device arm-smmuv3,primary-bus=pcie.0,id=smmuv3.0,accel=on
307 +
308 + *Accelerated SMMUv3 command queues (Tegra241 CMDQV)*
309 +
310 + The ``cmdqv`` sub-option enables NVIDIA Tegra241 Command Queue
311 + Virtualization (CMDQV) on supported hosts. With CMDQV, each accelerated
312 + ``arm-smmuv3`` device gets dedicated hardware command queues and the
313 + guest issues SMMU invalidation commands directly to real hardware,
314 + bypassing QEMU and improving throughput for workloads that issue many
315 + invalidations. Without it, every invalidation command traps into QEMU.
316 +
317 Linux guest kernel configuration
318 """"""""""""""""""""""""""""""""
319