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-v3 Please take a look and let me know your feedback. Thanks, Nathan 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 | 43 ++++++++++++++++++---- hw/arm/smmuv3.c | 45 ++++++++++++++++-------- hw/arm/virt-acpi-build.c | 2 +- hw/core/qdev-properties-system.c | 27 ++++++++++++++ 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 | 35 +++++++++++++++++- 9 files changed, 187 insertions(+), 27 deletions(-) -- 2.43.0
