On Thu, Nov 20, 2025 at 01:22:13PM +0000, Shameer Kolothum wrote:
> +++ b/hw/arm/smmuv3-accel.c
> @@ -67,6 +67,12 @@ smmuv3_accel_check_hw_compatible(SMMUv3State *s,
> error_setg(errp, "Host SMMUv3 SIDSIZE not compatible");
> return false;
> }
> + /* If user enables PASID support(pasid=on), QEMU sets SSIDSIZE to 16 */
> + if (FIELD_EX32(info->idr[1], IDR1, SSIDSIZE) <
> + FIELD_EX32(s->idr[1], IDR1, SSIDSIZE)) {
> + error_setg(errp, "Host SMMUv3 SSIDSIZE not compatible");
> + return false;
> + }
I think we can print the values: host vs VM. And at SIDSIZE above
as well.
> @@ -2084,6 +2090,7 @@ static const Property smmuv3_properties[] = {
> DEFINE_PROP_BOOL("ril", SMMUv3State, ril, true),
> DEFINE_PROP_BOOL("ats", SMMUv3State, ats, false),
> DEFINE_PROP_UINT8("oas", SMMUv3State, oas, 44),
> + DEFINE_PROP_BOOL("pasid", SMMUv3State, pasid, false),
> };
Instead of doing a boolean "pasid", perhaps ssidsize and sidsize
should be configurable. Then, user can follow the not-compatible
print to set correct SSIDSIZE and SIDSIZE.
They can also choose to set a higher value if underlying SMMU HW
supports that.
Otherwise,
Reviewed-by: Nicolin Chen <[email protected]>