There are certain CPU model features that depend on other features
that are flagged for deprecation. For example `ineff_nc_tx` depends
on the `te` deprecated feature.
If a user defines a VM with the current list of deprecated features
disabled, the following warning occurs:
warning: 'ineff_nc_tx' requires 'te'
To alleviate this, add these "dependent features" to the deprecated
features list. This allows the user to see *all* features that should
be disabled to ensure a successful migration to a host system that
may not support certain deprecated features.
Fixes: 6e55b32d45 ("target/s390x: flag te and cte as deprecated")
Signed-off-by: Collin Walling <[email protected]>
Reviewed-by: Hendrik Brueckner <[email protected]>
---
target/s390x/cpu_features.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
index 20f9947c7be..babee7f5bac 100644
--- a/target/s390x/cpu_features.c
+++ b/target/s390x/cpu_features.c
@@ -360,10 +360,23 @@ void s390_get_deprecated_features(S390FeatBitmap features)
S390_FEAT_TRANSACTIONAL_EXE
};
int i;
+ bool restart;
for (i = 0; i < ARRAY_SIZE(feats); i++) {
set_bit(feats[i], features);
}
+
+ /* Mark features that depend on any deprecated feature */
+ do {
+ restart = false;
+ for (i = 0; i < s390_feat_deps_len; i++) {
+ if (test_bit(s390_feat_deps[i][1], features) &&
+ !test_and_set_bit(s390_feat_deps[i][0], features)) {
+ /* Restart in case set features have other dependencies */
+ restart = true;
+ }
+ }
+ } while (restart);
}
#define FEAT_GROUP_INIT(_name, _group, _desc) \
--
2.55.0