On 7/2/25 12:20, Daniel P. Berrangé via Devel wrote:
On Wed, Jul 02, 2025 at 12:05:45PM +0200, Boris Fiuczynski wrote:
On 7/1/25 18:35, Daniel P. Berrangé via Devel wrote:
On Tue, Jul 01, 2025 at 03:58:02PM +0200, Boris Fiuczynski wrote:
On 7/1/25 10:46, Daniel P. Berrangé via Devel wrote:
On Sun, Jun 29, 2025 at 11:19:30PM -0400, Collin Walling wrote:
From: Boris Fiuczynski <fiu...@linux.ibm.com>
Allow to define the default for deprecated_features when the attribute
is not set in the cpu defintion of a domain XML. If these features are
still desired, they may be reenabled via the deprecated_features='on'
attribute.
Some existing tests utilize this updated behavior, so update the CPU
features on the corresponding args files.
Signed-off-by: Boris Fiuczynski <fiu...@linux.ibm.com>
Signed-off-by: Collin Walling <wall...@linux.ibm.com>
---
src/qemu/libvirtd_qemu.aug | 3 ++
src/qemu/qemu.conf.in | 14 ++++++++
src/qemu/qemu_conf.c | 33 +++++++++++++++++++
src/qemu/qemu_conf.h | 12 +++++++
src/qemu/qemu_process.c | 26 ++++++++++++++-
src/qemu/test_libvirtd_qemu.aug.in | 1 +
...deprecated-features-none.s390x-latest.args | 2 +-
...default-video-type-s390x.s390x-latest.args | 2 +-
...vfio-zpci-ccw-memballoon.s390x-latest.args | 2 +-
.../launch-security-s390-pv.s390x-latest.args | 2 +-
...t-cpu-kvm-ccw-virtio-4.2.s390x-latest.args | 2 +-
.../s390-defaultconsole.s390x-latest.args | 2 +-
.../s390-panic.s390x-latest.args | 2 +-
13 files changed, 95 insertions(+), 8 deletions(-)
diff --git a/src/qemu/libvirtd_qemu.aug b/src/qemu/libvirtd_qemu.aug
index e1e479d72c..2b674d258d 100644
--- a/src/qemu/libvirtd_qemu.aug
+++ b/src/qemu/libvirtd_qemu.aug
@@ -160,6 +160,8 @@ module Libvirtd_qemu =
let filesystem_entry = str_array_entry "shared_filesystems"
+ let default_cpu_deprecated_features = str_entry
"default_cpu_deprecated_features"
+
(* Entries that used to exist in the config which are now
* deleted. We keep on parsing them so we don't break
* ability to parse old configs after upgrade
@@ -192,6 +194,7 @@ module Libvirtd_qemu =
| capability_filters_entry
| storage_entry
| filesystem_entry
+ | default_cpu_deprecated_features
| obsolete_entry
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/
. del /\n/ "\n" ]
diff --git a/src/qemu/qemu.conf.in b/src/qemu/qemu.conf.in
index 221bfa8095..368d929f78 100644
--- a/src/qemu/qemu.conf.in
+++ b/src/qemu/qemu.conf.in
@@ -1100,3 +1100,17 @@
# "/path/to/nvram",
# "/path/to/swtpm"
#]
+
+# If QEMU provides a list of deprecated CPU features it is possible to use
+# this list for removal of deprecated CPU features during CPU model expansion.
+# The deprecated_features XML attribute on the XML CPU element in the domain
+# XML can be used to turn deprecated CPU features 'off' or 'on'. Using the
+# option default_cpu_deprecated_features allows to define the default behavior
+# when the attribute deprecated_features is not provided in the domain XML.
+#
+# Possible options are:
+# "off" - (default) deprecated features are removed during CPU model expansion
+# "on" - deprecated features remain required in the expanded CPU model
+# "none" - no deprecated_features attribute is added to expanded CPU model
+#
+#default_cpu_deprecated_features = "off"
Having a host level config parameter change the guest ABI seems like a
bad idea to me. IMHO mgmt apps should be updated to use the XML to request
deprecated features are turned off by default.
it has been some time but the idea originally is yours.
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/message/MCDGWIF2LZGKM5HYPE34QZVZPGTMQL7N/
Sigh, I'm disagreeing with myself from a year ago :-(
In that comment I was talking about host CPU model, where it is slightly
acceptable for the expansion to vary over time. What I failed to contemplate
when I wrote that, was that this applies to all CPU modes, even the named
CPU models.
The config parameter gives customers that still make use of the deprecated
features in most of there guests the option to bail out of the default
switch without having to edit all there guests. Of course they will give up
a migrate to a CPU generation which no longer supports the cpu features to
work out of the box.
The default is switched in this patch to use deprecated_features = "off"
which disables all deprecated cpu features without using of the config
parameter.
That change in defaults would effectively make the next libvirt version a
regression compared to all previous versions, as CPU features would be
disappearing, despite the guest config not changed meanwhile.
The default is only effective on s390x and if mode="host-model" is set.
So that matches what you talked about.
Oh sorry, I misread the patch in this respect. So no objection.
Should we also apply to host-passthrough though ? Or is that already
being filtered by the kernel ?
I think it should not apply to host-passthrough. One can opt-in by
manually adding deprecated_features.
The main purpose of deprecated_features is to ensure migration to newer
machine generations. Using host-passthrough is known to be not safe to
migrate and disabling deprecated cpu features seems not to match
passthrough, IMHO.
With regards,
Daniel
--
Mit freundlichen Grüßen/Kind regards
Boris Fiuczynski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Wolfgang Wendt
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294