Hi, This is a follow-up to the previous series [0] that introduces support for specifying 'auto' for arm-smmuv3 accelerated mode's ATS, RIL, SSIDSIZE, and OAS feature properties.
In QEMU 11.0 we introduced new options for vSMMU [1], but feedback received when starting the integration of layered products shows the need for auto/host-retrieved values. To avoid breaking JSON/QMP compat, we want to fix the option types so that they can later support the auto mode. At the moment the auto mode is not supported though. A future series will introduce support for resolving the 'auto' values based on host SMMUv3 IDR values, as well as setting per-device ATS capability. A complete branch can be found here: https://github.com/NathanChenNVIDIA/qemu/tree/smmuv3-accel-auto-v4 Please take a look and let me know your feedback. Thanks, Nathan Changes from v3: - Revise auto support error message - Restore original comment for ATS in smmuv3_accel_idr_override() - Update the description in object_class_property_set_description() to mention auto mode not supported. - Move auto mode check before check for accel=on - Remove SMMU_OAS_44BIT/_48BIT and SMMU_SSID_MAX_BITS defines - Consolidate documentation notes about properties only being available for accel=on and not supporting auto mode. - Include R-by and T-by tags from v3, thanks Eric and Shameer! Changes from v2: - Enforce 'auto' value not being supported for HW-accel SMMUv3 props - Revise docs to mention auto is not supported and these properties are only applicable when accel=on. - Only override non-defaults in smmuv3_accel_idr_override() - Remove check for SSIDSIZE AUTO in smmuv3_accel_idr_override() as smmu_validate_property() checks for AUTO beforehand - Consolidate comments for ssidsize_mode_to_value() - Include Fixes tags in commit descriptions - Include R-by tags from v2 Changes from RFCv1: - Remove changes that resolve the 'auto' values based on host SMMUv3 - Restore defaults values for RIL, OAS, SSIDSIZE, and ATS - Update OasMode to accept all OAS sizes instead of only auto, 44, and 48 - Include comment in SsidSizeMode schema clarifying enum value ordering - Replace ats-enabled prop with a helper that accepts the dynamic casted TYPE_ARM_SMMUV3 object - Separate out guest vs. host ATS check in smmuv3_accel_check_hw_compatible() to a different commit - Document accel, RIL, OAS, SSIDSIZE, and ATS properties in qemu-options.hx Testing: Basic sanity testing was performed on an NVIDIA Grace platform with GPU device assignment and running CUDA test apps on the guest. Additional testing and feedback are welcome. [0] https://lore.kernel.org/qemu-devel/[email protected]/ [1] https://lore.kernel.org/all/[email protected]/ Nathan Chen (8): hw/arm/smmuv3-accel: Check ATS compatibility between host and guest hw/arm/smmuv3-accel: Change ATS property to OnOffAuto hw/arm/smmuv3-accel: Change RIL property to OnOffAuto qdev: Add a SsidSizeMode property hw/arm/smmuv3-accel: Change SSIDSIZE property to SsidSizeMode qdev: Add an OasMode property hw/arm/smmuv3-accel: Change OAS property to OasMode qemu-options.hx: Document arm-smmuv3 device's accel properties hw/arm/smmuv3-accel.c | 41 ++++++++++++--- hw/arm/smmuv3.c | 63 +++++++++++++++--------- hw/arm/virt-acpi-build.c | 2 +- hw/core/qdev-properties-system.c | 27 ++++++++++ include/hw/arm/smmuv3-common.h | 3 -- include/hw/arm/smmuv3.h | 11 +++-- include/hw/core/qdev-properties-system.h | 6 +++ qapi/misc-arm.json | 44 +++++++++++++++++ qapi/pragma.json | 1 + qemu-options.hx | 32 +++++++++++- 10 files changed, 192 insertions(+), 38 deletions(-) -- 2.43.0
