Hi Nathan, On 4/22/26 10:43 PM, Nathan Chen wrote: > Allow accelerated SMMUv3 Address Translation Services support property > to be derived from host IOMMU capabilities. Derive host values using > IOMMU_GET_HW_INFO, retrieving ATS capability from IDR0. > > Signed-off-by: Nathan Chen <[email protected]> > --- > hw/arm/smmuv3-accel.c | 9 +++++++++ > hw/arm/smmuv3.c | 10 +++------- > 2 files changed, 12 insertions(+), 7 deletions(-) > > diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c > index 8b3bbf3ef6..b42d189d29 100644 > --- a/hw/arm/smmuv3-accel.c > +++ b/hw/arm/smmuv3-accel.c > @@ -52,6 +52,11 @@ static void smmuv3_accel_auto_finalise(SMMUv3State *s, > return; > } > > + if (s->ats == ON_OFF_AUTO_AUTO) { > + s->idr[0] = FIELD_DP32(s->idr[0], IDR0, ATS, > + FIELD_EX32(info->idr[0], IDR0, ATS)); > + } > + > accel->auto_finalised = true; > } > > @@ -963,6 +968,10 @@ void smmuv3_accel_init(SMMUv3State *s) > bs->iommu_ops = &smmuv3_accel_ops; > smmuv3_accel_as_init(s); > > + if (s->ats == ON_OFF_AUTO_AUTO) { > + s->s_accel->auto_mode = true; > + } > + > if (s->s_accel->auto_mode) { > s->machine_done.notify = smmuv3_machine_done; > qemu_add_machine_init_done_notifier(&s->machine_done); > diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c > index 7fead1c3cf..5671649fee 100644 > --- a/hw/arm/smmuv3.c > +++ b/hw/arm/smmuv3.c > @@ -1972,10 +1972,6 @@ static bool smmu_validate_property(SMMUv3State *s, > Error **errp) > } > #endif > > - if (s->ats == ON_OFF_AUTO_AUTO) { > - error_setg(errp, "ats auto mode is not supported"); > - return false; > - } > if (s->ril == ON_OFF_AUTO_AUTO) { > error_setg(errp, "ril auto mode is not supported"); > return false; > @@ -2175,9 +2171,9 @@ static void smmuv3_class_init(ObjectClass *klass, const > void *data) > "Disable range invalidation support (for accel=on). ril=auto " > "is not supported."); > object_class_property_set_description(klass, "ats", > - "Enable/disable ATS support (for accel=on). Please ensure host " > - "platform has ATS support before enabling this. ats=auto is not " > - "supported."); > + "Enable/disable ATS support (for accel=on). " > + "Valid values are on, off, and auto. Defaults to off. " > + "Please ensure host platform supports ATS before enabling."); I would rather be more explicit.
s/before enabling/before setting it to 'on'. > object_class_property_set_description(klass, "oas", > "Specify Output Address Size (for accel=on). Supported values " > "are 44 or 48 bits. Defaults to 44 bits. oas=auto is not " Otherwise Reviewed-by: Eric Auger <[email protected]> Eric
