[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion
From: |
Collin Walling |
Subject: |
Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info |
Date: |
Mon, 29 Jul 2024 15:25:04 -0400 |
User-agent: |
Mozilla Thunderbird |
On 7/29/24 10:22 AM, David Hildenbrand wrote:
>>>> The simplest way to address 4 is to tack 'if': 'TARGET_S390X' to
>>>> @deprecated-props.
>>>>
>>>
>>> diff --git a/qapi/machine-target.json b/qapi/machine-target.json
>>> index 09dec2b9bb..0be95d559c 100644
>>> --- a/qapi/machine-target.json
>>> +++ b/qapi/machine-target.json
>>> @@ -253,7 +253,7 @@
>>> ##
>>> { 'struct': 'CpuModelExpansionInfo',
>>> 'data': { 'model': 'CpuModelInfo',
>>> - '*deprecated-props': ['str'] },
>>> + '*deprecated-props' : { 'type': ['str'], 'if': 'TARGET_S390X'
>>> } },
>>> 'if': { 'any': [ 'TARGET_S390X',
>>> 'TARGET_I386',
>>> 'TARGET_ARM',
>>>
>>>
>>> Should do the trick, right?
>>
>> Yes. Break the line before 'if', please.
>
> Ack
>
> [...]
>
>>
>> Questions?
>
> As clear as it can get, thanks! :)
>
> That would leave us with:
>
>
> From 8be206168e31b9c3ff89e2b99c57a85d30150194 Mon Sep 17 00:00:00 2001
> From: Collin Walling <walling@linux.ibm.com>
> Date: Fri, 26 Jul 2024 16:36:46 -0400
> Subject: [PATCH] target/s390x: move @deprecated-props to CpuModelExpansion
> Info
>
> CpuModelInfo is used both as command argument and in command
> returns.
>
> Its @deprecated-props array does not make any sense in arguments,
> and is silently ignored. We actually want it only as return value
> of query-cpu-model-expansion.
>
> Move it from CpuModelInfo to CpuModelExpansionType, and document
> its dependence on expansion type property.
>
> This was identified late during review [1] and we have to fix it up
> while it's not part of an official QEMU release yet.
>
> [1]
> 20240719181741.35146-1-walling@linux.ibm.com/">https://lore.kernel.org/qemu-devel/20240719181741.35146-1-walling@linux.ibm.com/
>
> Message-ID: <20240726203646.20279-1-walling@linux.ibm.com>
> Fixes: eed0e8ffa38f ("target/s390x: filter deprecated properties based on
> model expansion type")
> Signed-off-by: Collin Walling <walling@linux.ibm.com>
> [ david: - add "Fixes", adjust description, reference v3 instead
> - make property s390x-only and non-optional ]
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---
> qapi/machine-target.json | 19 +++++++++++--------
> target/s390x/cpu_models_sysemu.c | 29 ++++++++++++++++++-----------
> 2 files changed, 29 insertions(+), 19 deletions(-)
>
> diff --git a/qapi/machine-target.json b/qapi/machine-target.json
> index a552e2b0ce..00bbecc905 100644
> --- a/qapi/machine-target.json
> +++ b/qapi/machine-target.json
> @@ -20,17 +20,11 @@
> #
> # @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 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.
> -#
> # Since: 2.8
> ##
> { 'struct': 'CpuModelInfo',
> 'data': { 'name': 'str',
> - '*props': 'any',
> - '*deprecated-props': ['str'] } }
> + '*props': 'any' } }
>
> ##
> # @CpuModelExpansionType:
> @@ -248,10 +242,19 @@
> #
> # @model: the expanded CpuModelInfo.
> #
> +# @deprecated-props: a 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).
> +#
> # Since: 2.8
> ##
> { 'struct': 'CpuModelExpansionInfo',
> - 'data': { 'model': 'CpuModelInfo' },
> + 'data': { 'model': 'CpuModelInfo',
> + 'deprecated-props' : { 'type': ['str'],
> + 'if': 'TARGET_S390X' } },
> 'if': { 'any': [ 'TARGET_S390X',
> 'TARGET_I386',
> 'TARGET_ARM',
> diff --git a/target/s390x/cpu_models_sysemu.c
> b/target/s390x/cpu_models_sysemu.c
> index 94dd798b4c..6c8e5c7260 100644
> --- a/target/s390x/cpu_models_sysemu.c
> +++ b/target/s390x/cpu_models_sysemu.c
> @@ -174,15 +174,11 @@ static void cpu_info_from_model(CpuModelInfo *info,
> const S390CPUModel *model,
> bool delta_changes)
> {
> QDict *qdict = qdict_new();
> - S390FeatBitmap bitmap, deprecated;
> + S390FeatBitmap bitmap;
>
> /* always fallback to the static base model */
> info->name = g_strdup_printf("%s-base", model->def->name);
>
> - /* features flagged as deprecated */
> - bitmap_zero(deprecated, S390_FEAT_MAX);
> - s390_get_deprecated_features(deprecated);
> -
> if (delta_changes) {
> /* features deleted from the base feature set */
> bitmap_andnot(bitmap, model->def->base_feat, model->features,
> @@ -197,9 +193,6 @@ static void cpu_info_from_model(CpuModelInfo *info, const
> S390CPUModel *model,
> if (!bitmap_empty(bitmap, S390_FEAT_MAX)) {
> s390_feat_bitmap_to_ascii(bitmap, qdict,
> qdict_add_enabled_feat);
> }
> -
> - /* deprecated features that are a subset of the model's enabled
> features */
> - bitmap_and(deprecated, deprecated, model->features, S390_FEAT_MAX);
> } else {
> /* expand all features */
> s390_feat_bitmap_to_ascii(model->features, qdict,
> @@ -213,9 +206,6 @@ static void cpu_info_from_model(CpuModelInfo *info, const
> S390CPUModel *model,
> } else {
> info->props = QOBJECT(qdict);
> }
> -
> - s390_feat_bitmap_to_ascii(deprecated, &info->deprecated_props,
> list_add_feat);
> - info->has_deprecated_props = !!info->deprecated_props;
> }
>
> CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType
> type,
> @@ -226,6 +216,7 @@ CpuModelExpansionInfo
> *qmp_query_cpu_model_expansion(CpuModelExpansionType type,
> CpuModelExpansionInfo *expansion_info = NULL;
> S390CPUModel s390_model;
> bool delta_changes = false;
> + S390FeatBitmap deprecated_feats;
>
> /* convert it to our internal representation */
> cpu_model_from_info(&s390_model, model, "model", &err);
> @@ -245,6 +236,22 @@ CpuModelExpansionInfo
> *qmp_query_cpu_model_expansion(CpuModelExpansionType type,
> expansion_info = g_new0(CpuModelExpansionInfo, 1);
> expansion_info->model = g_malloc0(sizeof(*expansion_info->model));
> cpu_info_from_model(expansion_info->model, &s390_model, delta_changes);
> +
> + /* populated list of deprecated features */
s/populated/populate
> + bitmap_zero(deprecated_feats, S390_FEAT_MAX);
> + s390_get_deprecated_features(deprecated_feats);
> +
> + if (delta_changes) {
> + /*
> + * Only populate deprecated features that are a
> + * subset of the features enabled on the CPU model.
> + */
> + bitmap_and(deprecated_feats, deprecated_feats,
> + s390_model.features, S390_FEAT_MAX);
> + }
> +
> + s390_feat_bitmap_to_ascii(deprecated_feats,
> + &expansion_info->deprecated_props,
> list_add_feat);
> return expansion_info;
> }
>
Eh, just a small nit above due to a typo I made. Other than that, gave
it all another run-through just in case and everything is still good.
--
Regards,
Collin
- [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, Collin Walling, 2024/07/26
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, David Hildenbrand, 2024/07/26
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, Markus Armbruster, 2024/07/27
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, David Hildenbrand, 2024/07/29
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, Markus Armbruster, 2024/07/29
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, David Hildenbrand, 2024/07/29
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, Markus Armbruster, 2024/07/29
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, Collin Walling, 2024/07/29
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, David Hildenbrand, 2024/07/29
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info,
Collin Walling <=
- Re: [PATCH v1] target/s390x: move @deprecated-props to CpuModelExpansion Info, David Hildenbrand, 2024/07/29