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


Reply via email to