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(-)
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
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!
On 10/19/26 12:33, Eric Farman wrote: > Queued to s390x-staging for 11.2; thank you! Thanks! -- Regards, Collin
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!!
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.
© 2016 - 2026 Red Hat, Inc.