Hi Nathan, On 4/22/26 10:43 PM, Nathan Chen wrote: > Update documentation now that "auto" is supported for accelerated SMMUv3 > properties. > > Signed-off-by: Nathan Chen <[email protected]> > --- > qemu-options.hx | 33 +++++++++++++++++++++++---------- > 1 file changed, 23 insertions(+), 10 deletions(-) > > diff --git a/qemu-options.hx b/qemu-options.hx > index 21972f8326..2c6ba16a26 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -1291,30 +1291,43 @@ SRST > Enabling accel configures the host SMMUv3 in nested mode to support > vfio-pci passthrough. > > - The following options are available when accel=on. > - Note: 'auto' mode is not currently supported. > - > - ``ril=on|off`` (default: on) > + The following options will be set to auto by default if not manually > + set. When accel=on and these properties are set to auto, the value is > + derived from the host SMMUv3 capabilities via IOMMU_GET_HW_INFO. With > + accel=on, this requires at least one cold-plugged vfio-pci device; if > + none is present at machine init, QEMU will abort. > + > + If accel=off and these property values are set to auto, the values will > + not be derived from the host SMMUv3 capabilities. Instead, they will > + resolve to the defaults described below, and a cold-plugged vfio-pci > + device is not required. I would simply say:
If accel=off auto values resolve to the non accel default given below. > + > + ``ril=on|off`` (default: auto) ril=on|off|auto (default: auto) ------- I would rewrite it into: Support for Range Invalidation, which allows the SMMUv3 driver to invalidate TLB entries for a range of IOVAs at once instead of issuing separate commands to invalidate each page. - with accel=on auto means the value is automatically derived from the host SMMU if explicitly set to 'on', the host must also support it. - with accel=off auto is resolved into 'on' If we have this explanation here in object_class_property_set_description() just explain the basic semantic and list the valid values and default value. No use to rexplain the auto mode semantic. > Support for Range Invalidation, which allows the SMMUv3 driver to > invalidate TLB entries for a range of IOVAs at once instead of > issuing > separate commands to invalidate each page. Must match with host > SMMUv3 > - Range Invalidation support. > + Range Invalidation support. If accel=off and ril is set to auto, this > + property value will resolve to on. Same for the others ... Thanks Eric > > - ``ats=on|off`` (default: off) > + ``ats=on|off`` (default: auto) > Support for Address Translation Services, which enables PCIe devices > to > cache address translations in their local TLB and reduce latency. > Host > SMMUv3 must support ATS in order to enable this feature for the > vIOMMU. > + If accel=off and ats is set to auto, the property value will resolve > to > + off. > > - ``oas=val`` (supported values are 44 and 48. default: 44) > + ``oas=val`` (supported values are 44 and 48. default: auto) > Sets the Output Address Size in bits. The value set here must be less > than or equal to the host SMMUv3's supported OAS, so that the > intermediate physical addresses (IPA) consumed by host SMMU for > stage-2 > - translation do not exceed the host's max supported IPA size. > + translation do not exceed the host's max supported IPA size. If > + accel=off and oas is set to auto, the property value will resolve to > 44. > > - ``ssidsize=val`` (val between 0 and 20. default: 0) > + ``ssidsize=val`` (val between 0 and 20. default: auto) > Sets the Substream ID size in bits. When set to a non-zero value, > PASID capability is advertised to the vIOMMU and accelerated use > cases > - such as Shared Virtual Addressing (SVA) are supported. > + such as Shared Virtual Addressing (SVA) are supported. If accel=off > + and ssidsize is set to auto, the property value will resolve to 0. > > ``-device amd-iommu[,option=...]`` > Enables emulation of an AMD-Vi I/O Memory Management Unit (IOMMU).
