From: Nathan Chen <nathanc@nvidia.com>
Allow accelerated SMMUv3 Range Invalidation support property to be
derived from host IOMMU capabilities. Derive host values using
IOMMU_GET_HW_INFO, retrieving RIL capability from IDR3.
Signed-off-by: Nathan Chen <nathanc@nvidia.com>
---
hw/arm/smmuv3-accel.c | 9 ++++++++-
hw/arm/smmuv3.c | 7 +------
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c
index a835c8f220..9e7ec6a930 100644
--- a/hw/arm/smmuv3-accel.c
+++ b/hw/arm/smmuv3-accel.c
@@ -50,6 +50,12 @@ static void smmuv3_accel_auto_finalise(SMMUv3State *s,
FIELD_EX32(info->idr[0], IDR0, ATS));
}
+ /* Update RIL if auto from info */
+ if (s->ril == ON_OFF_AUTO_AUTO) {
+ s->idr[3] = FIELD_DP32(s->idr[3], IDR3, RIL,
+ FIELD_EX32(info->idr[3], IDR3, RIL));
+ }
+
accel->auto_finalised = true;
}
@@ -945,7 +951,8 @@ void smmuv3_accel_init(SMMUv3State *s)
bs->iommu_ops = &smmuv3_accel_ops;
smmuv3_accel_as_init(s);
- if (s->ats == ON_OFF_AUTO_AUTO) {
+ if (s->ats == ON_OFF_AUTO_AUTO ||
+ s->ril == ON_OFF_AUTO_AUTO) {
s->s_accel->auto_mode = true;
}
}
diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
index f353865187..a2d2f0e3bc 100644
--- a/hw/arm/smmuv3.c
+++ b/hw/arm/smmuv3.c
@@ -1973,10 +1973,6 @@ static bool smmu_validate_property(SMMUv3State *s, Error **errp)
}
#endif
- if (s->ril == ON_OFF_AUTO_AUTO) {
- error_setg(errp, "ril auto mode is not supported");
- return false;
- }
if (s->ssidsize == SSID_SIZE_MODE_AUTO) {
error_setg(errp, "ssidsize auto mode is not supported");
return false;
@@ -2188,8 +2184,7 @@ static void smmuv3_class_init(ObjectClass *klass, const void *data)
"Enable SMMUv3 accelerator support. Allows host SMMUv3 to be "
"configured in nested mode for vfio-pci dev assignment");
object_class_property_set_description(klass, "ril",
- "Disable range invalidation support (for accel=on). ril=auto "
- "is not supported.");
+ "Disable range invalidation support (for accel=on).");
object_class_property_set_description(klass, "ats",
"Enable/disable ATS support (for accel=on). Please ensure host "
"platform has ATS support before enabling this.");
--
2.43.0