On 7/20/24 1:33 AM, Markus Armbruster wrote: > Collin Walling <wall...@linux.ibm.com> writes: > >> Currently, there is no way to execute the query-cpu-model-expansion >> command to retrieve a comprehenisve list of deprecated properties, as >> the result is dependent per-model. To enable this, the expansion output >> is modified as such: >> >> When reporting a "full" CPU model, show the *entire* list of deprecated >> properties regardless if they are supported on the model. A full >> expansion outputs all known CPU model properties anyway, so it makes >> sense to report all deprecated properties here too. >> >> This allows management apps to query a single model (e.g. host) to >> acquire the full list of deprecated properties. >> >> Additionally, when reporting a "static" CPU model, the command will >> only show deprecated properties that are a subset of the model's >> *enabled* properties. This is more accurate than how the query was >> handled before, which blindly reported deprecated properties that >> were never otherwise introduced for certain models. >> >> Acked-by: David Hildenbrand <da...@redhat.com> >> Suggested-by: Jiri Denemark <jdene...@redhat.com> >> Signed-off-by: Collin Walling <wall...@linux.ibm.com> >> --- >> >> Changelog: >> >> v3 >> - Removed the 'note' and cleaned up documentation >> - Revised commit message >> >> v2 >> - Changed commit message >> - Added documentation reflecting this change >> - Made code changes that more accurately filter the deprecated >> properties based on expansion type. This change makes it >> so that the deprecated-properties reported for a static model >> expansion are a subset of the model's properties instead of >> the model's full-definition properties. >> >> --- >> qapi/machine-target.json | 5 +++-- >> target/s390x/cpu_models_sysemu.c | 16 +++++++++------- >> 2 files changed, 12 insertions(+), 9 deletions(-) >> >> diff --git a/qapi/machine-target.json b/qapi/machine-target.json >> index a8d9ec87f5..67086f006f 100644 >> --- a/qapi/machine-target.json >> +++ b/qapi/machine-target.json >> @@ -21,8 +21,9 @@ >> # @props: a dictionary of QOM properties to be applied >> # >> # @deprecated-props: a list of properties that are flagged as deprecated >> -# by the CPU vendor. These props are a subset of the full model's >> -# definition list of properties. (since 9.1) >> +# by the CPU vendor. These properties are either a subset of the >> +# properties enabled on the CPU model, or a set of properties >> +# deprecated across all models for the architecture. > > > When is it "a subset of the properties enabled on the CPU model", and > when is it "a set of properties deprecated across all models for the > architecture"? > > My guess based on the commit message: it's the former when > query-cpu-model-expansion's type is "static", and the latter when it's > "full". >
Correct. I'm not confident where or how to document this dependency since cross-referencing commands/data structures does not seem to be the convention here. My first thought is to mention how deprecated properties are expanded under the @CpuModelExpansionType. Something like: diff --git a/qapi/machine-target.json b/qapi/machine-target.json index 67086f006f..3f38c5229f 100644 --- a/qapi/machine-target.json +++ b/qapi/machine-target.json @@ -44,11 +44,15 @@ # options, and accelerator options. Therefore, the resulting # model can be used by tooling without having to specify a # compatibility machine - e.g. when displaying the "host" model. -# The @static CPU models are migration-safe. +# The @static CPU models are migration-safe. Deprecated +# properties are a subset of the properties enabled for the +# expanded model. # # @full: Expand all properties. The produced model is not guaranteed # to be migration-safe, but allows tooling to get an insight and -# work with model details. +# work with model details. Deprecated properties are a set of +# properties that are deprecated across all models for the +# architecture. # # .. note:: When a non-migration-safe CPU model is expanded in static # mode, some features enabled by the CPU model may be omitted, Thoughts? [...] >> + >> + /* deprecated features that are a subset of the model's enabled >> features */ > > Recommend to wrap this line for legibility. > [...] Thanks for the feedback! Pending your response to the above, I'll post a v4. -- Regards, Collin