On 7/5/25 16:41, Markus Armbruster wrote:
Cc: author and reviewer of the @deprecated-props feature

Philippe Mathieu-Daudé <phi...@linaro.org> writes:

We'd like to have some unified QAPI schema. Having a structure field
conditional to a target being built in is not very practical.

While @deprecated-props is only used by s390x target, it is generic
enough and could be used by other targets (assuming we expand
CpuModelExpansionType enum values).

Let's always include this field, regardless of the target, but
make it optional.

Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org>
---
  qapi/machine-target.json | 7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/qapi/machine-target.json b/qapi/machine-target.json
index 541f93eeb78..3b109b4af87 100644
--- a/qapi/machine-target.json
+++ b/qapi/machine-target.json
@@ -244,19 +244,18 @@
  #
  # @model: the expanded CpuModelInfo.
  #
-# @deprecated-props: a list of properties that are flagged as
+# @deprecated-props: an optional list of properties that are flagged as
  #     deprecated by the CPU vendor.  The list depends on the
  #     CpuModelExpansionType: "static" properties are a subset of the
  #     enabled-properties for the expanded model; "full" properties are
  #     a set of properties that are deprecated across all models for
-#     the architecture.  (since: 9.1).
+#     the architecture.  (since: 10.1 -- since 9.1 on s390x --).
  #
  # Since: 2.8
  ##
  { 'struct': 'CpuModelExpansionInfo',
    'data': { 'model': 'CpuModelInfo',
-            'deprecated-props' : { 'type': ['str'],
-                                   'if': 'TARGET_S390X' } },
+            '*deprecated-props' : { 'type': ['str'] } },
    'if': { 'any': [ 'TARGET_S390X',
                     'TARGET_I386',
                     'TARGET_ARM',

When I see "optional array", I wonder about the difference between
"absent" and "present and empty".  The doc comment doesn't quite explain
it.  I figure "present and empty" means empty, while "absent" means we
don't know / not implemented.

Is the difference useful?


I'm also happy to implement as "present but empty".

Reply via email to