@samitouri / QOSamiQemu / commits / dc86d45232

hw/arm/smmuv3-accel: Check ATS compatibility between host and guest

Compare the host SMMUv3 ATS support bit with the guest SMMUv3 ATS support bit in IDR0 and fail the compatibility check if ATS support is opted as enabled on the guest SMMUv3 when it is not supported on host SMMUv3. Fixes: f7f5013a55a3 ("hw/arm/smmuv3-accel: Add support for ATS") Reviewed-by: Eric Auger <eric.auger@redhat.com> Tested-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Shameer Kolothum <skolothumtho@nvidia.com> Tested-by: Shameer Kolothum <skolothumtho@nvidia.com> Signed-off-by: Nathan Chen <nathanc@nvidia.com> Message-id: 20260323182454.1416110-2-nathanc@nvidia.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Nathan Chen committed Mar 24, 2026 at 14:02 UTC dc86d45232444e75f1b4569fada0a73b5dc209b4
1 file changed +6
hw/arm/smmuv3-accel.c
+6
@@ -101,6 +101,12 @@ smmuv3_accel_check_hw_compatible(SMMUv3State *s,
101 smmuv3_oas_bits(FIELD_EX32(s->idr[5], IDR5, OAS)));
102 return false;
103 }
104 + /* Check ATS value opted is compatible with Host SMMUv3 */
105 + if (FIELD_EX32(info->idr[0], IDR0, ATS) <
106 + FIELD_EX32(s->idr[0], IDR0, ATS)) {
107 + error_setg(errp, "Host SMMUv3 doesn't support Address Translation Services");
108 + return false;
109 + }
110
111 /* QEMU SMMUv3 supports GRAN4K/GRAN16K/GRAN64K translation granules */
112 if (FIELD_EX32(info->idr[5], IDR5, GRAN4K) !=