[RFC PATCH 7/8] qdev: Add an OasMode property

Nathan Chen posted 8 patches 1 month ago
Maintainers: Yi Liu <yi.l.liu@intel.com>, Eric Auger <eric.auger@redhat.com>, Zhenzhong Duan <zhenzhong.duan@intel.com>, Peter Maydell <peter.maydell@linaro.org>, "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <anisinha@redhat.com>, Shannon Zhao <shannon.zhaosl@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Alex Williamson <alex@shazbot.org>, "Cédric Le Goater" <clg@redhat.com>, Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>
There is a newer version of this series
[RFC PATCH 7/8] qdev: Add an OasMode property
Posted by Nathan Chen 1 month ago
From: Nathan Chen <nathanc@nvidia.com>

Introduce a new enum type property allowing to set an Output Address
Size. Values are auto, 44, and 48, where a value of N specifies an
N-bit OAS.

Signed-off-by: Nathan Chen <nathanc@nvidia.com>
---
 hw/core/qdev-properties-system.c         | 13 +++++++++++++
 include/hw/core/qdev-properties-system.h |  3 +++
 qapi/misc-arm.json                       | 16 ++++++++++++++++
 3 files changed, 32 insertions(+)

diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
index 4aca1d4326..a805ee2e1f 100644
--- a/hw/core/qdev-properties-system.c
+++ b/hw/core/qdev-properties-system.c
@@ -737,6 +737,19 @@ const PropertyInfo qdev_prop_ssidsize_mode = {
     .set_default_value = qdev_propinfo_set_default_value_enum,
 };
 
+/* --- OasMode --- */
+
+QEMU_BUILD_BUG_ON(sizeof(OasMode) != sizeof(int));
+
+const PropertyInfo qdev_prop_oas_mode = {
+    .type = "OasMode",
+    .description = "oas mode: auto, 32, 36, 40, 42, 44, 48, 52, 56",
+    .enum_table = &OasMode_lookup,
+    .get = qdev_propinfo_get_enum,
+    .set = qdev_propinfo_set_enum,
+    .set_default_value = qdev_propinfo_set_default_value_enum,
+};
+
 /* --- Reserved Region --- */
 
 /*
diff --git a/include/hw/core/qdev-properties-system.h b/include/hw/core/qdev-properties-system.h
index 4708885164..2cbea16d61 100644
--- a/include/hw/core/qdev-properties-system.h
+++ b/include/hw/core/qdev-properties-system.h
@@ -15,6 +15,7 @@ extern const PropertyInfo qdev_prop_mig_mode;
 extern const PropertyInfo qdev_prop_granule_mode;
 extern const PropertyInfo qdev_prop_zero_page_detection;
 extern const PropertyInfo qdev_prop_ssidsize_mode;
+extern const PropertyInfo qdev_prop_oas_mode;
 extern const PropertyInfo qdev_prop_losttickpolicy;
 extern const PropertyInfo qdev_prop_blockdev_on_error;
 extern const PropertyInfo qdev_prop_bios_chs_trans;
@@ -64,6 +65,8 @@ extern const PropertyInfo qdev_prop_virtio_gpu_output_list;
                        ZeroPageDetection)
 #define DEFINE_PROP_SSIDSIZE_MODE(_n, _s, _f, _d) \
     DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_ssidsize_mode, SsidSizeMode)
+#define DEFINE_PROP_OAS_MODE(_n, _s, _f, _d) \
+    DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_oas_mode, OasMode)
 #define DEFINE_PROP_LOSTTICKPOLICY(_n, _s, _f, _d) \
     DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_losttickpolicy, \
                         LostTickPolicy)
diff --git a/qapi/misc-arm.json b/qapi/misc-arm.json
index b372a3661b..76b6965502 100644
--- a/qapi/misc-arm.json
+++ b/qapi/misc-arm.json
@@ -60,3 +60,19 @@
 { 'enum': 'SsidSizeMode',
   'data': [ 'auto', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
             '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20' ] }
+
+##
+# @OasMode:
+#
+# SMMUv3 Output Address Size configuration mode.
+#
+# @auto: derive from host IOMMU capabilities
+#
+# @44: 44-bit output address size
+#
+# @48: 48-bit output address size
+#
+# Since: 11.0
+##
+{ 'enum': 'OasMode',
+  'data': [ 'auto', '44', '48' ] }
-- 
2.43.0
Re: [RFC PATCH 7/8] qdev: Add an OasMode property
Posted by Eric Auger 1 month ago
Hi Nathan,

On 3/9/26 8:21 PM, Nathan Chen wrote:
> From: Nathan Chen <nathanc@nvidia.com>
>
> Introduce a new enum type property allowing to set an Output Address
> Size. Values are auto, 44, and 48, where a value of N specifies an
> N-bit OAS.
>
> Signed-off-by: Nathan Chen <nathanc@nvidia.com>
> ---
>  hw/core/qdev-properties-system.c         | 13 +++++++++++++
>  include/hw/core/qdev-properties-system.h |  3 +++
>  qapi/misc-arm.json                       | 16 ++++++++++++++++
>  3 files changed, 32 insertions(+)
>
> diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
> index 4aca1d4326..a805ee2e1f 100644
> --- a/hw/core/qdev-properties-system.c
> +++ b/hw/core/qdev-properties-system.c
> @@ -737,6 +737,19 @@ const PropertyInfo qdev_prop_ssidsize_mode = {
>      .set_default_value = qdev_propinfo_set_default_value_enum,
>  };
>  
> +/* --- OasMode --- */
> +
> +QEMU_BUILD_BUG_ON(sizeof(OasMode) != sizeof(int));
> +
> +const PropertyInfo qdev_prop_oas_mode = {
> +    .type = "OasMode",
> +    .description = "oas mode: auto, 32, 36, 40, 42, 44, 48, 52, 56",
> +    .enum_table = &OasMode_lookup,
> +    .get = qdev_propinfo_get_enum,
> +    .set = qdev_propinfo_set_enum,
> +    .set_default_value = qdev_propinfo_set_default_value_enum,
> +};
> +
>  /* --- Reserved Region --- */
>  
>  /*
> diff --git a/include/hw/core/qdev-properties-system.h b/include/hw/core/qdev-properties-system.h
> index 4708885164..2cbea16d61 100644
> --- a/include/hw/core/qdev-properties-system.h
> +++ b/include/hw/core/qdev-properties-system.h
> @@ -15,6 +15,7 @@ extern const PropertyInfo qdev_prop_mig_mode;
>  extern const PropertyInfo qdev_prop_granule_mode;
>  extern const PropertyInfo qdev_prop_zero_page_detection;
>  extern const PropertyInfo qdev_prop_ssidsize_mode;
> +extern const PropertyInfo qdev_prop_oas_mode;
>  extern const PropertyInfo qdev_prop_losttickpolicy;
>  extern const PropertyInfo qdev_prop_blockdev_on_error;
>  extern const PropertyInfo qdev_prop_bios_chs_trans;
> @@ -64,6 +65,8 @@ extern const PropertyInfo qdev_prop_virtio_gpu_output_list;
>                         ZeroPageDetection)
>  #define DEFINE_PROP_SSIDSIZE_MODE(_n, _s, _f, _d) \
>      DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_ssidsize_mode, SsidSizeMode)
> +#define DEFINE_PROP_OAS_MODE(_n, _s, _f, _d) \
> +    DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_oas_mode, OasMode)
>  #define DEFINE_PROP_LOSTTICKPOLICY(_n, _s, _f, _d) \
>      DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_losttickpolicy, \
>                          LostTickPolicy)
> diff --git a/qapi/misc-arm.json b/qapi/misc-arm.json
> index b372a3661b..76b6965502 100644
> --- a/qapi/misc-arm.json
> +++ b/qapi/misc-arm.json
> @@ -60,3 +60,19 @@
>  { 'enum': 'SsidSizeMode',
>    'data': [ 'auto', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
>              '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20' ] }
> +
> +##
> +# @OasMode:
> +#
> +# SMMUv3 Output Address Size configuration mode.
> +#
> +# @auto: derive from host IOMMU capabilities
> +#
> +# @44: 44-bit output address size
> +#
> +# @48: 48-bit output address size
> +#
> +# Since: 11.0
> +##
> +{ 'enum': 'OasMode',
> +  'data': [ 'auto', '44', '48' ] }
you also miss other enum values

Thanks

Eric
Re: [RFC PATCH 7/8] qdev: Add an OasMode property
Posted by Nathan Chen 1 month ago
Hi Eric,

On 3/11/2026 11:20 AM, Eric Auger wrote:
> Hi Nathan,
> 
> On 3/9/26 8:21 PM, Nathan Chen wrote:
>> From: Nathan Chen<nathanc@nvidia.com>
>>
>> Introduce a new enum type property allowing to set an Output Address
>> Size. Values are auto, 44, and 48, where a value of N specifies an
>> N-bit OAS.
>>
>> Signed-off-by: Nathan Chen<nathanc@nvidia.com>
>> ---
>>   hw/core/qdev-properties-system.c         | 13 +++++++++++++
>>   include/hw/core/qdev-properties-system.h |  3 +++
>>   qapi/misc-arm.json                       | 16 ++++++++++++++++
>>   3 files changed, 32 insertions(+)
>>
>> diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
>> index 4aca1d4326..a805ee2e1f 100644
>> --- a/hw/core/qdev-properties-system.c
>> +++ b/hw/core/qdev-properties-system.c
>> @@ -737,6 +737,19 @@ const PropertyInfo qdev_prop_ssidsize_mode = {
>>       .set_default_value = qdev_propinfo_set_default_value_enum,
>>   };
>>   
>> +/* --- OasMode --- */
>> +
>> +QEMU_BUILD_BUG_ON(sizeof(OasMode) != sizeof(int));
>> +
>> +const PropertyInfo qdev_prop_oas_mode = {
>> +    .type = "OasMode",
>> +    .description = "oas mode: auto, 32, 36, 40, 42, 44, 48, 52, 56",
>> +    .enum_table = &OasMode_lookup,
>> +    .get = qdev_propinfo_get_enum,
>> +    .set = qdev_propinfo_set_enum,
>> +    .set_default_value = qdev_propinfo_set_default_value_enum,
>> +};
>> +
>>   /* --- Reserved Region --- */
>>   
>>   /*
>> diff --git a/include/hw/core/qdev-properties-system.h b/include/hw/core/qdev-properties-system.h
>> index 4708885164..2cbea16d61 100644
>> --- a/include/hw/core/qdev-properties-system.h
>> +++ b/include/hw/core/qdev-properties-system.h
>> @@ -15,6 +15,7 @@ extern const PropertyInfo qdev_prop_mig_mode;
>>   extern const PropertyInfo qdev_prop_granule_mode;
>>   extern const PropertyInfo qdev_prop_zero_page_detection;
>>   extern const PropertyInfo qdev_prop_ssidsize_mode;
>> +extern const PropertyInfo qdev_prop_oas_mode;
>>   extern const PropertyInfo qdev_prop_losttickpolicy;
>>   extern const PropertyInfo qdev_prop_blockdev_on_error;
>>   extern const PropertyInfo qdev_prop_bios_chs_trans;
>> @@ -64,6 +65,8 @@ extern const PropertyInfo qdev_prop_virtio_gpu_output_list;
>>                          ZeroPageDetection)
>>   #define DEFINE_PROP_SSIDSIZE_MODE(_n, _s, _f, _d) \
>>       DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_ssidsize_mode, SsidSizeMode)
>> +#define DEFINE_PROP_OAS_MODE(_n, _s, _f, _d) \
>> +    DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_oas_mode, OasMode)
>>   #define DEFINE_PROP_LOSTTICKPOLICY(_n, _s, _f, _d) \
>>       DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_losttickpolicy, \
>>                           LostTickPolicy)
>> diff --git a/qapi/misc-arm.json b/qapi/misc-arm.json
>> index b372a3661b..76b6965502 100644
>> --- a/qapi/misc-arm.json
>> +++ b/qapi/misc-arm.json
>> @@ -60,3 +60,19 @@
>>   { 'enum': 'SsidSizeMode',
>>     'data': [ 'auto', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
>>               '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20' ] }
>> +
>> +##
>> +# @OasMode:
>> +#
>> +# SMMUv3 Output Address Size configuration mode.
>> +#
>> +# @auto: derive from host IOMMU capabilities
>> +#
>> +# @44: 44-bit output address size
>> +#
>> +# @48: 48-bit output address size
>> +#
>> +# Since: 11.0
>> +##
>> +{ 'enum': 'OasMode',
>> +  'data': [ 'auto', '44', '48' ] }
> you also miss other enum values

I left out the other possible OAS values because only 44 and 48 are 
supported per the previous accel SMMUv3 series. Should we still include 
the other possible OAS values according to the SMMUv3 spec? If we do, we 
would end up hitting that check for 44 or 48 bit OAS when a different 
value is specified.

Thanks,
Nathan
Re: [RFC PATCH 7/8] qdev: Add an OasMode property
Posted by Eric Auger 1 month ago

On 3/11/26 7:24 PM, Nathan Chen wrote:
> Hi Eric,
>
> On 3/11/2026 11:20 AM, Eric Auger wrote:
>> Hi Nathan,
>>
>> On 3/9/26 8:21 PM, Nathan Chen wrote:
>>> From: Nathan Chen<nathanc@nvidia.com>
>>>
>>> Introduce a new enum type property allowing to set an Output Address
>>> Size. Values are auto, 44, and 48, where a value of N specifies an
>>> N-bit OAS.
>>>
>>> Signed-off-by: Nathan Chen<nathanc@nvidia.com>
>>> ---
>>>   hw/core/qdev-properties-system.c         | 13 +++++++++++++
>>>   include/hw/core/qdev-properties-system.h |  3 +++
>>>   qapi/misc-arm.json                       | 16 ++++++++++++++++
>>>   3 files changed, 32 insertions(+)
>>>
>>> diff --git a/hw/core/qdev-properties-system.c
>>> b/hw/core/qdev-properties-system.c
>>> index 4aca1d4326..a805ee2e1f 100644
>>> --- a/hw/core/qdev-properties-system.c
>>> +++ b/hw/core/qdev-properties-system.c
>>> @@ -737,6 +737,19 @@ const PropertyInfo qdev_prop_ssidsize_mode = {
>>>       .set_default_value = qdev_propinfo_set_default_value_enum,
>>>   };
>>>   +/* --- OasMode --- */
>>> +
>>> +QEMU_BUILD_BUG_ON(sizeof(OasMode) != sizeof(int));
>>> +
>>> +const PropertyInfo qdev_prop_oas_mode = {
>>> +    .type = "OasMode",
>>> +    .description = "oas mode: auto, 32, 36, 40, 42, 44, 48, 52, 56",
>>> +    .enum_table = &OasMode_lookup,
>>> +    .get = qdev_propinfo_get_enum,
>>> +    .set = qdev_propinfo_set_enum,
>>> +    .set_default_value = qdev_propinfo_set_default_value_enum,
>>> +};
>>> +
>>>   /* --- Reserved Region --- */
>>>     /*
>>> diff --git a/include/hw/core/qdev-properties-system.h
>>> b/include/hw/core/qdev-properties-system.h
>>> index 4708885164..2cbea16d61 100644
>>> --- a/include/hw/core/qdev-properties-system.h
>>> +++ b/include/hw/core/qdev-properties-system.h
>>> @@ -15,6 +15,7 @@ extern const PropertyInfo qdev_prop_mig_mode;
>>>   extern const PropertyInfo qdev_prop_granule_mode;
>>>   extern const PropertyInfo qdev_prop_zero_page_detection;
>>>   extern const PropertyInfo qdev_prop_ssidsize_mode;
>>> +extern const PropertyInfo qdev_prop_oas_mode;
>>>   extern const PropertyInfo qdev_prop_losttickpolicy;
>>>   extern const PropertyInfo qdev_prop_blockdev_on_error;
>>>   extern const PropertyInfo qdev_prop_bios_chs_trans;
>>> @@ -64,6 +65,8 @@ extern const PropertyInfo
>>> qdev_prop_virtio_gpu_output_list;
>>>                          ZeroPageDetection)
>>>   #define DEFINE_PROP_SSIDSIZE_MODE(_n, _s, _f, _d) \
>>>       DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_ssidsize_mode,
>>> SsidSizeMode)
>>> +#define DEFINE_PROP_OAS_MODE(_n, _s, _f, _d) \
>>> +    DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_oas_mode, OasMode)
>>>   #define DEFINE_PROP_LOSTTICKPOLICY(_n, _s, _f, _d) \
>>>       DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_losttickpolicy, \
>>>                           LostTickPolicy)
>>> diff --git a/qapi/misc-arm.json b/qapi/misc-arm.json
>>> index b372a3661b..76b6965502 100644
>>> --- a/qapi/misc-arm.json
>>> +++ b/qapi/misc-arm.json
>>> @@ -60,3 +60,19 @@
>>>   { 'enum': 'SsidSizeMode',
>>>     'data': [ 'auto', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
>>>               '10', '11', '12', '13', '14', '15', '16', '17', '18',
>>> '19', '20' ] }
>>> +
>>> +##
>>> +# @OasMode:
>>> +#
>>> +# SMMUv3 Output Address Size configuration mode.
>>> +#
>>> +# @auto: derive from host IOMMU capabilities
>>> +#
>>> +# @44: 44-bit output address size
>>> +#
>>> +# @48: 48-bit output address size
>>> +#
>>> +# Since: 11.0
>>> +##
>>> +{ 'enum': 'OasMode',
>>> +  'data': [ 'auto', '44', '48' ] }
>> you also miss other enum values
>
> I left out the other possible OAS values because only 44 and 48 are
> supported per the previous accel SMMUv3 series. Should we still
> include the other possible OAS values according to the SMMUv3 spec? If
> we do, we would end up hitting that check for 44 or 48 bit OAS when a
> different value is specified. 
I think we want to want to provision for all values supported by the
SMMUv3 spec

Eric
>
> Thanks,
> Nathan
>


Re: [RFC PATCH 7/8] qdev: Add an OasMode property
Posted by Nathan Chen 1 month ago

On 3/12/2026 2:29 AM, Eric Auger wrote:
> 
> On 3/11/26 7:24 PM, Nathan Chen wrote:
>> Hi Eric,
>>
>> On 3/11/2026 11:20 AM, Eric Auger wrote:
>>> Hi Nathan,
>>>
>>> On 3/9/26 8:21 PM, Nathan Chen wrote:
>>>> From: Nathan Chen<nathanc@nvidia.com>
>>>>
>>>> Introduce a new enum type property allowing to set an Output Address
>>>> Size. Values are auto, 44, and 48, where a value of N specifies an
>>>> N-bit OAS.
>>>>
>>>> Signed-off-by: Nathan Chen<nathanc@nvidia.com>
>>>> ---
>>>>    hw/core/qdev-properties-system.c         | 13 +++++++++++++
>>>>    include/hw/core/qdev-properties-system.h |  3 +++
>>>>    qapi/misc-arm.json                       | 16 ++++++++++++++++
>>>>    3 files changed, 32 insertions(+)
>>>>
>>>> diff --git a/hw/core/qdev-properties-system.c
>>>> b/hw/core/qdev-properties-system.c
>>>> index 4aca1d4326..a805ee2e1f 100644
>>>> --- a/hw/core/qdev-properties-system.c
>>>> +++ b/hw/core/qdev-properties-system.c
>>>> @@ -737,6 +737,19 @@ const PropertyInfo qdev_prop_ssidsize_mode = {
>>>>        .set_default_value = qdev_propinfo_set_default_value_enum,
>>>>    };
>>>>    +/* --- OasMode --- */
>>>> +
>>>> +QEMU_BUILD_BUG_ON(sizeof(OasMode) != sizeof(int));
>>>> +
>>>> +const PropertyInfo qdev_prop_oas_mode = {
>>>> +    .type = "OasMode",
>>>> +    .description = "oas mode: auto, 32, 36, 40, 42, 44, 48, 52, 56",
>>>> +    .enum_table = &OasMode_lookup,
>>>> +    .get = qdev_propinfo_get_enum,
>>>> +    .set = qdev_propinfo_set_enum,
>>>> +    .set_default_value = qdev_propinfo_set_default_value_enum,
>>>> +};
>>>> +
>>>>    /* --- Reserved Region --- */
>>>>      /*
>>>> diff --git a/include/hw/core/qdev-properties-system.h
>>>> b/include/hw/core/qdev-properties-system.h
>>>> index 4708885164..2cbea16d61 100644
>>>> --- a/include/hw/core/qdev-properties-system.h
>>>> +++ b/include/hw/core/qdev-properties-system.h
>>>> @@ -15,6 +15,7 @@ extern const PropertyInfo qdev_prop_mig_mode;
>>>>    extern const PropertyInfo qdev_prop_granule_mode;
>>>>    extern const PropertyInfo qdev_prop_zero_page_detection;
>>>>    extern const PropertyInfo qdev_prop_ssidsize_mode;
>>>> +extern const PropertyInfo qdev_prop_oas_mode;
>>>>    extern const PropertyInfo qdev_prop_losttickpolicy;
>>>>    extern const PropertyInfo qdev_prop_blockdev_on_error;
>>>>    extern const PropertyInfo qdev_prop_bios_chs_trans;
>>>> @@ -64,6 +65,8 @@ extern const PropertyInfo
>>>> qdev_prop_virtio_gpu_output_list;
>>>>                           ZeroPageDetection)
>>>>    #define DEFINE_PROP_SSIDSIZE_MODE(_n, _s, _f, _d) \
>>>>        DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_ssidsize_mode,
>>>> SsidSizeMode)
>>>> +#define DEFINE_PROP_OAS_MODE(_n, _s, _f, _d) \
>>>> +    DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_oas_mode, OasMode)
>>>>    #define DEFINE_PROP_LOSTTICKPOLICY(_n, _s, _f, _d) \
>>>>        DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_losttickpolicy, \
>>>>                            LostTickPolicy)
>>>> diff --git a/qapi/misc-arm.json b/qapi/misc-arm.json
>>>> index b372a3661b..76b6965502 100644
>>>> --- a/qapi/misc-arm.json
>>>> +++ b/qapi/misc-arm.json
>>>> @@ -60,3 +60,19 @@
>>>>    { 'enum': 'SsidSizeMode',
>>>>      'data': [ 'auto', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
>>>>                '10', '11', '12', '13', '14', '15', '16', '17', '18',
>>>> '19', '20' ] }
>>>> +
>>>> +##
>>>> +# @OasMode:
>>>> +#
>>>> +# SMMUv3 Output Address Size configuration mode.
>>>> +#
>>>> +# @auto: derive from host IOMMU capabilities
>>>> +#
>>>> +# @44: 44-bit output address size
>>>> +#
>>>> +# @48: 48-bit output address size
>>>> +#
>>>> +# Since: 11.0
>>>> +##
>>>> +{ 'enum': 'OasMode',
>>>> +  'data': [ 'auto', '44', '48' ] }
>>> you also miss other enum values
>> I left out the other possible OAS values because only 44 and 48 are
>> supported per the previous accel SMMUv3 series. Should we still
>> include the other possible OAS values according to the SMMUv3 spec? If
>> we do, we would end up hitting that check for 44 or 48 bit OAS when a
>> different value is specified.
> I think we want to want to provision for all values supported by the
> SMMUv3 spec

Ok, I will include all the values in the next refresh.

Thanks,
Nathan