From 5d2b30e929407d31fbb506312ce6036a56781d18 Mon Sep 17 00:00:00 2001 From: Andrew Lukoshko Date: Thu, 7 Aug 2025 11:43:38 +0000 Subject: [PATCH] import CS qemu-kvm-6.2.0-53.module+el8.10.0+90638+6d8ade84.4 --- .gitignore | 2 +- .../kvm-qga-skip-bind-mounts-in-fs-list.patch | 94 ++++++++++ ...dentation-in-qapi-machine-target.jso.patch | 52 ++++++ ...ter-deprecated-properties-based-on-m.patch | 110 ++++++++++++ ...-s390x-flag-te-and-cte-as-deprecated.patch | 44 +++++ ...e-deprecated-props-to-CpuModelExpans.patch | 163 ++++++++++++++++++ ...ort-deprecated-props-in-cpu-model-ex.patch | 136 +++++++++++++++ SPECS/qemu-kvm.spec | 28 ++- 8 files changed, 627 insertions(+), 2 deletions(-) create mode 100644 SOURCES/kvm-qga-skip-bind-mounts-in-fs-list.patch create mode 100644 SOURCES/kvm-redhat-Adjust-indentation-in-qapi-machine-target.jso.patch create mode 100644 SOURCES/kvm-target-s390x-filter-deprecated-properties-based-on-m.patch create mode 100644 SOURCES/kvm-target-s390x-flag-te-and-cte-as-deprecated.patch create mode 100644 SOURCES/kvm-target-s390x-move-deprecated-props-to-CpuModelExpans.patch create mode 100644 SOURCES/kvm-target-s390x-report-deprecated-props-in-cpu-model-ex.patch diff --git a/.gitignore b/.gitignore index a03a982..867245c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ SOURCES/qemu-6.2.0.tar.xz SOURCES/tests_data_acpi_pc_SSDT.dimmpxm SOURCES/tests_data_acpi_q35_FACP.slic SOURCES/tests_data_acpi_q35_SSDT.dimmpxm -SOURCES/tests_data_acpi_virt_SSDT.memhp \ No newline at end of file +SOURCES/tests_data_acpi_virt_SSDT.memhp diff --git a/SOURCES/kvm-qga-skip-bind-mounts-in-fs-list.patch b/SOURCES/kvm-qga-skip-bind-mounts-in-fs-list.patch new file mode 100644 index 0000000..516ee1b --- /dev/null +++ b/SOURCES/kvm-qga-skip-bind-mounts-in-fs-list.patch @@ -0,0 +1,94 @@ +From 661c0fee958d993b5c8d4600998ba0fdbf43da11 Mon Sep 17 00:00:00 2001 +From: Konstantin Kostiuk +Date: Wed, 18 Dec 2024 18:49:04 +0200 +Subject: [PATCH] qga: skip bind mounts in fs list + +RH-Author: Konstantin Kostiuk +RH-MergeRequest: 423: qga: skip bind mounts in fs list +RH-Jira: RHEL-59214 +RH-Acked-by: yvugenfi +RH-Acked-by: Jon Maloy +RH-Commit: [1/1] 2ebf2a4dba0e2da9d077c116accd12dc7f3dbcd1 + +The filesystem list in build_fs_mount_list should skip bind mounts. +This because we end up in locking situations when doing fsFreeze. Like +mentioned in [1] and [2]. + +Next to that, the build_fs_mount_list call did a fallback via +build_fs_mount_list_from_mtab if mountinfo did not exist. +There it skipped bind mounts, but this is broken for newer OS. +This as mounts does not return the path of the bind mount but the +underlying dev/partition, so S_ISDIR will never return true in +dev_major_minor call. + +This patch simply checks the existing devmajor:devminor tuple in the +mounts, and if it already exists, this means we have the same devices +mounted again, a bind mount. So skip this. + +Same approach is used in open-vm-tools [3]. + +[1]: https://gitlab.com/qemu-project/qemu/-/issues/592 +[2]: https://gitlab.com/qemu-project/qemu/-/issues/520 +[3]: https://github.com/vmware/open-vm-tools/commit/d58847b497e212737007958c945af1df22a8ab58 + +Signed-off-by: Jean-Louis Dupond +Reviewed-by: Konstantin Kostiuk +Link: https://lore.kernel.org/r/20241002100634.162499-2-jean-louis@dupond.be +Signed-off-by: Konstantin Kostiuk +--- + qga/commands-posix.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/qga/commands-posix.c b/qga/commands-posix.c +index 75dbaab68e..dce0d1551f 100644 +--- a/qga/commands-posix.c ++++ b/qga/commands-posix.c +@@ -668,6 +668,22 @@ static int dev_major_minor(const char *devpath, + return -1; + } + ++/* ++ * Check if we already have the devmajor:devminor in the mounts ++ * If thats the case return true. ++ */ ++static bool dev_exists(FsMountList *mounts, unsigned int devmajor, unsigned int devminor) ++{ ++ FsMount *mount; ++ ++ QTAILQ_FOREACH(mount, mounts, next) { ++ if (mount->devmajor == devmajor && mount->devminor == devminor) { ++ return true; ++ } ++ } ++ return false; ++} ++ + /* + * Walk the mount table and build a list of local file systems + */ +@@ -701,6 +717,10 @@ static void build_fs_mount_list_from_mtab(FsMountList *mounts, Error **errp) + /* Skip bind mounts */ + continue; + } ++ if (dev_exists(mounts, devmajor, devminor)) { ++ /* Skip already existing devices (bind mounts) */ ++ continue; ++ } + + mount = g_new0(FsMount, 1); + mount->dirname = g_strdup(ment->mnt_dir); +@@ -780,6 +800,11 @@ static void build_fs_mount_list(FsMountList *mounts, Error **errp) + continue; + } + } ++ ++ if (dev_exists(mounts, devmajor, devminor)) { ++ /* Skip already existing devices (bind mounts) */ ++ continue; ++ } + + mount = g_new0(FsMount, 1); + mount->dirname = g_strdup(line + dir_s); +-- +2.47.1 + diff --git a/SOURCES/kvm-redhat-Adjust-indentation-in-qapi-machine-target.jso.patch b/SOURCES/kvm-redhat-Adjust-indentation-in-qapi-machine-target.jso.patch new file mode 100644 index 0000000..688706e --- /dev/null +++ b/SOURCES/kvm-redhat-Adjust-indentation-in-qapi-machine-target.jso.patch @@ -0,0 +1,52 @@ +From 1c0887f9a108a237fc87834c87e9d0358dd98dd9 Mon Sep 17 00:00:00 2001 +From: Thomas Huth +Date: Wed, 23 Apr 2025 12:54:42 +0200 +Subject: [PATCH 5/5] redhat: Adjust indentation in qapi/machine-target.json + for QEMU v6.2 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 449: Fix for live-migrating guests from IBM z16 to z17 host machines +RH-Jira: RHEL-88701 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [5/5] 1a50aac42e2b8e2990f5a00f69117a58911c8107 + +Upstream Status: RHEL-only +JIRA: https://issues.redhat.com/browse/RHEL-88701 + +The QAPI parser of QEMU v6.2 is stricter with the indentation rules, +so we have to adjust the indentation with the colon of the previous +line here. + +Signed-off-by: Thomas Huth +--- + qapi/machine-target.json | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/qapi/machine-target.json b/qapi/machine-target.json +index 320688cd21..415e0fc3c6 100644 +--- a/qapi/machine-target.json ++++ b/qapi/machine-target.json +@@ -210,11 +210,11 @@ + # @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). ++# 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 + ## +-- +2.48.1 + diff --git a/SOURCES/kvm-target-s390x-filter-deprecated-properties-based-on-m.patch b/SOURCES/kvm-target-s390x-filter-deprecated-properties-based-on-m.patch new file mode 100644 index 0000000..5bab65e --- /dev/null +++ b/SOURCES/kvm-target-s390x-filter-deprecated-properties-based-on-m.patch @@ -0,0 +1,110 @@ +From 31c0a5fb90575b85dc9510417d6b8317319d0b57 Mon Sep 17 00:00:00 2001 +From: Collin Walling +Date: Fri, 19 Jul 2024 14:17:41 -0400 +Subject: [PATCH 3/5] target/s390x: filter deprecated properties based on model + expansion type +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 449: Fix for live-migrating guests from IBM z16 to z17 host machines +RH-Jira: RHEL-88701 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [3/5] dd1889f1de28aa4c40df34fcad7898dc600374fd + +Currently, there is no way to execute the query-cpu-model-expansion +command to retrieve a comprehenisve list of deprecated properties, as +the result is dependent per-model. To enable this, the expansion output +is modified as such: + +When reporting a "full" CPU model, show the *entire* list of deprecated +properties regardless if they are supported on the model. A full +expansion outputs all known CPU model properties anyway, so it makes +sense to report all deprecated properties here too. + +This allows management apps to query a single model (e.g. host) to +acquire the full list of deprecated properties. + +Additionally, when reporting a "static" CPU model, the command will +only show deprecated properties that are a subset of the model's +*enabled* properties. This is more accurate than how the query was +handled before, which blindly reported deprecated properties that +were never otherwise introduced for certain models. + +Acked-by: David Hildenbrand +Suggested-by: Jiri Denemark +Signed-off-by: Collin Walling +Message-ID: <20240719181741.35146-1-walling@linux.ibm.com> +Signed-off-by: Thomas Huth +(cherry picked from commit eed0e8ffa38f0695c0519508f6e4f5a3297cbd67) +--- + qapi/machine-target.json | 5 +++-- + target/s390x/cpu_models_sysemu.c | 16 +++++++++------- + 2 files changed, 12 insertions(+), 9 deletions(-) + +diff --git a/qapi/machine-target.json b/qapi/machine-target.json +index c93c811dbc..d32dc6958f 100644 +--- a/qapi/machine-target.json ++++ b/qapi/machine-target.json +@@ -18,8 +18,9 @@ + # @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 props are a subset of the full model's +-# definition list of properties. (since 9.1) ++# 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 + ## +diff --git a/target/s390x/cpu_models_sysemu.c b/target/s390x/cpu_models_sysemu.c +index 7ed94b4117..edb81769cd 100644 +--- a/target/s390x/cpu_models_sysemu.c ++++ b/target/s390x/cpu_models_sysemu.c +@@ -183,11 +183,15 @@ static void cpu_info_from_model(CpuModelInfo *info, const S390CPUModel *model, + bool delta_changes) + { + QDict *qdict = qdict_new(); +- S390FeatBitmap bitmap; ++ S390FeatBitmap bitmap, deprecated; + + /* 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, +@@ -202,6 +206,9 @@ 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, +@@ -217,12 +224,7 @@ static void cpu_info_from_model(CpuModelInfo *info, const S390CPUModel *model, + info->has_props = true; + } + +- /* features flagged as deprecated */ +- bitmap_zero(bitmap, S390_FEAT_MAX); +- s390_get_deprecated_features(bitmap); +- +- bitmap_and(bitmap, bitmap, model->def->full_feat, S390_FEAT_MAX); +- s390_feat_bitmap_to_ascii(bitmap, &info->deprecated_props, list_add_feat); ++ s390_feat_bitmap_to_ascii(deprecated, &info->deprecated_props, list_add_feat); + info->has_deprecated_props = !!info->deprecated_props; + } + +-- +2.48.1 + diff --git a/SOURCES/kvm-target-s390x-flag-te-and-cte-as-deprecated.patch b/SOURCES/kvm-target-s390x-flag-te-and-cte-as-deprecated.patch new file mode 100644 index 0000000..f0a056d --- /dev/null +++ b/SOURCES/kvm-target-s390x-flag-te-and-cte-as-deprecated.patch @@ -0,0 +1,44 @@ +From a851c0768ce192035014cce72d231a8df62dc011 Mon Sep 17 00:00:00 2001 +From: Collin Walling +Date: Mon, 29 Apr 2024 15:10:59 -0400 +Subject: [PATCH 2/5] target/s390x: flag te and cte as deprecated +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 449: Fix for live-migrating guests from IBM z16 to z17 host machines +RH-Jira: RHEL-88701 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [2/5] d00d9654126596e31603ddec04ede4227b982739 + +Add the CONSTRAINT_TRANSACTIONAL_EXE (cte) and TRANSACTIONAL_EXE (te) +to the list of deprecated features. + +Signed-off-by: Collin Walling +Reviewed-by: David Hildenbrand +Message-ID: <20240429191059.11806-3-walling@linux.ibm.com> +Signed-off-by: Thomas Huth +(cherry picked from commit 6e55b32d45976a8e78cbd3bbdf6ed1148cb2662a) +--- + target/s390x/cpu_features.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c +index 40be75c90a..59f1d6d81e 100644 +--- a/target/s390x/cpu_features.c ++++ b/target/s390x/cpu_features.c +@@ -218,6 +218,9 @@ void s390_get_deprecated_features(S390FeatBitmap features) + /* CSSKE is deprecated on newer generations */ + S390_FEAT_CONDITIONAL_SSKE, + S390_FEAT_BPB, ++ /* Deprecated on z16 */ ++ S390_FEAT_CONSTRAINT_TRANSACTIONAL_EXE, ++ S390_FEAT_TRANSACTIONAL_EXE + }; + int i; + +-- +2.48.1 + diff --git a/SOURCES/kvm-target-s390x-move-deprecated-props-to-CpuModelExpans.patch b/SOURCES/kvm-target-s390x-move-deprecated-props-to-CpuModelExpans.patch new file mode 100644 index 0000000..9956766 --- /dev/null +++ b/SOURCES/kvm-target-s390x-move-deprecated-props-to-CpuModelExpans.patch @@ -0,0 +1,163 @@ +From 1142610383e66712cfa4d11cc02d7661f68d7193 Mon Sep 17 00:00:00 2001 +From: Collin Walling +Date: Fri, 26 Jul 2024 16:36:46 -0400 +Subject: [PATCH 4/5] target/s390x: move @deprecated-props to CpuModelExpansion + Info +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 449: Fix for live-migrating guests from IBM z16 to z17 host machines +RH-Jira: RHEL-88701 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [4/5] 2c66f3000c44742b02d1cd4b64e3d091b4be05cb + +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] 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 +[ david: - add "Fixes", adjust description, reference v3 instead + - make property s390x-only and non-optional + - fixup "populate" vs. "populated" ] +Signed-off-by: David Hildenbrand +(cherry picked from commit 442110bc6f3f308aedf884103fdba87ba906dfe7) +--- + 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 d32dc6958f..320688cd21 100644 +--- a/qapi/machine-target.json ++++ b/qapi/machine-target.json +@@ -17,17 +17,11 @@ + # @name: the name of the CPU definition the model is based on + # @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: +@@ -215,10 +209,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 edb81769cd..6680724bfe 100644 +--- a/target/s390x/cpu_models_sysemu.c ++++ b/target/s390x/cpu_models_sysemu.c +@@ -183,15 +183,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, +@@ -206,9 +202,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, +@@ -223,9 +216,6 @@ static void cpu_info_from_model(CpuModelInfo *info, const S390CPUModel *model, + info->props = QOBJECT(qdict); + info->has_props = true; + } +- +- 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, +@@ -236,6 +226,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, &err); +@@ -255,6 +246,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); ++ ++ /* populate list of deprecated features */ ++ 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; + } + +-- +2.48.1 + diff --git a/SOURCES/kvm-target-s390x-report-deprecated-props-in-cpu-model-ex.patch b/SOURCES/kvm-target-s390x-report-deprecated-props-in-cpu-model-ex.patch new file mode 100644 index 0000000..9ddfe1f --- /dev/null +++ b/SOURCES/kvm-target-s390x-report-deprecated-props-in-cpu-model-ex.patch @@ -0,0 +1,136 @@ +From 1955d06f0ffcdcacdf1eec5c9fee99a2a9e81350 Mon Sep 17 00:00:00 2001 +From: Collin Walling +Date: Mon, 29 Apr 2024 15:10:58 -0400 +Subject: [PATCH 1/5] target/s390x: report deprecated-props in + cpu-model-expansion reply +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 449: Fix for live-migrating guests from IBM z16 to z17 host machines +RH-Jira: RHEL-88701 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [1/5] 9cecba35e831615bc1c899730b4f32de0fd7ba83 + +Retain a list of deprecated features disjoint from any particular +CPU model. A query-cpu-model-expansion reply will now provide a list of +properties (i.e. features) that are flagged as deprecated. Example: + + { + "return": { + "model": { + "name": "z14.2-base", + "deprecated-props": [ + "bpb", + "csske" + ], + "props": { + "pfmfi": false, + "exrl": true, + ...a lot more props... + "skey": false, + "vxpdeh2": false + } + } + } + } + +It is recommended that s390 guests operate with these features +explicitly disabled to ensure compatibility with future hardware. + +Signed-off-by: Collin Walling +Acked-by: Markus Armbruster +Reviewed-by: David Hildenbrand +Message-ID: <20240429191059.11806-2-walling@linux.ibm.com> +Signed-off-by: Thomas Huth +(cherry picked from commit 8aa2211e855df79ddd363e5f0d8c4d7d4c376e16) +--- + qapi/machine-target.json | 7 ++++++- + target/s390x/cpu_features.c | 14 ++++++++++++++ + target/s390x/cpu_features.h | 1 + + target/s390x/cpu_models_sysemu.c | 8 ++++++++ + 4 files changed, 29 insertions(+), 1 deletion(-) + +diff --git a/qapi/machine-target.json b/qapi/machine-target.json +index f5ec4bc172..c93c811dbc 100644 +--- a/qapi/machine-target.json ++++ b/qapi/machine-target.json +@@ -17,11 +17,16 @@ + # @name: the name of the CPU definition the model is based on + # @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 props are a subset of the full model's ++# definition list of properties. (since 9.1) ++# + # Since: 2.8 + ## + { 'struct': 'CpuModelInfo', + 'data': { 'name': 'str', +- '*props': 'any' } } ++ '*props': 'any', ++ '*deprecated-props': ['str'] } } + + ## + # @CpuModelExpansionType: +diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c +index ebb155ce1c..40be75c90a 100644 +--- a/target/s390x/cpu_features.c ++++ b/target/s390x/cpu_features.c +@@ -212,6 +212,20 @@ void s390_feat_bitmap_to_ascii(const S390FeatBitmap features, void *opaque, + }; + } + ++void s390_get_deprecated_features(S390FeatBitmap features) ++{ ++ static const int feats[] = { ++ /* CSSKE is deprecated on newer generations */ ++ S390_FEAT_CONDITIONAL_SSKE, ++ S390_FEAT_BPB, ++ }; ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(feats); i++) { ++ set_bit(feats[i], features); ++ } ++} ++ + #define FEAT_GROUP_INIT(_name, _group, _desc) \ + { \ + .name = _name, \ +diff --git a/target/s390x/cpu_features.h b/target/s390x/cpu_features.h +index a9bd68a2e1..661a8cd6db 100644 +--- a/target/s390x/cpu_features.h ++++ b/target/s390x/cpu_features.h +@@ -69,6 +69,7 @@ void s390_add_from_feat_block(S390FeatBitmap features, S390FeatType type, + uint8_t *data); + void s390_feat_bitmap_to_ascii(const S390FeatBitmap features, void *opaque, + void (*fn)(const char *name, void *opaque)); ++void s390_get_deprecated_features(S390FeatBitmap features); + + /* Definition of a CPU feature group */ + typedef struct { +diff --git a/target/s390x/cpu_models_sysemu.c b/target/s390x/cpu_models_sysemu.c +index 6a04ccab1b..7ed94b4117 100644 +--- a/target/s390x/cpu_models_sysemu.c ++++ b/target/s390x/cpu_models_sysemu.c +@@ -216,6 +216,14 @@ static void cpu_info_from_model(CpuModelInfo *info, const S390CPUModel *model, + info->props = QOBJECT(qdict); + info->has_props = true; + } ++ ++ /* features flagged as deprecated */ ++ bitmap_zero(bitmap, S390_FEAT_MAX); ++ s390_get_deprecated_features(bitmap); ++ ++ bitmap_and(bitmap, bitmap, model->def->full_feat, S390_FEAT_MAX); ++ s390_feat_bitmap_to_ascii(bitmap, &info->deprecated_props, list_add_feat); ++ info->has_deprecated_props = !!info->deprecated_props; + } + + CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType type, +-- +2.48.1 + diff --git a/SPECS/qemu-kvm.spec b/SPECS/qemu-kvm.spec index 57297f6..3596d1a 100644 --- a/SPECS/qemu-kvm.spec +++ b/SPECS/qemu-kvm.spec @@ -83,7 +83,7 @@ Obsoletes: %1-rhev <= %{epoch}:%{version}-%{release} Summary: QEMU is a machine emulator and virtualizer Name: qemu-kvm Version: 6.2.0 -Release: 53%{?rcrel}%{?dist}.2 +Release: 53%{?rcrel}%{?dist}.4 # Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped Epoch: 15 License: GPLv2 and GPLv2+ and CC-BY @@ -891,6 +891,18 @@ Patch364: kvm-block-move-bdrv_qiov_is_aligned-to-file-posix.patch Patch365: kvm-block-use-the-request-length-for-iov-alignment.patch # For RHEL-26197 - virtiofsd --help and manpage does not agree on --thread-pool-size default value Patch366: kvm-Fix-thread-pool-size-default-value-in-the-man-page.patch +# For RHEL-59214 - qemu-ga cannot freeze filesystems with sentinelone +Patch367: kvm-qga-skip-bind-mounts-in-fs-list.patch +# For RHEL-88701 - [RHEL 8.10 qemu] KVM - Live migration of guest fails from z16-z17 [rhel-8.10.z] +Patch368: kvm-target-s390x-report-deprecated-props-in-cpu-model-ex.patch +# For RHEL-88701 - [RHEL 8.10 qemu] KVM - Live migration of guest fails from z16-z17 [rhel-8.10.z] +Patch369: kvm-target-s390x-flag-te-and-cte-as-deprecated.patch +# For RHEL-88701 - [RHEL 8.10 qemu] KVM - Live migration of guest fails from z16-z17 [rhel-8.10.z] +Patch370: kvm-target-s390x-filter-deprecated-properties-based-on-m.patch +# For RHEL-88701 - [RHEL 8.10 qemu] KVM - Live migration of guest fails from z16-z17 [rhel-8.10.z] +Patch371: kvm-target-s390x-move-deprecated-props-to-CpuModelExpans.patch +# For RHEL-88701 - [RHEL 8.10 qemu] KVM - Live migration of guest fails from z16-z17 [rhel-8.10.z] +Patch372: kvm-redhat-Adjust-indentation-in-qapi-machine-target.jso.patch BuildRequires: wget BuildRequires: rpm-build @@ -2060,6 +2072,20 @@ sh %{_sysconfdir}/sysconfig/modules/kvm.modules &> /dev/null || : %changelog +* Mon May 05 2025 Jon Maloy - 6.2.0-53.el8.4 +- kvm-target-s390x-report-deprecated-props-in-cpu-model-ex.patch [RHEL-88701] +- kvm-target-s390x-flag-te-and-cte-as-deprecated.patch [RHEL-88701] +- kvm-target-s390x-filter-deprecated-properties-based-on-m.patch [RHEL-88701] +- kvm-target-s390x-move-deprecated-props-to-CpuModelExpans.patch [RHEL-88701] +- kvm-redhat-Adjust-indentation-in-qapi-machine-target.jso.patch [RHEL-88701] +- Resolves: RHEL-88701 + ([RHEL 8.10 qemu] KVM - Live migration of guest fails from z16-z17 [rhel-8.10.z]) + +* Sun Jan 05 2025 Jon Maloy - 6.2.0-53.el8.3 +- kvm-qga-skip-bind-mounts-in-fs-list.patch [RHEL-59214] +- Resolves: RHEL-59214 + (qemu-ga cannot freeze filesystems with sentinelone) + * Tue Oct 15 2024 Jon Maloy - 6.2.0-53.el8.2 - kvm-Fix-thread-pool-size-default-value-in-the-man-page.patch [RHEL-26197] - Resolves: RHEL-26197