Hi Nathan,
On 5/19/26 11:04 PM, Nathan Chen wrote:
>
>
> On 5/19/2026 8:59 AM, Eric Auger wrote:
>>
>> On 5/12/26 9:35 PM, Nathan Chen wrote:
>>> From: Nathan Chen<[email protected]>
>>>
>>> Set the default value of ATS, RIL, SSIDSIZE, and OAS to auto, in order
>>> to match the host IOMMU properties when accel=on.
>>>
>>> If accel=off and these property values are set to auto, the default
>>> property values defined in smmuv3_init_id_regs() for OAS and RIL will
>>> remain unchanged, while SSIDSIZE and ATS values will remain initialized
>>> at 0.
>>>
>>> Introduce a new compat for the changed defaults.
>>>
>>> Signed-off-by: Nathan Chen<[email protected]>
>>> ---
>>> hw/arm/smmuv3.c | 23 +++++++++++++++--------
>>> hw/core/machine.c | 5 +++++
>>> 2 files changed, 20 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
>>> index 31c2eec2f4..665e6a2538 100644
>>> --- a/hw/arm/smmuv3.c
>>> +++ b/hw/arm/smmuv3.c
>>> @@ -2129,12 +2129,19 @@ static const Property smmuv3_properties[] = {
>>> DEFINE_PROP_BOOL("accel", SMMUv3State, accel, false),
>>> /* GPA of MSI doorbell, for SMMUv3 accel use. */
>>> DEFINE_PROP_UINT64("msi-gpa", SMMUv3State, msi_gpa, 0),
>>> + /*
>>> + * AUTO values for accel=off will resolve to:
>>> + * ril: on
>>> + * ats: off
>>> + * oas: 44
>>> + * ssidsize: 0
>>> + */
>>> /* RIL can be turned off for accel cases */
>>> - DEFINE_PROP_ON_OFF_AUTO("ril", SMMUv3State, ril, ON_OFF_AUTO_ON),
>>> - DEFINE_PROP_ON_OFF_AUTO("ats", SMMUv3State, ats, ON_OFF_AUTO_OFF),
>>> - DEFINE_PROP_OAS_MODE("oas", SMMUv3State, oas, OAS_MODE_44),
>>> + DEFINE_PROP_ON_OFF_AUTO("ril", SMMUv3State, ril,
>>> ON_OFF_AUTO_AUTO),
>>> + DEFINE_PROP_ON_OFF_AUTO("ats", SMMUv3State, ats,
>>> ON_OFF_AUTO_AUTO),
>>> + DEFINE_PROP_OAS_MODE("oas", SMMUv3State, oas, OAS_MODE_AUTO),
>>> DEFINE_PROP_SSIDSIZE_MODE("ssidsize", SMMUv3State, ssidsize,
>>> - SSID_SIZE_MODE_0),
>>> + SSID_SIZE_MODE_AUTO),
>>> };
>>> static void smmuv3_instance_init(Object *obj)
>>> @@ -2162,20 +2169,20 @@ static void smmuv3_class_init(ObjectClass
>>> *klass, const void *data)
>>> "configured in nested mode for vfio-pci dev assignment");
>>> object_class_property_set_description(klass, "ril",
>>> "Enable/disable range invalidation support (for accel=on). "
>>> - "Valid values are on, off, and auto. Defaults to on. "
>>> + "Valid values are on, off, and auto. Defaults to auto. "
>>> "Any attempt to turn it 'on' while the host does not
>>> support "
>>> "it would fail.");
>>> object_class_property_set_description(klass, "ats",
>>> "Enable/disable ATS support (for accel=on). "
>>> - "Valid values are on, off, and auto. Defaults to off. "
>>> + "Valid values are on, off, and auto. Defaults to auto. "
>>> "Please ensure host platform supports ATS before setting it "
>>> "to on.");
>>> object_class_property_set_description(klass, "oas",
>>> "Set Output Address Size in bits (for accel=on). "
>>> - "Valid values are 44, 48, and auto. Defaults to 44 bits.");
>>> + "Valid values are 44, 48, and auto. Defaults to auto.");
>> not really related to this patch but I notice that we do not have any
>> "Please ensure host platform supports..." statement as opposed to
>> previous props.
>> While some host requirements are needed to be statistied too.
>>
>> smmuv3-accel.c: if (FIELD_EX32(info->idr[5], IDR5, OAS) <
>> smmuv3-accel.c: FIELD_EX32(s->idr[5], IDR5, OAS)) {
>>
>>> object_class_property_set_description(klass, "ssidsize",
>>> "Set number of bits used to represent SubstreamIDs (SSIDs). "
>>> - "Valid values are 0-20 and auto. Defaults to 0. "
>>> + "Valid values are 0-20 and auto. Defaults to auto. "
>>> "A value of N allows SSIDs in the range [0 .. 2^N - 1]. "
>>> "A value of 0 disables SubstreamID support. A value greater "
>>> "than 0 is required to enable PASID support.");
>> same here.
>>
> Got it, I will update with host requirement guidance for OAS and
> SSIDSIZE on the next refresh.
>
>> smmuv3-accel.c: s->idr[1] = FIELD_DP32(s->idr[1], IDR1, SSIDSIZE,
>> smmuv3-accel.c: FIELD_EX32(info->idr[1],
>> IDR1, SSIDSIZE));
>>
>> Also it is not written (for accel=on)
> I can reword the accel section to something like:
> "Enable SMMUv3 accelerator support. Allows host SMMUv3 to be
> configured in nested mode for vfio-pci dev assignment. Please ensure
> the host SMMUv3 supports hardware-accelerated VFIO-PCI device
> assignment before enabling."
>
> Should I create a new patch for this update to the accel guidance or
> consolidate into the next refresh of this current patch?
Yes maybe add another patch that improves the existing doc
Eric
>
> Thanks,
> Nathan
>
>>> diff --git a/hw/core/machine.c b/hw/core/machine.c
>>> index 63baff859f..3339da99ee 100644
>>> --- a/hw/core/machine.c
>>> +++ b/hw/core/machine.c
>>> @@ -38,9 +38,14 @@
>>> #include "hw/virtio/virtio-iommu.h"
>>> #include "hw/acpi/generic_event_device.h"
>>> #include "qemu/audio.h"
>>> +#include "hw/arm/smmuv3.h"
>>> GlobalProperty hw_compat_11_0[] = {
>>> { "chardev-vc", "encoding", "cp437" },
>>> + { TYPE_ARM_SMMUV3, "ats", "off" },
>>> + { TYPE_ARM_SMMUV3, "ril", "on" },
>>> + { TYPE_ARM_SMMUV3, "ssidsize", "0" },
>>> + { TYPE_ARM_SMMUV3, "oas", "44" },
>>> };
>>> const size_t hw_compat_11_0_len = G_N_ELEMENTS(hw_compat_11_0);
>>>
>