diff --git a/libvirt-qemu-virtiofs-cache-use-never-instead-of-none.patch b/libvirt-qemu-virtiofs-cache-use-never-instead-of-none.patch new file mode 100644 index 0000000..ef29da5 --- /dev/null +++ b/libvirt-qemu-virtiofs-cache-use-never-instead-of-none.patch @@ -0,0 +1,49 @@ +From d7285cb688e4f6b61dd842be7d0a2e773ad7d21b Mon Sep 17 00:00:00 2001 +Message-ID: +From: =?UTF-8?q?J=C3=A1n=20Tomko?= +Date: Tue, 23 Jul 2024 14:14:13 +0200 +Subject: [PATCH] qemu: virtiofs: cache: use 'never' instead of 'none' +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The new option style renamed one of the cache modes. + +https://issues.redhat.com/browse/RHEL-50329 + +Signed-off-by: Ján Tomko +Reviewed-by: Michal Privoznik +(cherry picked from commit 8d3b2397372111d15d6b79138c5c5a80203f85f5) +Signed-off-by: Ján Tomko +--- + src/qemu/qemu_virtiofs.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/src/qemu/qemu_virtiofs.c b/src/qemu/qemu_virtiofs.c +index 0e3c7dbb58..c7be2766a2 100644 +--- a/src/qemu/qemu_virtiofs.c ++++ b/src/qemu/qemu_virtiofs.c +@@ -147,10 +147,20 @@ qemuVirtioFSBuildCommandLine(virQEMUDriverConfig *cfg, + virCommandAddArg(cmd, "--shared-dir"); + virCommandAddArg(cmd, fs->src->path); + +- if (fs->cache) { ++ switch (fs->cache) { ++ case VIR_DOMAIN_FS_CACHE_MODE_DEFAULT: ++ case VIR_DOMAIN_FS_CACHE_MODE_LAST: ++ break; ++ case VIR_DOMAIN_FS_CACHE_MODE_NONE: ++ virCommandAddArg(cmd, "--cache"); ++ virCommandAddArg(cmd, "never"); ++ break; ++ case VIR_DOMAIN_FS_CACHE_MODE_ALWAYS: + virCommandAddArg(cmd, "--cache"); + virCommandAddArg(cmd, virDomainFSCacheModeTypeToString(fs->cache)); ++ break; + } ++ + if (fs->sandbox) { + virCommandAddArg(cmd, "--sandbox"); + virCommandAddArg(cmd, virDomainFSSandboxModeTypeToString(fs->sandbox)); +-- +2.46.0 diff --git a/libvirt-qemu_domain-Strip-acpi-from-s390-x-definitions.patch b/libvirt-qemu_domain-Strip-acpi-from-s390-x-definitions.patch new file mode 100644 index 0000000..9666ca8 --- /dev/null +++ b/libvirt-qemu_domain-Strip-acpi-from-s390-x-definitions.patch @@ -0,0 +1,105 @@ +From f34372c108e5b4f1e37c333a7ff2c50faa9f534e Mon Sep 17 00:00:00 2001 +Message-ID: +From: Peter Krempa +Date: Wed, 31 Jul 2024 11:34:59 +0200 +Subject: [PATCH] qemu_domain: Strip from s390(x) definitions + +The s390(x) machines never supported ACPI. That didn't stop users +enabling ACPI in their config. As of libvirt-9.2 (98c4e3d073) with new +enough qemu we reject configs which require ACPI, but qemu can't satisfy +it. + +This breaks migration of existing VMs with the old wrong configs to new +libvirt installations. + +To address this introduce a post-parse fixup removing the ACPI flag +specifically for s390 machines which do enable it in the definition. + +The advantage of doing it in post-parse, rather than simply relaxing the +ABI stability check to allow users providing an fixed XML when migrating +(allowing change of the ACPI flag for s390 in ABI stability check, as it + doesn't impact ABI), is that only the destination installation needs to +be patched in order to preserve migration. + +To mitigate the disadvantage of simply stripping it from all s390(x) +configs the hack is not applied when defining or starting a new domain +from the XML, to preserve the error about unsupported configuration. + +Resolves: https://issues.redhat.com/browse/RHEL-49516 +Signed-off-by: Peter Krempa +Reviewed-by: Andrea Bolognani +Reviewed-by: Boris Fiuczynski +(cherry picked from commit 4ba4f659e42a30c3fa8ece414616a23a992acfaa) +--- + src/qemu/qemu_domain.c | 49 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 49 insertions(+) + +diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c +index 1a90311ca5..1bafe3708a 100644 +--- a/src/qemu/qemu_domain.c ++++ b/src/qemu/qemu_domain.c +@@ -5013,6 +5013,53 @@ qemuDomainDefPostParseBasic(virDomainDef *def, + } + + ++/** ++ * qemuDomainDefACPIPostParse: ++ * @def: domain definition ++ * @qemuCaps: qemu capabilities object ++ * ++ * Fixup the use of ACPI flag on certain architectures that never supported it ++ * and users for some reason used it, which would break migration to newer ++ * libvirt versions which check whether given machine type supports ACPI. ++ * ++ * The fixup is done in post-parse as it's hard to update the ABI stability ++ * check on source of the migration. ++ */ ++static void ++qemuDomainDefACPIPostParse(virDomainDef *def, ++ virQEMUCaps *qemuCaps, ++ unsigned int parseFlags) ++{ ++ /* Only cases when ACPI is enabled need to be fixed up */ ++ if (def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) ++ return; ++ ++ /* Strip the feature only for non-fresh configs, in order to still ++ * produce an error if the feature is present in a newly defined one. ++ * ++ * The use of the VIR_DOMAIN_DEF_PARSE_ABI_UPDATE looks counter-intuitive, ++ * but it's used only in qemuDomainCreateXML/qemuDomainDefineXMLFlags APIs ++ * */ ++ if (parseFlags & VIR_DOMAIN_DEF_PARSE_ABI_UPDATE) ++ return; ++ ++ /* This fixup is applicable _only_ on architectures which were present as of ++ * libvirt-9.2 and *never* supported ACPI. The fixup is currently done only ++ * for existing users of s390(x) to fix migration for configs which had ++ * despite being ignored. ++ */ ++ if (def->os.arch != VIR_ARCH_S390 && ++ def->os.arch != VIR_ARCH_S390X) ++ return; ++ ++ /* To be sure, we only strip ACPI if given machine type doesn't support it */ ++ if (virQEMUCapsMachineSupportsACPI(qemuCaps, def->virtType, def->os.machine) != VIR_TRISTATE_BOOL_NO) ++ return; ++ ++ def->features[VIR_DOMAIN_FEATURE_ACPI] = VIR_TRISTATE_SWITCH_ABSENT; ++} ++ ++ + static int + qemuDomainDefPostParse(virDomainDef *def, + unsigned int parseFlags, +@@ -5033,6 +5080,8 @@ qemuDomainDefPostParse(virDomainDef *def, + if (qemuDomainDefMachinePostParse(def, qemuCaps) < 0) + return -1; + ++ qemuDomainDefACPIPostParse(def, qemuCaps, parseFlags); ++ + if (qemuDomainDefBootPostParse(def, driver, parseFlags) < 0) + return -1; + +-- +2.46.0 diff --git a/libvirt-qemuxmlconftest-Add-tests-for-the-ACPI-stripping-hack-on-s390.patch b/libvirt-qemuxmlconftest-Add-tests-for-the-ACPI-stripping-hack-on-s390.patch new file mode 100644 index 0000000..46a1466 --- /dev/null +++ b/libvirt-qemuxmlconftest-Add-tests-for-the-ACPI-stripping-hack-on-s390.patch @@ -0,0 +1,435 @@ +From 94915522e99b56933fd792dfd801f70a188f3534 Mon Sep 17 00:00:00 2001 +Message-ID: <94915522e99b56933fd792dfd801f70a188f3534.1723213495.git.jdenemar@redhat.com> +From: Peter Krempa +Date: Wed, 31 Jul 2024 12:38:23 +0200 +Subject: [PATCH] qemuxmlconftest: Add tests for the ACPI stripping hack on + s390 + +Replace the 'misc-acpi' case by testing a bunch of architectures for how +ACPI is handled including a test for the s390 ACPI strip hack added in +previous commit. + +The input files are adapted from the corresponding '-minimal.xml' files. + +Signed-off-by: Peter Krempa +Reviewed-by: Andrea Bolognani +Reviewed-by: Boris Fiuczynski +(cherry picked from commit 432e442ca8eeb4ed8c0dcc3a3c7d723f85b38c40) +https://issues.redhat.com/browse/RHEL-49516 +--- + .../aarch64-noacpi-acpi.aarch64-latest.err | 1 + + tests/qemuxmlconfdata/aarch64-noacpi-acpi.xml | 18 ++++++++ + .../misc-acpi.x86_64-latest.args | 34 --------------- + .../misc-acpi.x86_64-latest.xml | 41 ------------------- + tests/qemuxmlconfdata/misc-acpi.xml | 33 --------------- + .../riscv64-virt-acpi.riscv64-latest.args | 33 +++++++++++++++ + .../riscv64-virt-acpi.riscv64-latest.xml | 36 ++++++++++++++++ + tests/qemuxmlconfdata/riscv64-virt-acpi.xml | 15 +++++++ + ...s390x-ccw-acpi.s390x-latest.abi-update.err | 1 + + .../s390x-ccw-acpi.s390x-latest.args | 32 +++++++++++++++ + .../s390x-ccw-acpi.s390x-latest.xml | 27 ++++++++++++ + tests/qemuxmlconfdata/s390x-ccw-acpi.xml | 15 +++++++ + tests/qemuxmlconftest.c | 18 +++++++- + 13 files changed, 195 insertions(+), 109 deletions(-) + create mode 100644 tests/qemuxmlconfdata/aarch64-noacpi-acpi.aarch64-latest.err + create mode 100644 tests/qemuxmlconfdata/aarch64-noacpi-acpi.xml + delete mode 100644 tests/qemuxmlconfdata/misc-acpi.x86_64-latest.args + delete mode 100644 tests/qemuxmlconfdata/misc-acpi.x86_64-latest.xml + delete mode 100644 tests/qemuxmlconfdata/misc-acpi.xml + create mode 100644 tests/qemuxmlconfdata/riscv64-virt-acpi.riscv64-latest.args + create mode 100644 tests/qemuxmlconfdata/riscv64-virt-acpi.riscv64-latest.xml + create mode 100644 tests/qemuxmlconfdata/riscv64-virt-acpi.xml + create mode 100644 tests/qemuxmlconfdata/s390x-ccw-acpi.s390x-latest.abi-update.err + create mode 100644 tests/qemuxmlconfdata/s390x-ccw-acpi.s390x-latest.args + create mode 100644 tests/qemuxmlconfdata/s390x-ccw-acpi.s390x-latest.xml + create mode 100644 tests/qemuxmlconfdata/s390x-ccw-acpi.xml + +diff --git a/tests/qemuxmlconfdata/aarch64-noacpi-acpi.aarch64-latest.err b/tests/qemuxmlconfdata/aarch64-noacpi-acpi.aarch64-latest.err +new file mode 100644 +index 0000000000..5f379d56ce +--- /dev/null ++++ b/tests/qemuxmlconfdata/aarch64-noacpi-acpi.aarch64-latest.err +@@ -0,0 +1 @@ ++unsupported configuration: machine type 'borzoi' does not support ACPI +diff --git a/tests/qemuxmlconfdata/aarch64-noacpi-acpi.xml b/tests/qemuxmlconfdata/aarch64-noacpi-acpi.xml +new file mode 100644 +index 0000000000..10dbeabd6d +--- /dev/null ++++ b/tests/qemuxmlconfdata/aarch64-noacpi-acpi.xml +@@ -0,0 +1,18 @@ ++ ++ aarch64test ++ 6ba410c5-1e5c-4d57-bee7-2228e7ffa32f ++ 1048576 ++ 1 ++ ++ ++ hvm ++ ++ ++ ++ ++ ++ ++ /usr/bin/qemu-system-aarch64 ++ ++ ++ +diff --git a/tests/qemuxmlconfdata/misc-acpi.x86_64-latest.args b/tests/qemuxmlconfdata/misc-acpi.x86_64-latest.args +deleted file mode 100644 +index c4e09c0af2..0000000000 +--- a/tests/qemuxmlconfdata/misc-acpi.x86_64-latest.args ++++ /dev/null +@@ -1,34 +0,0 @@ +-LC_ALL=C \ +-PATH=/bin \ +-HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +-USER=test \ +-LOGNAME=test \ +-XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +-XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +-XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +-/usr/bin/qemu-system-x86_64 \ +--name guest=QEMUGuest1,debug-threads=on \ +--S \ +--object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +--machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=on \ +--accel tcg \ +--cpu qemu64 \ +--m size=219136k \ +--object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ +--overcommit mem-lock=off \ +--smp 1,sockets=1,cores=1,threads=1 \ +--uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +--display none \ +--no-user-config \ +--nodefaults \ +--chardev socket,id=charmonitor,fd=1729,server=on,wait=off \ +--mon chardev=charmonitor,id=monitor,mode=control \ +--rtc base=utc \ +--no-shutdown \ +--boot strict=on \ +--device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ +--blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","read-only":false}' \ +--device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-storage","id":"ide0-0-0","bootindex":1}' \ +--audiodev '{"id":"audio1","driver":"none"}' \ +--sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +--msg timestamp=on +diff --git a/tests/qemuxmlconfdata/misc-acpi.x86_64-latest.xml b/tests/qemuxmlconfdata/misc-acpi.x86_64-latest.xml +deleted file mode 100644 +index 176926bb60..0000000000 +--- a/tests/qemuxmlconfdata/misc-acpi.x86_64-latest.xml ++++ /dev/null +@@ -1,41 +0,0 @@ +- +- QEMUGuest1 +- c7a5fdbd-edaf-9455-926a-d65c16db1809 +- 219136 +- 219136 +- 1 +- +- hvm +- +- +- +- +- +- +- qemu64 +- +- +- destroy +- restart +- destroy +- +- /usr/bin/qemu-system-x86_64 +- +- +- +- +-
+- +- +-
+- +- +-
+- +- +- +- +-