qdev: Add an OasMode property type

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

Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Shameer Kolothum <skolothumtho@nvidia.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Nathan Chen <nathanc@nvidia.com>
Message-id: 20260323182454.1416110-7-nathanc@nvidia.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Nathan Chen
2026-03-24 14:02:29 +00:00
committed by Peter Maydell
parent ffded86bdd
commit d3d2de3d22
3 changed files with 44 additions and 0 deletions

View File

@@ -737,6 +737,19 @@ const PropertyInfo qdev_prop_ssidsize_mode = {
.set_default_value = qdev_propinfo_set_default_value_enum, .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 --- */ /* --- Reserved Region --- */
/* /*

View File

@@ -15,6 +15,7 @@ extern const PropertyInfo qdev_prop_mig_mode;
extern const PropertyInfo qdev_prop_granule_mode; extern const PropertyInfo qdev_prop_granule_mode;
extern const PropertyInfo qdev_prop_zero_page_detection; extern const PropertyInfo qdev_prop_zero_page_detection;
extern const PropertyInfo qdev_prop_ssidsize_mode; 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_losttickpolicy;
extern const PropertyInfo qdev_prop_blockdev_on_error; extern const PropertyInfo qdev_prop_blockdev_on_error;
extern const PropertyInfo qdev_prop_bios_chs_trans; extern const PropertyInfo qdev_prop_bios_chs_trans;
@@ -64,6 +65,8 @@ extern const PropertyInfo qdev_prop_virtio_gpu_output_list;
ZeroPageDetection) ZeroPageDetection)
#define DEFINE_PROP_SSIDSIZE_MODE(_n, _s, _f, _d) \ #define DEFINE_PROP_SSIDSIZE_MODE(_n, _s, _f, _d) \
DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_ssidsize_mode, SsidSizeMode) 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 DEFINE_PROP_LOSTTICKPOLICY(_n, _s, _f, _d) \
DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_losttickpolicy, \ DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_losttickpolicy, \
LostTickPolicy) LostTickPolicy)

View File

@@ -61,3 +61,31 @@
'data': [ 'auto', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'data': [ 'auto', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11', '12', '13', '14', '15', '16', '17', '18', '10', '11', '12', '13', '14', '15', '16', '17', '18',
'19', '20' ] } # order matters, see ssidsize_mode_to_value() '19', '20' ] } # order matters, see ssidsize_mode_to_value()
##
# @OasMode:
#
# SMMUv3 Output Address Size configuration mode.
#
# @auto: derive from host IOMMU capabilities
#
# @32: 32-bit output address size
#
# @36: 36-bit output address size
#
# @40: 40-bit output address size
#
# @42: 42-bit output address size
#
# @44: 44-bit output address size
#
# @48: 48-bit output address size
#
# @52: 52-bit output address size
#
# @56: 56-bit output address size
#
# Since: 11.0
##
{ 'enum': 'OasMode',
'data': [ 'auto', '32', '36', '40', '42', '44', '48', '52', '56' ] }