[PATCH v2 0/2] s390: mark features that depend on deprecated features as deprecated

Collin Walling posted 2 patches 1 week, 5 days ago
target/s390x/cpu_features.c | 139 ++++++++++++++++++++++++++++++++++++
target/s390x/cpu_features.h |   4 ++
target/s390x/cpu_models.c   | 133 ++--------------------------------
3 files changed, 148 insertions(+), 128 deletions(-)
[PATCH v2 0/2] s390: mark features that depend on deprecated features as deprecated
Posted by Collin Walling 1 week, 5 days ago
Changelog:
  v2
    - updated loop structure to restart and check if previous dependencies
       need to be accounted for
    - added fixes tag to patch #2

Description:

When the CPU model deprecated-features work was completed in QEMU, features that
have a dependency on a deprecated feature were not themselves marked deprecated.
This patch series corrects that oversight.

Specifically, ineff_nc_tx depends on te, which has been deprecated. When a user
starts a VM with deprecated features disabled, QEMU currently emits:

    warning: 'ineff_nc_tx' requires 'te'

With these patches, query-cpu-model-expansion includes ineff_nc_tx in the
deprecated-props array alongside the other deprecated features:

{
  "return": {
    "deprecated-props": [
      "ineff_nc_tx",
      "bpb",
      "te",
      "cte",
      "csske"
    ],
    "model": {
      "name": "gen17a-base",
      "props": { ... }
    }
  }
}

libvirt uses this response to determine which features to disable when the
deprecated_features=on|off attribute is set. With these patches, ineff_nc_tx
will be disabled along with the other deprecated features. The result can be
verified with virsh domcapabilities:

$ virsh domcapabilities --disable-deprecated-features \
    --xpath "/domainCapabilities/cpu/mode[@name='host-model']/feature[@policy='disable']"
<feature policy="disable" name="bpb"/>
<feature policy="disable" name="csske"/>
<feature policy="disable" name="cte"/>
<feature policy="disable" name="ineff_nc_tx"/>
<feature policy="disable" name="te"/>

Collin L. Walling (2):
  target/s390x: externalize feat dependency array
  target/s390x: mark feats dependent on deprecated feats as deprecated

 target/s390x/cpu_features.c | 139 ++++++++++++++++++++++++++++++++++++
 target/s390x/cpu_features.h |   4 ++
 target/s390x/cpu_models.c   | 133 ++--------------------------------
 3 files changed, 148 insertions(+), 128 deletions(-)

-- 
2.55.0
Re: [PATCH v2 0/2] s390: mark features that depend on deprecated features as deprecated
Posted by Eric Farman 3 days, 2 hours ago

On 10/9/26 2:55 PM, Collin Walling wrote:
> Changelog:
>    v2
>      - updated loop structure to restart and check if previous dependencies
>         need to be accounted for
>      - added fixes tag to patch #2
> 
> Description:
> 
> When the CPU model deprecated-features work was completed in QEMU, features that
> have a dependency on a deprecated feature were not themselves marked deprecated.
> This patch series corrects that oversight.
> 
> Specifically, ineff_nc_tx depends on te, which has been deprecated. When a user
> starts a VM with deprecated features disabled, QEMU currently emits:
> 
>      warning: 'ineff_nc_tx' requires 'te'
> 
> With these patches, query-cpu-model-expansion includes ineff_nc_tx in the
> deprecated-props array alongside the other deprecated features:
> 
> {
>    "return": {
>      "deprecated-props": [
>        "ineff_nc_tx",
>        "bpb",
>        "te",
>        "cte",
>        "csske"
>      ],
>      "model": {
>        "name": "gen17a-base",
>        "props": { ... }
>      }
>    }
> }
> 
> libvirt uses this response to determine which features to disable when the
> deprecated_features=on|off attribute is set. With these patches, ineff_nc_tx
> will be disabled along with the other deprecated features. The result can be
> verified with virsh domcapabilities:
> 
> $ virsh domcapabilities --disable-deprecated-features \
>      --xpath "/domainCapabilities/cpu/mode[@name='host-model']/feature[@policy='disable']"
> <feature policy="disable" name="bpb"/>
> <feature policy="disable" name="csske"/>
> <feature policy="disable" name="cte"/>
> <feature policy="disable" name="ineff_nc_tx"/>
> <feature policy="disable" name="te"/>
> 
> Collin L. Walling (2):
>    target/s390x: externalize feat dependency array
>    target/s390x: mark feats dependent on deprecated feats as deprecated
> 
>   target/s390x/cpu_features.c | 139 ++++++++++++++++++++++++++++++++++++
>   target/s390x/cpu_features.h |   4 ++
>   target/s390x/cpu_models.c   | 133 ++--------------------------------
>   3 files changed, 148 insertions(+), 128 deletions(-)
> 

Queued to s390x-staging for 11.2; thank you!
Re: [PATCH v2 0/2] s390: mark features that depend on deprecated features as deprecated
Posted by Collin Walling 2 days ago
On 10/19/26 12:33, Eric Farman wrote:
> Queued to s390x-staging for 11.2; thank you!

Thanks!

-- 
Regards,
  Collin
Re: [PATCH v2 0/2] s390: mark features that depend on deprecated features as deprecated
Posted by Eric Farman 1 week, 5 days ago

On 10/9/26 2:55 PM, Collin Walling wrote:
> Changelog:
>    v2
>      - updated loop structure to restart and check if previous dependencies
>         need to be accounted for
>      - added fixes tag to patch #2
> 
> Description:
> 
> When the CPU model deprecated-features work was completed in QEMU, features that
> have a dependency on a deprecated feature were not themselves marked deprecated.
> This patch series corrects that oversight.
> 
> Specifically, ineff_nc_tx depends on te, which has been deprecated. When a user
> starts a VM with deprecated features disabled, QEMU currently emits:
> 
>      warning: 'ineff_nc_tx' requires 'te'
> 
> With these patches, query-cpu-model-expansion includes ineff_nc_tx in the
> deprecated-props array alongside the other deprecated features:
> 
> {
>    "return": {
>      "deprecated-props": [
>        "ineff_nc_tx",
>        "bpb",
>        "te",
>        "cte",
>        "csske"
>      ],
>      "model": {
>        "name": "gen17a-base",
>        "props": { ... }
>      }
>    }
> }
> 
> libvirt uses this response to determine which features to disable when the
> deprecated_features=on|off attribute is set. With these patches, ineff_nc_tx
> will be disabled along with the other deprecated features. The result can be
> verified with virsh domcapabilities:
> 
> $ virsh domcapabilities --disable-deprecated-features \
>      --xpath "/domainCapabilities/cpu/mode[@name='host-model']/feature[@policy='disable']"
> <feature policy="disable" name="bpb"/>
> <feature policy="disable" name="csske"/>
> <feature policy="disable" name="cte"/>
> <feature policy="disable" name="ineff_nc_tx"/>
> <feature policy="disable" name="te"/>
> 
> Collin L. Walling (2):
>    target/s390x: externalize feat dependency array
>    target/s390x: mark feats dependent on deprecated feats as deprecated
> 
>   target/s390x/cpu_features.c | 139 ++++++++++++++++++++++++++++++++++++
>   target/s390x/cpu_features.h |   4 ++
>   target/s390x/cpu_models.c   | 133 ++--------------------------------
>   3 files changed, 148 insertions(+), 128 deletions(-)
> 

For the series:

Reviewed-by: Eric Farman <farman@linux.ibm.com>

I'll pick this up and toss it in our CI for a few days. Thank you!!
Re: [PATCH v2 0/2] s390: mark features that depend on deprecated features as deprecated
Posted by Matthew Rosato 1 week, 5 days ago
On 10/9/26 2:55 PM, Collin Walling wrote:
> Changelog:
>   v2
>     - updated loop structure to restart and check if previous dependencies
>        need to be accounted for

To clarify, this was in response to a comment I made to Collin off-list
that I failed to mirror here.

My concern was that v1 was handling a case where A was deprecated and B
depended on A -- but was not catching something like C depending on B
which depended on A -- while B would be marked as deprecated, it would
not be added to feats[], so C would ultimately not be marked deprecated
because B would not be found in feats[].

His v2 patch 2 not only loops to ensure we catch dependencies that may
not yet have been marked deprecated on the previous pass, but it also
instead looks directly at the most up-to-date features bitmap instead of
the local feats[].

AFAICT this is a theoretical problem today, but a potential future
hazard since we definitely have such daisy-chained feature dependencies.