On 5/19/26 12:37 PM, Shameer Kolothum wrote: > Introduce a "cmdqv" property to enable Tegra241 CMDQV support. > This is only enabled for accelerated SMMUv3 devices. > > Reviewed-by: Nicolin Chen <[email protected]> > Signed-off-by: Shameer Kolothum <[email protected]> Reviewed-by: Eric Auger <[email protected]> Thanks Eric > --- > hw/arm/smmuv3.c | 8 ++++++++ > qemu-options.hx | 8 ++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c > index 763b86c417..8c13489a5c 100644 > --- a/hw/arm/smmuv3.c > +++ b/hw/arm/smmuv3.c > @@ -1994,6 +1994,10 @@ static bool smmu_validate_property(SMMUv3State *s, > Error **errp) > "bits if accel=on"); > return false; > } > + if (s->cmdqv == ON_OFF_AUTO_ON) { > + error_setg(errp, "cmdqv can only be enabled if accel=on"); > + return false; > + } > return true; > } > > @@ -2144,6 +2148,7 @@ static const Property smmuv3_properties[] = { > DEFINE_PROP_OAS_MODE("oas", SMMUv3State, oas, OAS_MODE_AUTO), > DEFINE_PROP_SSIDSIZE_MODE("ssidsize", SMMUv3State, ssidsize, > SSID_SIZE_MODE_AUTO), > + DEFINE_PROP_ON_OFF_AUTO("cmdqv", SMMUv3State, cmdqv, ON_OFF_AUTO_AUTO), > }; > > static void smmuv3_instance_init(Object *obj) > @@ -2188,6 +2193,9 @@ static void smmuv3_class_init(ObjectClass *klass, const > void *data) > "A value of N allows SSIDs in the range [0 .. 2^N - 1]. " > "A value of 0 disables SubstreamID support. A value greater " > "than 0 is required to enable PASID support."); > + object_class_property_set_description(klass, "cmdqv", > + "Enable/disable CMDQV support (for accel=on). " > + "Valid values are on, off, and auto. Defaults to auto."); > } > > static int smmuv3_notify_flag_changed(IOMMUMemoryRegion *iommu, > diff --git a/qemu-options.hx b/qemu-options.hx > index 46b02a1bb3..c8b8f4e69a 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -1329,6 +1329,14 @@ SRST > - With accel=on, auto means the value is automatically derived from > the host SMMU. > - With accel=off, auto is resolved to 0. > > + ``cmdqv=on|off|auto`` (default: auto) > + Enable hardware Command Queue Virtualization (CMDQV) for the > + SMMUv3 command queue. Currently only the NVIDIA Tegra241 CMDQV > + implementation is supported. > + > + - With accel=on, auto means the value is automatically derived from > the host SMMU. > + - With accel=off, auto is resolved to 'off'. > + > ``-device amd-iommu[,option=...]`` > Enables emulation of an AMD-Vi I/O Memory Management Unit (IOMMU). > Only available with ``-machine q35``, it supports the following options:
