diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fbb5a7e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/libvirt-8.0.0.tar.xz
diff --git a/.libvirt.metadata b/.libvirt.metadata
new file mode 100644
index 0000000..76dff0f
--- /dev/null
+++ b/.libvirt.metadata
@@ -0,0 +1 @@
+e440412e9b45d7e24f0ef492d8edf5cf2cbd3f4c SOURCES/libvirt-8.0.0.tar.xz
diff --git a/SOURCES/libvirt-Make-systemd-unit-ordering-more-robust.patch b/SOURCES/libvirt-Make-systemd-unit-ordering-more-robust.patch
new file mode 100644
index 0000000..be38df5
--- /dev/null
+++ b/SOURCES/libvirt-Make-systemd-unit-ordering-more-robust.patch
@@ -0,0 +1,89 @@
+From ee1ce580f5373070e4b6a50d1ae4a3218c737a72 Mon Sep 17 00:00:00 2001
+Message-Id: <ee1ce580f5373070e4b6a50d1ae4a3218c737a72@dist-git>
+From: Martin Kletzander <mkletzan@redhat.com>
+Date: Mon, 14 Feb 2022 12:37:37 +0100
+Subject: [PATCH] Make systemd unit ordering more robust
+
+Since libvirt-guests script/service can operate on various URIs and we do
+support both socket activation and traditional services, the ordering should be
+specified for all the possible sockets and services.
+
+Also remove the Wants= dependency since do not want to start any service.  We
+cannot know which one libvirt-guests is configured, so we'd have to start all
+the daemons which would break if unused colliding services are not
+masked (libvirtd.service in the modular case and all the modular daemon service
+units in the monolithic scenario).  Fortunately we can assume that the system is
+configured properly to start services/sockets that are of interest to the user.
+That also works with the setup described in https://libvirt.org/daemons.html .
+
+To make it even more robust we add the daemon service into the machine units
+created for individual domains as it was missing there.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1868537
+
+Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
+Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
+(cherry picked from commit 4e42686adef8b9e9266f0099ddcd25bc95c4ed43)
+Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
+---
+ src/util/virsystemd.c           |  8 ++++++--
+ tools/libvirt-guests.service.in | 12 +++++++++++-
+ 2 files changed, 17 insertions(+), 3 deletions(-)
+
+diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c
+index a86d4c6bb9..f156c2f39a 100644
+--- a/src/util/virsystemd.c
++++ b/src/util/virsystemd.c
+@@ -441,8 +441,10 @@ int virSystemdCreateMachine(const char *name,
+                                                 nicindexes, nnicindexes, sizeof(int));
+         gprops = g_variant_new_parsed("[('Slice', <%s>),"
+                                       " ('After', <['libvirtd.service']>),"
++                                      " ('After', <['virt%sd.service']>),"
+                                       " ('Before', <['virt-guest-shutdown.target']>)]",
+-                                      slicename);
++                                      slicename,
++                                      drivername);
+         message = g_variant_new("(s@ayssus@ai@a(sv))",
+                                 name,
+                                 guuid,
+@@ -489,8 +491,10 @@ int virSystemdCreateMachine(const char *name,
+                                           uuid, 16, sizeof(unsigned char));
+         gprops = g_variant_new_parsed("[('Slice', <%s>),"
+                                       " ('After', <['libvirtd.service']>),"
++                                      " ('After', <['virt%sd.service']>),"
+                                       " ('Before', <['virt-guest-shutdown.target']>)]",
+-                                      slicename);
++                                      slicename,
++                                      drivername);
+         message = g_variant_new("(s@ayssus@a(sv))",
+                                 name,
+                                 guuid,
+diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in
+index 1a9b233e11..3cf6476196 100644
+--- a/tools/libvirt-guests.service.in
++++ b/tools/libvirt-guests.service.in
+@@ -1,10 +1,20 @@
+ [Unit]
+ Description=Suspend/Resume Running libvirt Guests
+-Wants=libvirtd.service
+ Requires=virt-guest-shutdown.target
+ After=network.target
+ After=time-sync.target
++After=libvirtd.socket
++After=virtqemud.socket
++After=virtlxcd.socket
++After=virtvboxd.socket
++After=virtvzd.socket
++After=virtxend.socket
+ After=libvirtd.service
++After=virtqemud.service
++After=virtlxcd.service
++After=virtvboxd.service
++After=virtvzd.service
++After=virtxend.service
+ After=virt-guest-shutdown.target
+ Documentation=man:libvirt-guests(8)
+ Documentation=https://libvirt.org
+-- 
+2.35.1
+
diff --git a/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch b/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch
new file mode 100644
index 0000000..245859e
--- /dev/null
+++ b/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch
@@ -0,0 +1,46 @@
+From 16b9ab85b004308e1d99db4ed4769a5fa56e2dfa Mon Sep 17 00:00:00 2001
+Message-Id: <16b9ab85b004308e1d99db4ed4769a5fa56e2dfa@dist-git>
+From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
+Date: Mon, 27 Aug 2018 13:09:38 +0200
+Subject: [PATCH] RHEL: Fix virConnectGetMaxVcpus output
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1092363
+
+RHEL-only.
+
+Ignore the maximum vcpu limit (KVM_CAP_MAX_VCPUS) on RHEL,
+since RHEL QEMU treats the recommended limit (KVM_CAP_NR_VCPUS)
+as the maximum, see:
+https://bugzilla.redhat.com/show_bug.cgi?id=998708
+
+(cherry picked from commit 7dff909fa34bdd93ad200dbffe70c0c1ee931925)
+Signed-off-by: Ján Tomko <jtomko@redhat.com>
+
+https: //bugzilla.redhat.com/show_bug.cgi?id=1582222
+Reviewed-by: Andrea Bolognani <abologna@redhat.com>
+---
+ src/util/virhostcpu.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
+index a07c00a0e9..35f41daef2 100644
+--- a/src/util/virhostcpu.c
++++ b/src/util/virhostcpu.c
+@@ -1166,6 +1166,11 @@ virHostCPUGetKVMMaxVCPUs(void)
+         return -1;
+     }
+ 
++/* Ignore KVM_CAP_MAX_VCPUS on RHEL - the recommended maximum
++ * is treated as a hard limit.
++ */
++# undef KVM_CAP_MAX_VCPUS
++
+ # ifdef KVM_CAP_MAX_VCPUS
+     /* at first try KVM_CAP_MAX_VCPUS to determine the maximum count */
+     if ((ret = ioctl(fd, KVM_CHECK_EXTENSION, KVM_CAP_MAX_VCPUS)) > 0)
+-- 
+2.34.1
+
diff --git a/SOURCES/libvirt-Revert-report-error-when-virProcessGetStatInfo-is-unable-to-parse-data.patch b/SOURCES/libvirt-Revert-report-error-when-virProcessGetStatInfo-is-unable-to-parse-data.patch
new file mode 100644
index 0000000..f2ab83f
--- /dev/null
+++ b/SOURCES/libvirt-Revert-report-error-when-virProcessGetStatInfo-is-unable-to-parse-data.patch
@@ -0,0 +1,104 @@
+From 81f1508d99d4740e7a2a092128d651cf245a554e Mon Sep 17 00:00:00 2001
+Message-Id: <81f1508d99d4740e7a2a092128d651cf245a554e@dist-git>
+From: Michal Privoznik <mprivozn@redhat.com>
+Date: Tue, 18 Jan 2022 12:40:09 +0100
+Subject: [PATCH] Revert "report error when virProcessGetStatInfo() is unable
+ to parse data"
+
+This reverts commit 938382b60ae5bd1f83b5cb09e1ce68b9a88f679a.
+
+Turns out, the commit did more harm than good. It changed
+semantics on some public APIs. For instance, while
+qemuDomainGetInfo() previously did not returned an error it does
+now. While the calls to virProcessGetStatInfo() is guarded with
+virDomainObjIsActive() it doesn't necessarily mean that QEMU's
+PID is still alive. QEMU might be gone but we just haven't
+realized it (e.g. because the eof handler thread is waiting for a
+job).
+
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2041610
+Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
+Reviewed-by: Andrea Bolognani <abologna@redhat.com>
+(cherry picked from commit 105dace22cc7b5b18d72a4dcad4a2cf386ce5c99)
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2043579
+Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
+---
+ src/ch/ch_driver.c     | 2 ++
+ src/qemu/qemu_driver.c | 7 ++++++-
+ src/util/virprocess.c  | 8 ++------
+ 3 files changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c
+index 3cbc668489..53e0872207 100644
+--- a/src/ch/ch_driver.c
++++ b/src/ch/ch_driver.c
+@@ -1073,6 +1073,8 @@ chDomainHelperGetVcpus(virDomainObj *vm,
+             if (virProcessGetStatInfo(&vcpuinfo->cpuTime,
+                                       &vcpuinfo->cpu, NULL,
+                                       vm->pid, vcpupid) < 0) {
++                virReportSystemError(errno, "%s",
++                                      _("cannot get vCPU placement & pCPU time"));
+                 return -1;
+             }
+         }
+diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
+index 65ac5ef367..d3d76c003f 100644
+--- a/src/qemu/qemu_driver.c
++++ b/src/qemu/qemu_driver.c
+@@ -1359,6 +1359,8 @@ qemuDomainHelperGetVcpus(virDomainObj *vm,
+             if (virProcessGetStatInfo(&vcpuinfo->cpuTime,
+                                       &vcpuinfo->cpu, NULL,
+                                       vm->pid, vcpupid) < 0) {
++                virReportSystemError(errno, "%s",
++                                     _("cannot get vCPU placement & pCPU time"));
+                 return -1;
+             }
+         }
+@@ -2519,6 +2521,8 @@ qemuDomainGetInfo(virDomainPtr dom,
+     if (virDomainObjIsActive(vm)) {
+         if (virProcessGetStatInfo(&(info->cpuTime), NULL, NULL,
+                                   vm->pid, 0) < 0) {
++            virReportError(VIR_ERR_OPERATION_FAILED, "%s",
++                           _("cannot read cputime for domain"));
+             goto cleanup;
+         }
+     }
+@@ -10526,7 +10530,8 @@ qemuDomainMemoryStatsInternal(virQEMUDriver *driver,
+     }
+ 
+     if (virProcessGetStatInfo(NULL, NULL, &rss, vm->pid, 0) < 0) {
+-        virResetLastError();
++        virReportError(VIR_ERR_OPERATION_FAILED, "%s",
++                       _("cannot get RSS for domain"));
+     } else {
+         stats[ret].tag = VIR_DOMAIN_MEMORY_STAT_RSS;
+         stats[ret].val = rss;
+diff --git a/src/util/virprocess.c b/src/util/virprocess.c
+index 85d8c8e747..b559a4257e 100644
+--- a/src/util/virprocess.c
++++ b/src/util/virprocess.c
+@@ -1784,10 +1784,7 @@ virProcessGetStatInfo(unsigned long long *cpuTime,
+         virStrToLong_ullp(proc_stat[VIR_PROCESS_STAT_STIME], NULL, 10, &systime) < 0 ||
+         virStrToLong_l(proc_stat[VIR_PROCESS_STAT_RSS], NULL, 10, &rss) < 0 ||
+         virStrToLong_i(proc_stat[VIR_PROCESS_STAT_PROCESSOR], NULL, 10, &cpu) < 0) {
+-        virReportError(VIR_ERR_INTERNAL_ERROR,
+-                       _("cannot parse process status data for pid '%d/%d'"),
+-                       (int) pid, (int) tid);
+-        return -1;
++        VIR_WARN("cannot parse process status data");
+     }
+ 
+     /* We got jiffies
+@@ -1884,8 +1881,7 @@ virProcessGetStatInfo(unsigned long long *cpuTime G_GNUC_UNUSED,
+                       pid_t pid G_GNUC_UNUSED,
+                       pid_t tid G_GNUC_UNUSED)
+ {
+-    virReportSystemError(ENOSYS, "%s",
+-                         _("Process statistics data is not supported on this platform"));
++    errno = ENOSYS;
+     return -1;
+ }
+ 
+-- 
+2.35.0
+
diff --git a/SOURCES/libvirt-build-Only-install-libvirt-guests-when-building-libvirtd.patch b/SOURCES/libvirt-build-Only-install-libvirt-guests-when-building-libvirtd.patch
new file mode 100644
index 0000000..a2ecb09
--- /dev/null
+++ b/SOURCES/libvirt-build-Only-install-libvirt-guests-when-building-libvirtd.patch
@@ -0,0 +1,75 @@
+From f45c99be9258f2d97c1f19b93ae8f5e73f4cb486 Mon Sep 17 00:00:00 2001
+Message-Id: <f45c99be9258f2d97c1f19b93ae8f5e73f4cb486@dist-git>
+From: Jim Fehlig <jfehlig@suse.com>
+Date: Mon, 10 Jan 2022 11:42:58 -0700
+Subject: [PATCH] build: Only install libvirt-guests when building libvirtd
+
+libvirt-guests was already moved to the libvirt daemon package in commit
+d800c50349. It only needs to be installed when building libvirtd.
+
+Signed-off-by: Jim Fehlig <jfehlig@suse.com>
+Reviewed-by: Andrea Bolognani <abologna@redhat.com>
+(cherry picked from commit 3be5ba11a2c6fcb2dfdffa03ab4f847113f36b85)
+
+https://bugzilla.redhat.com/show_bug.cgi?id=2042529
+---
+ tools/meson.build | 38 ++++++++++++++++++++------------------
+ 1 file changed, 20 insertions(+), 18 deletions(-)
+
+diff --git a/tools/meson.build b/tools/meson.build
+index 22fa3604ba..2d0aecb90b 100644
+--- a/tools/meson.build
++++ b/tools/meson.build
+@@ -297,29 +297,31 @@ if conf.has('WITH_SANLOCK')
+   )
+ endif
+ 
+-configure_file(
+-  input: 'libvirt-guests.sh.in',
+-  output: '@BASENAME@',
+-  configuration: tools_conf,
+-  install: true,
+-  install_dir: libexecdir,
+-  install_mode: 'rwxrwxr-x',
+-)
+-
+-if init_script == 'systemd'
+-  install_data(
+-    'libvirt-guests.sysconf',
+-    install_dir: sysconfdir / 'sysconfig',
+-    rename: 'libvirt-guests',
+-  )
+-
++if conf.has('WITH_LIBVIRTD')
+   configure_file(
+-    input: 'libvirt-guests.service.in',
++    input: 'libvirt-guests.sh.in',
+     output: '@BASENAME@',
+     configuration: tools_conf,
+     install: true,
+-    install_dir: prefix / 'lib' / 'systemd' / 'system',
++    install_dir: libexecdir,
++    install_mode: 'rwxrwxr-x',
+   )
++
++  if init_script == 'systemd'
++    install_data(
++      'libvirt-guests.sysconf',
++      install_dir: sysconfdir / 'sysconfig',
++      rename: 'libvirt-guests',
++    )
++
++    configure_file(
++      input: 'libvirt-guests.service.in',
++      output: '@BASENAME@',
++      configuration: tools_conf,
++      install: true,
++      install_dir: prefix / 'lib' / 'systemd' / 'system',
++    )
++  endif
+ endif
+ 
+ if bash_completion_dep.found()
+-- 
+2.35.0
+
diff --git a/SOURCES/libvirt-docs-Add-man-page-for-libvirt-guests.patch b/SOURCES/libvirt-docs-Add-man-page-for-libvirt-guests.patch
new file mode 100644
index 0000000..de5f819
--- /dev/null
+++ b/SOURCES/libvirt-docs-Add-man-page-for-libvirt-guests.patch
@@ -0,0 +1,217 @@
+From 8363046dd5f3e018aaea7b6d9b711fb3d1e417cc Mon Sep 17 00:00:00 2001
+Message-Id: <8363046dd5f3e018aaea7b6d9b711fb3d1e417cc@dist-git>
+From: Jim Fehlig <jfehlig@suse.com>
+Date: Fri, 7 Jan 2022 14:35:10 -0700
+Subject: [PATCH] docs: Add man page for libvirt-guests
+
+Signed-off-by: Jim Fehlig <jfehlig@suse.com>
+Reviewed-by: Andrea Bolognani <abologna@redhat.com>
+(cherry picked from commit 161727417a91bdddf8f3167cf70c3de2829be81c)
+
+https://bugzilla.redhat.com/show_bug.cgi?id=2042529
+---
+ docs/manpages/index.rst          |   1 +
+ docs/manpages/libvirt-guests.rst | 151 +++++++++++++++++++++++++++++++
+ docs/manpages/meson.build        |   1 +
+ libvirt.spec.in                  |   1 +
+ tools/libvirt-guests.service.in  |   2 +-
+ 5 files changed, 155 insertions(+), 1 deletion(-)
+ create mode 100644 docs/manpages/libvirt-guests.rst
+
+diff --git a/docs/manpages/index.rst b/docs/manpages/index.rst
+index fb4a36d46a..8fd0d90041 100644
+--- a/docs/manpages/index.rst
++++ b/docs/manpages/index.rst
+@@ -41,6 +41,7 @@ Tools
+ * `virt-admin(1) <virt-admin.html>`__ - daemon administration interface
+ * `virsh(1) <virsh.html>`__ - management user interface
+ * `virt-qemu-run(1) <virt-qemu-run.html>`__ - run standalone QEMU instances
++* `libvirt-guests(8) <libvirt-guests.html>`__ - suspend/resume running libvirt guests
+ 
+ Key codes
+ =========
+diff --git a/docs/manpages/libvirt-guests.rst b/docs/manpages/libvirt-guests.rst
+new file mode 100644
+index 0000000000..76045ed11a
+--- /dev/null
++++ b/docs/manpages/libvirt-guests.rst
+@@ -0,0 +1,151 @@
++==============
++libvirt-guests
++==============
++
++-------------------------------------
++suspend/resume running libvirt guests
++-------------------------------------
++
++:Manual section: 8
++:Manual group: Virtualization Support
++
++.. contents::
++
++SYNOPSIS
++========
++
++``libvirt-guests`` *COMMAND*
++
++
++DESCRIPTION
++===========
++
++``libvirt-guests`` is a service that can be used to coordinate guest and host
++lifecyle actions. By default, ``libvirt-guests`` will suspend running guests
++when the host shuts down, and restore them to their pre-shutdown state when
++the host reboots.
++
++``libvirt-guests`` is typically under control of systemd. When
++``libvirt-guests.service`` is enabled, systemd will call ``libvirt-guests``
++with the ``start`` *COMMAND* when the host boots. Conversely, systemd will call
++``libvirt-guests`` with the ``stop`` *COMMAND* when the host shuts down.
++
++``libvirt-guests`` can be used directly. In addition to the ``start`` and
++``stop`` *COMMAND*\s, it also supports ``status``, ``restart``, ``condrestart``,
++``try-restart``, ``reload``, ``force-reload``, ``gueststatus``, and
++``shutdown`` *COMMAND*\s.
++
++
++FILES
++=====
++
++``libvirt-guests`` defines several variables to control service behavior.
++The default vaule of these variables can be overridden in:
++
++* ``@SYSCONFDIR@/sysconfig/libvirt-guests``
++
++The following variables are supported:
++
++- URIS=default
++
++  URIs to check for running guests. Example:
++  ``URIS='default xen:///system xen+tcp://host/system lxc:///system'``
++
++- ON_BOOT=start
++
++  Action taken on host boot
++
++  * start
++
++    All guests which were running on shutdown are started on boot regardless
++    of their autostart settings
++
++  * ignore
++
++    ``libvirt-guests`` won't start any guest on boot, however, guests marked
++    as autostart will still be automatically started by libvirtd
++
++- START_DELAY=0
++
++  Number of seconds to wait between each guest start. Set to 0 to allow parallel
++  startup.
++
++- ON_SHUTDOWN=suspend
++
++  Action taken on host shutdown
++
++  * suspend
++
++    All running guests are suspended using virsh managedsave
++
++  * shutdown
++
++    All running guests are asked to shutdown. Please be careful with this
++    settings since there is no way to distinguish between a guest which is
++    stuck or ignores shutdown requests and a guest which just needs a long
++    time to shutdown. When setting ON_SHUTDOWN=shutdown, you must also set
++    SHUTDOWN_TIMEOUT to a value suitable for your guests.
++
++- PARALLEL_SHUTDOWN=0
++
++  Number of guests will be shutdown concurrently, taking effect when
++  "ON_SHUTDOWN" is set to "shutdown". If Set to 0, guests will be shutdown one
++  after another. Number of guests on shutdown at any time will not exceed number
++  set in this variable.
++
++- SHUTDOWN_TIMEOUT=300
++
++  Number of seconds we're willing to wait for a guest to shut down. If parallel
++  shutdown is enabled, this timeout applies as a timeout for shutting down all
++  guests on a single URI defined in the variable URIS. If this is 0, then there
++  is no time out (use with caution, as guests might not respond to a shutdown
++  request). The default value is 300 seconds (5 minutes).
++
++- BYPASS_CACHE=0
++
++  If non-zero, try to bypass the file system cache when saving and
++  restoring guests, even though this may give slower operation for
++  some file systems.
++
++- SYNC_TIME=0
++
++  If non-zero, try to sync guest time on domain resume. Be aware, that
++  this requires guest agent with support for time synchronization
++  running in the guest. By default, this functionality is turned off.
++
++
++BUGS
++====
++
++Please report all bugs you discover.  This should be done via either:
++
++#. the mailing list
++
++   `https://libvirt.org/contact.html <https://libvirt.org/contact.html>`_
++
++#. the bug tracker
++
++   `https://libvirt.org/bugs.html <https://libvirt.org/bugs.html>`_
++
++Alternatively, you may report bugs to your software distributor / vendor.
++
++
++AUTHORS
++=======
++
++Please refer to the AUTHORS file distributed with libvirt.
++
++
++LICENSE
++=======
++
++``libvirt-guests`` is distributed under the terms of the GNU LGPL v2.1+.
++This is free software; see the source for copying conditions. There
++is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
++PURPOSE
++
++
++SEE ALSO
++========
++
++libvirtd(8), `https://libvirt.org/ <https://libvirt.org/>`_
+diff --git a/docs/manpages/meson.build b/docs/manpages/meson.build
+index 150f45d296..bad9b62a2e 100644
+--- a/docs/manpages/meson.build
++++ b/docs/manpages/meson.build
+@@ -21,6 +21,7 @@ docs_man_files = [
+   { 'name': 'virt-qemu-run', 'section': '1', 'install': conf.has('WITH_QEMU') },
+   { 'name': 'virt-xml-validate', 'section': '1', 'install': true },
+ 
++  { 'name': 'libvirt-guests', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
+   { 'name': 'libvirtd', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
+   { 'name': 'virt-sanlock-cleanup', 'section': '8', 'install': conf.has('WITH_SANLOCK') },
+   { 'name': 'virt-ssh-helper', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
+diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in
+index 10c664016a..1a9b233e11 100644
+--- a/tools/libvirt-guests.service.in
++++ b/tools/libvirt-guests.service.in
+@@ -6,7 +6,7 @@ After=network.target
+ After=time-sync.target
+ After=libvirtd.service
+ After=virt-guest-shutdown.target
+-Documentation=man:libvirtd(8)
++Documentation=man:libvirt-guests(8)
+ Documentation=https://libvirt.org
+ 
+ [Service]
+-- 
+2.35.0
+
diff --git a/SOURCES/libvirt-nwfilter-hold-filter-update-lock-when-creating-deleting-bindings.patch b/SOURCES/libvirt-nwfilter-hold-filter-update-lock-when-creating-deleting-bindings.patch
new file mode 100644
index 0000000..d9f6fab
--- /dev/null
+++ b/SOURCES/libvirt-nwfilter-hold-filter-update-lock-when-creating-deleting-bindings.patch
@@ -0,0 +1,77 @@
+From bbab997f4307da65856dedd3f319037ce442d17e Mon Sep 17 00:00:00 2001
+Message-Id: <bbab997f4307da65856dedd3f319037ce442d17e@dist-git>
+From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
+Date: Thu, 24 Feb 2022 18:41:29 +0000
+Subject: [PATCH] nwfilter: hold filter update lock when creating/deleting
+ bindings
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The nwfilter update lock is historically acquired by the virt
+drivers in order to achieve serialization between nwfilter
+define/undefine, and instantiation/teardown of filters.
+
+When running in the modular daemons, however, the mutex that
+the virt drivers are locking is in a completely different
+process from the mutex that the nwfilter driver is locking.
+
+Serialization is lost and thus call from the virt driver to
+virNWFilterBindingCreateXML can deadlock with a concurrent
+call to the virNWFilterDefineXML method.
+
+The solution is surprisingly easy, the update lock simply
+needs acquiring in the virNWFilterBindingCreateXML method
+and virNWFilterBindingUndefine method instead of in the
+virt drivers.
+
+The only semantic difference here is that when a virtual
+machine has multiple NICs, the instantiation and teardown
+of filters is no longer serialized for the whole VM, but
+rather for each NIC. This should not be a problem since
+the virt drivers already need to cope with tearing down
+a partially created VM where only some of the NICs are
+setup.
+
+Reviewed-by: Laine Stump <laine@redhat.com>
+Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
+(cherry picked from commit 65dc79f50b96b34b2253601b8972d5ca90658f33)
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2044379
+Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
+---
+ src/nwfilter/nwfilter_driver.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
+index 200451d6b1..a4479fc9fe 100644
+--- a/src/nwfilter/nwfilter_driver.c
++++ b/src/nwfilter/nwfilter_driver.c
+@@ -760,12 +760,15 @@ nwfilterBindingCreateXML(virConnectPtr conn,
+     if (!(ret = virGetNWFilterBinding(conn, def->portdevname, def->filter)))
+         goto cleanup;
+ 
++    virNWFilterReadLockFilterUpdates();
+     if (virNWFilterInstantiateFilter(driver, def) < 0) {
++        virNWFilterUnlockFilterUpdates();
+         virNWFilterBindingObjListRemove(driver->bindings, obj);
+         virObjectUnref(ret);
+         ret = NULL;
+         goto cleanup;
+     }
++    virNWFilterUnlockFilterUpdates();
+     virNWFilterBindingObjSave(obj, driver->bindingDir);
+ 
+  cleanup:
+@@ -802,7 +805,9 @@ nwfilterBindingDelete(virNWFilterBindingPtr binding)
+     if (virNWFilterBindingDeleteEnsureACL(binding->conn, def) < 0)
+         goto cleanup;
+ 
++    virNWFilterReadLockFilterUpdates();
+     virNWFilterTeardownFilter(def);
++    virNWFilterUnlockFilterUpdates();
+     virNWFilterBindingObjDelete(obj, driver->bindingDir);
+     virNWFilterBindingObjListRemove(driver->bindings, obj);
+ 
+-- 
+2.35.1
+
diff --git a/SOURCES/libvirt-qemu-Validate-domain-definition-even-on-migration.patch b/SOURCES/libvirt-qemu-Validate-domain-definition-even-on-migration.patch
new file mode 100644
index 0000000..a20b9bc
--- /dev/null
+++ b/SOURCES/libvirt-qemu-Validate-domain-definition-even-on-migration.patch
@@ -0,0 +1,71 @@
+From 84cedeca547585a51f6044186d241a501ff757d2 Mon Sep 17 00:00:00 2001
+Message-Id: <84cedeca547585a51f6044186d241a501ff757d2@dist-git>
+From: Michal Privoznik <mprivozn@redhat.com>
+Date: Mon, 31 Jan 2022 12:55:47 +0100
+Subject: [PATCH] qemu: Validate domain definition even on migration
+
+When we are about to spawn QEMU, we validate the domain
+definition against qemuCaps. Except when domain is/was already
+running before (i.e. on incoming migration, snapshots, resume
+from a file). However, especially on incoming migration it may
+happen that the destination QEMU is different to the source
+QEMU, e.g. the destination QEMU may have some devices disabled.
+
+And we have a function that validates devices/features requested
+in domain XML against the desired QEMU capabilities (aka
+qemuCaps) - it's virDomainDefValidate() which calls
+qemuValidateDomainDef() and qemuValidateDomainDeviceDef()
+subsequently.
+
+But the problem here is that the validation function is
+explicitly skipped over in specific scenarios (like incoming
+migration, restore from a snapshot or previously saved file).
+
+This in turn means that we may spawn QEMU and request
+device/features it doesn't support. When that happens QEMU fails
+to load migration stream:
+
+  qemu-kvm: ... 'virtio-mem-pci' is not a valid device model name
+
+(NB, while the example shows one particular device, the problem
+is paramount)
+
+This problem is easier to run into since we are slowly moving
+validation from qemu_command.c into said validation functions.
+
+The solution is simple: do the validation in all cases. And while
+it may happen that users would be unable to migrate/restore a
+guest due to a bug in our validator, spawning QEMU without
+validation is worse (especially when you consider that users can
+supply their own XMLs for migrate/restore operations - these were
+never validated).
+
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2048435
+Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
+Reviewed-by: Peter Krempa <pkrempa@redhat.com>
+(cherry picked from commit 517b8c12b98d7ac0bb4d582e0b491d50d776eb6d)
+Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
+---
+ src/qemu/qemu_process.c | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
+index 5c9ca0fe4f..5c6657a876 100644
+--- a/src/qemu/qemu_process.c
++++ b/src/qemu/qemu_process.c
+@@ -5411,11 +5411,7 @@ qemuProcessStartValidate(virQEMUDriver *driver,
+ 
+     }
+ 
+-    /* Checks below should not be executed when starting a qemu process for a
+-     * VM that was running before (migration, snapshots, save). It's more
+-     * important to start such VM than keep the configuration clean */
+-    if ((flags & VIR_QEMU_PROCESS_START_NEW) &&
+-        virDomainDefValidate(vm->def, 0, driver->xmlopt, qemuCaps) < 0)
++    if (virDomainDefValidate(vm->def, 0, driver->xmlopt, qemuCaps) < 0)
+         return -1;
+ 
+     if (qemuProcessStartValidateGraphics(vm) < 0)
+-- 
+2.35.1
+
diff --git a/SOURCES/libvirt-qemu-fix-hotplug-for-multiqueue-vdpa-net-device.patch b/SOURCES/libvirt-qemu-fix-hotplug-for-multiqueue-vdpa-net-device.patch
new file mode 100644
index 0000000..50000ad
--- /dev/null
+++ b/SOURCES/libvirt-qemu-fix-hotplug-for-multiqueue-vdpa-net-device.patch
@@ -0,0 +1,90 @@
+From 68b294cf8e9c5e0f0f14b14e63178b2bf7a9f7e2 Mon Sep 17 00:00:00 2001
+Message-Id: <68b294cf8e9c5e0f0f14b14e63178b2bf7a9f7e2@dist-git>
+From: Jonathon Jongsma <jjongsma@redhat.com>
+Date: Tue, 29 Mar 2022 14:24:36 -0500
+Subject: [PATCH] qemu: fix hotplug for multiqueue vdpa net device
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+While commit a5e659f0 removed the restriction against multiple queues
+for the vdpa net device, there were some missing pieces. Configuring a
+device statically and then starting the domain worked as expected, but
+hotplugging a device didn't have the expected multiqueue support
+enabled. Add the missing bits.
+
+Consider the following device xml:
+    <interface type="vdpa">
+      <mac address="00:11:22:33:44:03" />
+      <source dev="/dev/vhost-vdpa-0" />
+      <model type="virtio" />
+      <driver queues='2' />
+    </interface>
+
+Without this patch, hotplugging the above XML description resulted in
+the following:
+    {"execute":"netdev_add","arguments":{"type":"vhost-vdpa","vhostdev":"/dev/fdset/0","id":"hostnet1"},"id":"libvirt-392"}
+    {"execute":"device_add","arguments":{"driver":"virtio-net-pci","netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:03","bus":"pci.5","addr":"0x0"},"id":"libvirt-393"}
+
+With the patch, hotplugging results in the following:
+    {"execute":"netdev_add","arguments":{"type":"vhost-vdpa","vhostdev":"/dev/fdset/0","queues":2,"id":"hostnet1"},"id":"libvirt-392"}
+    {"execute":"device_add","arguments":{"driver":"virtio-net-pci","mq":true,"vectors":6,"netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:03","bus":"pci.5","addr":"0x0"},"id":"libvirt-393"}
+
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2024406
+
+Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
+Reviewed-by: Ján Tomko <jtomko@redhat.com>
+
+(cherry picked from commit 3832db21084661d00438dfbb4bad865816157dd9)
+Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
+---
+ src/qemu/qemu_command.c                                       | 4 ++++
+ src/qemu/qemu_hotplug.c                                       | 3 +++
+ tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args | 2 +-
+ 3 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
+index 509bab08ef..ee0e611513 100644
+--- a/src/qemu/qemu_command.c
++++ b/src/qemu/qemu_command.c
+@@ -4349,6 +4349,10 @@ qemuBuildHostNetProps(virDomainNetDef *net,
+         if (virJSONValueObjectAdd(&netprops, "s:type", "vhost-vdpa", NULL) < 0 ||
+             virJSONValueObjectAppendString(netprops, "vhostdev", vdpadev) < 0)
+             return NULL;
++
++        if (net->driver.virtio.queues > 1 &&
++            virJSONValueObjectAppendNumberUlong(netprops, "queues", net->driver.virtio.queues) < 0)
++            return NULL;
+         break;
+ 
+     case VIR_DOMAIN_NET_TYPE_HOSTDEV:
+diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
+index 04c6600f26..c10493e212 100644
+--- a/src/qemu/qemu_hotplug.c
++++ b/src/qemu/qemu_hotplug.c
+@@ -1364,6 +1364,9 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
+         break;
+ 
+     case VIR_DOMAIN_NET_TYPE_VDPA:
++        queueSize = net->driver.virtio.queues;
++        if (!queueSize)
++            queueSize = 1;
+         if (qemuDomainAdjustMaxMemLock(vm, false) < 0)
+             goto cleanup;
+         adjustmemlock = true;
+diff --git a/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
+index 61ba85a847..3e45ab6870 100644
+--- a/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
+@@ -29,7 +29,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
+ -add-fd set=0,fd=1732,opaque=/dev/vhost-vdpa-0 \
+--netdev vhost-vdpa,vhostdev=/dev/fdset/0,id=hostnet0 \
++-netdev vhost-vdpa,vhostdev=/dev/fdset/0,queues=2,id=hostnet0 \
+ -device virtio-net-pci,mq=on,vectors=6,netdev=hostnet0,id=net0,mac=52:54:00:95:db:c0,bus=pci.0,addr=0x2 \
+ -audiodev '{"id":"audio1","driver":"none"}' \
+ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-- 
+2.35.1
+
diff --git a/SOURCES/libvirt-qemu-fix-inactive-snapshot-revert.patch b/SOURCES/libvirt-qemu-fix-inactive-snapshot-revert.patch
new file mode 100644
index 0000000..ae4c4cf
--- /dev/null
+++ b/SOURCES/libvirt-qemu-fix-inactive-snapshot-revert.patch
@@ -0,0 +1,41 @@
+From 1911ebd62779701aae271dd3e047415bfd2cd303 Mon Sep 17 00:00:00 2001
+Message-Id: <1911ebd62779701aae271dd3e047415bfd2cd303@dist-git>
+From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
+Date: Thu, 20 Jan 2022 14:53:33 +0100
+Subject: [PATCH] qemu: fix inactive snapshot revert
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The commit splitting out the qemuSnapshotRevertInactive function
+dropped the 'defined = true' line by accident and instead
+returned -1, leaving the user with a cryptic error:
+error: An error occurred, but the cause is unknown
+
+https://bugzilla.redhat.com/show_bug.cgi?id=2039136
+https://gitlab.com/libvirt/libvirt/-/issues/266
+
+Fixes: 85e4a13c3f19078fb6af5ffb4a80022c142cbc7e
+Signed-off-by: Ján Tomko <jtomko@redhat.com>
+(cherry picked from commit 76deb656132bb8817ddae4b7f417930c4db824c9)
+Signed-off-by: Ján Tomko <jtomko@redhat.com>
+---
+ src/qemu/qemu_snapshot.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
+index f92e00f9c0..ac7bab90f8 100644
+--- a/src/qemu/qemu_snapshot.c
++++ b/src/qemu/qemu_snapshot.c
+@@ -2193,7 +2193,7 @@ qemuSnapshotRevertInactive(virDomainObj *vm,
+ 
+     if (*inactiveConfig) {
+         virDomainObjAssignDef(vm, inactiveConfig, false, NULL);
+-        return -1;
++        defined = true;
+     }
+ 
+     if (flags & (VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING |
+-- 
+2.35.0
+
diff --git a/SOURCES/libvirt-qemu-lxc-remove-use-to-nwfilter-update-lock.patch b/SOURCES/libvirt-qemu-lxc-remove-use-to-nwfilter-update-lock.patch
new file mode 100644
index 0000000..6699b1c
--- /dev/null
+++ b/SOURCES/libvirt-qemu-lxc-remove-use-to-nwfilter-update-lock.patch
@@ -0,0 +1,222 @@
+From 7bcd75ca73d8eda05fafa8342309a8fd058cd326 Mon Sep 17 00:00:00 2001
+Message-Id: <7bcd75ca73d8eda05fafa8342309a8fd058cd326@dist-git>
+From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
+Date: Thu, 24 Feb 2022 19:02:32 +0000
+Subject: [PATCH] qemu,lxc: remove use to nwfilter update lock
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Now that the virNWFilterBinding APIs are using the nwfilter
+update lock directly, there is no need for the virt drivers
+to do it themselves.
+
+Reviewed-by: Laine Stump <laine@redhat.com>
+Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
+(cherry picked from commit 5f8b090f421cd6a6c46f44905431491e2d3cf8f5)
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2044379
+Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
+---
+ src/lxc/lxc_driver.c      |  6 ------
+ src/qemu/qemu_driver.c    | 18 ------------------
+ src/qemu/qemu_migration.c |  3 ---
+ src/qemu/qemu_process.c   |  4 ----
+ 4 files changed, 31 deletions(-)
+
+diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
+index 7bc39120ee..e581c62668 100644
+--- a/src/lxc/lxc_driver.c
++++ b/src/lxc/lxc_driver.c
+@@ -971,8 +971,6 @@ static int lxcDomainCreateWithFiles(virDomainPtr dom,
+ 
+     virCheckFlags(VIR_DOMAIN_START_AUTODESTROY, -1);
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     if (!(vm = lxcDomObjFromDomain(dom)))
+         goto cleanup;
+ 
+@@ -1014,7 +1012,6 @@ static int lxcDomainCreateWithFiles(virDomainPtr dom,
+  cleanup:
+     virDomainObjEndAPI(&vm);
+     virObjectEventStateQueue(driver->domainEventState, event);
+-    virNWFilterUnlockFilterUpdates();
+     return ret;
+ }
+ 
+@@ -1080,8 +1077,6 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn,
+     if (flags & VIR_DOMAIN_START_VALIDATE)
+         parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA;
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     if (!(caps = virLXCDriverGetCapabilities(driver, false)))
+         goto cleanup;
+ 
+@@ -1138,7 +1133,6 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn,
+  cleanup:
+     virDomainObjEndAPI(&vm);
+     virObjectEventStateQueue(driver->domainEventState, event);
+-    virNWFilterUnlockFilterUpdates();
+     return dom;
+ }
+ 
+diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
+index d3d76c003f..00a86b6c7c 100644
+--- a/src/qemu/qemu_driver.c
++++ b/src/qemu/qemu_driver.c
+@@ -1603,8 +1603,6 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn,
+     if (flags & VIR_DOMAIN_START_AUTODESTROY)
+         start_flags |= VIR_QEMU_PROCESS_START_AUTODESTROY;
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     if (!(def = virDomainDefParseString(xml, driver->xmlopt,
+                                         NULL, parse_flags)))
+         goto cleanup;
+@@ -1658,7 +1656,6 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn,
+     virDomainObjEndAPI(&vm);
+     virObjectEventStateQueue(driver->domainEventState, event);
+     virObjectEventStateQueue(driver->domainEventState, event2);
+-    virNWFilterUnlockFilterUpdates();
+     return dom;
+ }
+ 
+@@ -5773,8 +5770,6 @@ qemuDomainRestoreFlags(virConnectPtr conn,
+                   VIR_DOMAIN_SAVE_PAUSED, -1);
+ 
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     fd = qemuSaveImageOpen(driver, NULL, path, &def, &data,
+                            (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) != 0,
+                            &wrapperFd, false, false);
+@@ -5846,7 +5841,6 @@ qemuDomainRestoreFlags(virConnectPtr conn,
+     if (vm && ret < 0)
+         qemuDomainRemoveInactiveJob(driver, vm);
+     virDomainObjEndAPI(&vm);
+-    virNWFilterUnlockFilterUpdates();
+     return ret;
+ }
+ 
+@@ -6395,8 +6389,6 @@ qemuDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
+                   VIR_DOMAIN_START_BYPASS_CACHE |
+                   VIR_DOMAIN_START_FORCE_BOOT, -1);
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     if (!(vm = qemuDomainObjFromDomain(dom)))
+         goto cleanup;
+ 
+@@ -6425,7 +6417,6 @@ qemuDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
+ 
+  cleanup:
+     virDomainObjEndAPI(&vm);
+-    virNWFilterUnlockFilterUpdates();
+     return ret;
+ }
+ 
+@@ -7811,8 +7802,6 @@ qemuDomainAttachDeviceFlags(virDomainPtr dom,
+     virDomainObj *vm = NULL;
+     int ret = -1;
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     if (!(vm = qemuDomainObjFromDomain(dom)))
+         goto cleanup;
+ 
+@@ -7835,7 +7824,6 @@ qemuDomainAttachDeviceFlags(virDomainPtr dom,
+ 
+  cleanup:
+     virDomainObjEndAPI(&vm);
+-    virNWFilterUnlockFilterUpdates();
+     return ret;
+ }
+ 
+@@ -7865,8 +7853,6 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
+                   VIR_DOMAIN_AFFECT_CONFIG |
+                   VIR_DOMAIN_DEVICE_MODIFY_FORCE, -1);
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     cfg = virQEMUDriverGetConfig(driver);
+ 
+     if (!(vm = qemuDomainObjFromDomain(dom)))
+@@ -7943,7 +7929,6 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
+     if (dev != dev_copy)
+         virDomainDeviceDefFree(dev_copy);
+     virDomainObjEndAPI(&vm);
+-    virNWFilterUnlockFilterUpdates();
+     return ret;
+ }
+ 
+@@ -13644,8 +13629,6 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
+     virDomainObj *vm = NULL;
+     int ret = -1;
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     if (!(vm = qemuDomObjFromSnapshot(snapshot)))
+         goto cleanup;
+ 
+@@ -13656,7 +13639,6 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
+ 
+  cleanup:
+     virDomainObjEndAPI(&vm);
+-    virNWFilterUnlockFilterUpdates();
+     return ret;
+ }
+ 
+diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
+index 2635ef1162..358cb9c3b5 100644
+--- a/src/qemu/qemu_migration.c
++++ b/src/qemu/qemu_migration.c
+@@ -2779,8 +2779,6 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver,
+     int rv;
+     g_autofree char *tlsAlias = NULL;
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     if (flags & VIR_MIGRATE_OFFLINE) {
+         if (flags & (VIR_MIGRATE_NON_SHARED_DISK |
+                      VIR_MIGRATE_NON_SHARED_INC)) {
+@@ -3101,7 +3099,6 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver,
+     virDomainObjEndAPI(&vm);
+     virObjectEventStateQueue(driver->domainEventState, event);
+     qemuMigrationCookieFree(mig);
+-    virNWFilterUnlockFilterUpdates();
+     virErrorRestore(&origErr);
+     return ret;
+ 
+diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
+index 5c6657a876..914f9bef8b 100644
+--- a/src/qemu/qemu_process.c
++++ b/src/qemu/qemu_process.c
+@@ -8986,7 +8986,6 @@ qemuProcessReconnect(void *opaque)
+             qemuDomainRemoveInactiveJob(driver, obj);
+     }
+     virDomainObjEndAPI(&obj);
+-    virNWFilterUnlockFilterUpdates();
+     virIdentitySetCurrent(NULL);
+     return;
+ 
+@@ -9038,8 +9037,6 @@ qemuProcessReconnectHelper(virDomainObj *obj,
+     data->obj = obj;
+     data->identity = virIdentityGetCurrent();
+ 
+-    virNWFilterReadLockFilterUpdates();
+-
+     /* this lock and reference will be eventually transferred to the thread
+      * that handles the reconnect */
+     virObjectLock(obj);
+@@ -9062,7 +9059,6 @@ qemuProcessReconnectHelper(virDomainObj *obj,
+         qemuDomainRemoveInactiveJobLocked(src->driver, obj);
+ 
+         virDomainObjEndAPI(&obj);
+-        virNWFilterUnlockFilterUpdates();
+         g_clear_object(&data->identity);
+         VIR_FREE(data);
+         return -1;
+-- 
+2.35.1
+
diff --git a/SOURCES/libvirt-qemu-support-firmware-descriptor-flash-mode-for-optional-NVRAM.patch b/SOURCES/libvirt-qemu-support-firmware-descriptor-flash-mode-for-optional-NVRAM.patch
new file mode 100644
index 0000000..822b859
--- /dev/null
+++ b/SOURCES/libvirt-qemu-support-firmware-descriptor-flash-mode-for-optional-NVRAM.patch
@@ -0,0 +1,471 @@
+From 3cde498c98be902fc8fe87c895dfeaaa95352b38 Mon Sep 17 00:00:00 2001
+Message-Id: <3cde498c98be902fc8fe87c895dfeaaa95352b38@dist-git>
+From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
+Date: Thu, 3 Feb 2022 13:43:18 +0000
+Subject: [PATCH] qemu: support firmware descriptor flash 'mode' for optional
+ NVRAM
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Currently the 'nvram_template' entry is mandatory when parsing the
+firmware descriptor based on flash. QEMU is extending the firmware
+descriptor spec to make the 'nvram_template' optional, depending
+on the value of a new 'mode' field:
+
+  - "split"
+      * "executable" contains read-only CODE
+      * "nvram_template" contains read-write VARS
+
+  - "combined"
+      * "executable" contains read-write CODE and VARs
+      * "nvram_template" not present
+
+  - "stateless"
+      * "executable" contains read-only CODE and VARs
+      * "nvram_template" not present
+
+In the latter case, the guest OS can write vars but the
+firmware will make no attempt to persist them, so any changes
+will be lost at poweroff.
+
+For now we parse this new 'mode' but discard any firmware
+which is not 'mode=split' when matching for a domain.
+
+In the tests we have a mixture of files with and without the
+mode attribute.
+
+Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
+Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
+(cherry picked from commit 32b9d8b0ae00669555f01f91ee11612a636c4b69)
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2057769
+---
+ src/qemu/qemu_firmware.c                      | 79 ++++++++++++++++---
+ .../share/qemu/firmware/50-ovmf-sb-keys.json  | 33 ++++++++
+ .../out/usr/share/qemu/firmware/61-ovmf.json  | 31 ++++++++
+ .../out/usr/share/qemu/firmware/70-aavmf.json | 28 +++++++
+ .../qemu/firmware/45-ovmf-sev-stateless.json  | 31 ++++++++
+ .../qemu/firmware/55-ovmf-sb-combined.json    | 33 ++++++++
+ .../usr/share/qemu/firmware/60-ovmf-sb.json   |  1 +
+ tests/qemufirmwaretest.c                      | 31 ++++++--
+ 8 files changed, 246 insertions(+), 21 deletions(-)
+ create mode 100644 tests/qemufirmwaredata/out/usr/share/qemu/firmware/50-ovmf-sb-keys.json
+ create mode 100644 tests/qemufirmwaredata/out/usr/share/qemu/firmware/61-ovmf.json
+ create mode 100644 tests/qemufirmwaredata/out/usr/share/qemu/firmware/70-aavmf.json
+ create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/45-ovmf-sev-stateless.json
+ create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/55-ovmf-sb-combined.json
+
+diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
+index 529ab8d68e..7911d45aa0 100644
+--- a/src/qemu/qemu_firmware.c
++++ b/src/qemu/qemu_firmware.c
+@@ -59,6 +59,22 @@ VIR_ENUM_IMPL(qemuFirmwareOSInterface,
+ );
+ 
+ 
++typedef enum {
++    QEMU_FIRMWARE_FLASH_MODE_SPLIT,
++    QEMU_FIRMWARE_FLASH_MODE_COMBINED,
++    QEMU_FIRMWARE_FLASH_MODE_STATELESS,
++
++    QEMU_FIRMWARE_FLASH_MODE_LAST,
++} qemuFirmwareFlashMode;
++
++VIR_ENUM_DECL(qemuFirmwareFlashMode);
++VIR_ENUM_IMPL(qemuFirmwareFlashMode,
++              QEMU_FIRMWARE_FLASH_MODE_LAST,
++              "split",
++              "combined",
++              "stateless",
++);
++
+ typedef struct _qemuFirmwareFlashFile qemuFirmwareFlashFile;
+ struct _qemuFirmwareFlashFile {
+     char *filename;
+@@ -68,6 +84,7 @@ struct _qemuFirmwareFlashFile {
+ 
+ typedef struct _qemuFirmwareMappingFlash qemuFirmwareMappingFlash;
+ struct _qemuFirmwareMappingFlash {
++    qemuFirmwareFlashMode mode;
+     qemuFirmwareFlashFile executable;
+     qemuFirmwareFlashFile nvram_template;
+ };
+@@ -359,9 +376,31 @@ qemuFirmwareMappingFlashParse(const char *path,
+                               virJSONValue *doc,
+                               qemuFirmwareMappingFlash *flash)
+ {
++    virJSONValue *mode;
+     virJSONValue *executable;
+     virJSONValue *nvram_template;
+ 
++    if (!(mode = virJSONValueObjectGet(doc, "mode"))) {
++        /* Historical default */
++        flash->mode = QEMU_FIRMWARE_FLASH_MODE_SPLIT;
++    } else {
++        const char *modestr = virJSONValueGetString(mode);
++        int modeval;
++        if (!modestr) {
++            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
++                           _("Firmware flash mode value was malformed"));
++            return -1;
++        }
++        modeval = qemuFirmwareFlashModeTypeFromString(modestr);
++        if (modeval < 0) {
++            virReportError(VIR_ERR_INTERNAL_ERROR,
++                           _("Firmware flash mode value '%s' unexpected"),
++                           modestr);
++            return -1;
++        }
++        flash->mode = modeval;
++    }
++
+     if (!(executable = virJSONValueObjectGet(doc, "executable"))) {
+         virReportError(VIR_ERR_INTERNAL_ERROR,
+                        _("missing 'executable' in '%s'"),
+@@ -372,15 +411,17 @@ qemuFirmwareMappingFlashParse(const char *path,
+     if (qemuFirmwareFlashFileParse(path, executable, &flash->executable) < 0)
+         return -1;
+ 
+-    if (!(nvram_template = virJSONValueObjectGet(doc, "nvram-template"))) {
+-        virReportError(VIR_ERR_INTERNAL_ERROR,
+-                       _("missing 'nvram-template' in '%s'"),
+-                       path);
+-        return -1;
+-    }
++    if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) {
++        if (!(nvram_template = virJSONValueObjectGet(doc, "nvram-template"))) {
++            virReportError(VIR_ERR_INTERNAL_ERROR,
++                           _("missing 'nvram-template' in '%s'"),
++                           path);
++            return -1;
++        }
+ 
+-    if (qemuFirmwareFlashFileParse(path, nvram_template, &flash->nvram_template) < 0)
+-        return -1;
++        if (qemuFirmwareFlashFileParse(path, nvram_template, &flash->nvram_template) < 0)
++            return -1;
++    }
+ 
+     return 0;
+ }
+@@ -693,10 +734,12 @@ qemuFirmwareMappingFlashFormat(virJSONValue *mapping,
+     g_autoptr(virJSONValue) executable = NULL;
+     g_autoptr(virJSONValue) nvram_template = NULL;
+ 
+-    if (!(executable = qemuFirmwareFlashFileFormat(flash->executable)))
++    if (virJSONValueObjectAppendString(mapping,
++                                       "mode",
++                                       qemuFirmwareFlashModeTypeToString(flash->mode)) < 0)
+         return -1;
+ 
+-    if (!(nvram_template = qemuFirmwareFlashFileFormat(flash->nvram_template)))
++    if (!(executable = qemuFirmwareFlashFileFormat(flash->executable)))
+         return -1;
+ 
+     if (virJSONValueObjectAppend(mapping,
+@@ -704,11 +747,15 @@ qemuFirmwareMappingFlashFormat(virJSONValue *mapping,
+                                  &executable) < 0)
+         return -1;
+ 
++    if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) {
++        if (!(nvram_template = qemuFirmwareFlashFileFormat(flash->nvram_template)))
++            return -1;
+ 
+-    if (virJSONValueObjectAppend(mapping,
++        if (virJSONValueObjectAppend(mapping,
+                                  "nvram-template",
+-                                 &nvram_template) < 0)
+-        return -1;
++                                     &nvram_template) < 0)
++            return -1;
++    }
+ 
+     return 0;
+ }
+@@ -1053,6 +1100,12 @@ qemuFirmwareMatchDomain(const virDomainDef *def,
+         return false;
+     }
+ 
++    if (fw->mapping.device == QEMU_FIRMWARE_DEVICE_FLASH &&
++        fw->mapping.data.flash.mode != QEMU_FIRMWARE_FLASH_MODE_SPLIT) {
++        VIR_DEBUG("Discarding loader without split flash");
++        return false;
++    }
++
+     if (def->sec) {
+         switch ((virDomainLaunchSecurity) def->sec->sectype) {
+         case VIR_DOMAIN_LAUNCH_SECURITY_SEV:
+diff --git a/tests/qemufirmwaredata/out/usr/share/qemu/firmware/50-ovmf-sb-keys.json b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/50-ovmf-sb-keys.json
+new file mode 100644
+index 0000000000..c251682cd9
+--- /dev/null
++++ b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/50-ovmf-sb-keys.json
+@@ -0,0 +1,33 @@
++{
++    "interface-types": [
++        "uefi"
++    ],
++    "mapping": {
++        "device": "flash",
++        "mode": "split",
++        "executable": {
++            "filename": "/usr/share/OVMF/OVMF_CODE.secboot.fd",
++            "format": "raw"
++        },
++        "nvram-template": {
++            "filename": "/usr/share/OVMF/OVMF_VARS.secboot.fd",
++            "format": "raw"
++        }
++    },
++    "targets": [
++        {
++            "architecture": "x86_64",
++            "machines": [
++                "pc-q35-*"
++            ]
++        }
++    ],
++    "features": [
++        "acpi-s3",
++        "amd-sev",
++        "enrolled-keys",
++        "requires-smm",
++        "secure-boot",
++        "verbose-dynamic"
++    ]
++}
+diff --git a/tests/qemufirmwaredata/out/usr/share/qemu/firmware/61-ovmf.json b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/61-ovmf.json
+new file mode 100644
+index 0000000000..2a9aa23efb
+--- /dev/null
++++ b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/61-ovmf.json
+@@ -0,0 +1,31 @@
++{
++    "interface-types": [
++        "uefi"
++    ],
++    "mapping": {
++        "device": "flash",
++        "mode": "split",
++        "executable": {
++            "filename": "/usr/share/OVMF/OVMF_CODE.fd",
++            "format": "raw"
++        },
++        "nvram-template": {
++            "filename": "/usr/share/OVMF/OVMF_VARS.fd",
++            "format": "raw"
++        }
++    },
++    "targets": [
++        {
++            "architecture": "x86_64",
++            "machines": [
++                "pc-i440fx-*",
++                "pc-q35-*"
++            ]
++        }
++    ],
++    "features": [
++        "acpi-s3",
++        "amd-sev",
++        "verbose-dynamic"
++    ]
++}
+diff --git a/tests/qemufirmwaredata/out/usr/share/qemu/firmware/70-aavmf.json b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/70-aavmf.json
+new file mode 100644
+index 0000000000..9bd5ac2868
+--- /dev/null
++++ b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/70-aavmf.json
+@@ -0,0 +1,28 @@
++{
++    "interface-types": [
++        "uefi"
++    ],
++    "mapping": {
++        "device": "flash",
++        "mode": "split",
++        "executable": {
++            "filename": "/usr/share/AAVMF/AAVMF_CODE.fd",
++            "format": "raw"
++        },
++        "nvram-template": {
++            "filename": "/usr/share/AAVMF/AAVMF_VARS.fd",
++            "format": "raw"
++        }
++    },
++    "targets": [
++        {
++            "architecture": "aarch64",
++            "machines": [
++                "virt-*"
++            ]
++        }
++    ],
++    "features": [
++
++    ]
++}
+diff --git a/tests/qemufirmwaredata/usr/share/qemu/firmware/45-ovmf-sev-stateless.json b/tests/qemufirmwaredata/usr/share/qemu/firmware/45-ovmf-sev-stateless.json
+new file mode 100644
+index 0000000000..5a619f3ab0
+--- /dev/null
++++ b/tests/qemufirmwaredata/usr/share/qemu/firmware/45-ovmf-sev-stateless.json
+@@ -0,0 +1,31 @@
++{
++    "description": "OVMF for x86_64, with SEV, without SB, without SMM, with NO varstore",
++    "interface-types": [
++        "uefi"
++    ],
++    "mapping": {
++        "device": "flash",
++        "mode": "stateless",
++        "executable": {
++            "filename": "/usr/share/OVMF/OVMF.sev.fd",
++            "format": "raw"
++        }
++    },
++    "targets": [
++        {
++            "architecture": "x86_64",
++            "machines": [
++                "pc-q35-*"
++            ]
++        }
++    ],
++    "features": [
++        "acpi-s3",
++        "amd-sev",
++        "amd-sev-es",
++        "verbose-dynamic"
++    ],
++    "tags": [
++
++    ]
++}
+diff --git a/tests/qemufirmwaredata/usr/share/qemu/firmware/55-ovmf-sb-combined.json b/tests/qemufirmwaredata/usr/share/qemu/firmware/55-ovmf-sb-combined.json
+new file mode 100644
+index 0000000000..eb3332e4ab
+--- /dev/null
++++ b/tests/qemufirmwaredata/usr/share/qemu/firmware/55-ovmf-sb-combined.json
+@@ -0,0 +1,33 @@
++{
++    "description": "OVMF with SB+SMM, SB enabled, MS certs enrolled",
++    "interface-types": [
++        "uefi"
++    ],
++    "mapping": {
++        "device": "flash",
++	"mode": "combined",
++        "executable": {
++            "filename": "/usr/share/OVMF/OVMF.secboot.fd",
++            "format": "raw"
++        }
++    },
++    "targets": [
++        {
++            "architecture": "x86_64",
++            "machines": [
++                "pc-q35-*"
++            ]
++        }
++    ],
++    "features": [
++        "acpi-s3",
++        "amd-sev",
++        "enrolled-keys",
++        "requires-smm",
++        "secure-boot",
++        "verbose-dynamic"
++    ],
++    "tags": [
++
++    ]
++}
+diff --git a/tests/qemufirmwaredata/usr/share/qemu/firmware/60-ovmf-sb.json b/tests/qemufirmwaredata/usr/share/qemu/firmware/60-ovmf-sb.json
+index 5e8a94ae78..a5273a5e8b 100644
+--- a/tests/qemufirmwaredata/usr/share/qemu/firmware/60-ovmf-sb.json
++++ b/tests/qemufirmwaredata/usr/share/qemu/firmware/60-ovmf-sb.json
+@@ -5,6 +5,7 @@
+     ],
+     "mapping": {
+         "device": "flash",
++        "mode": "split",
+         "executable": {
+             "filename": "/usr/share/OVMF/OVMF_CODE.secboot.fd",
+             "format": "raw"
+diff --git a/tests/qemufirmwaretest.c b/tests/qemufirmwaretest.c
+index cad4b6d383..fc3416b2ae 100644
+--- a/tests/qemufirmwaretest.c
++++ b/tests/qemufirmwaretest.c
+@@ -17,22 +17,31 @@ static int
+ testParseFormatFW(const void *opaque)
+ {
+     const char *filename = opaque;
+-    g_autofree char *path = NULL;
++    g_autofree char *inpath = NULL;
++    g_autofree char *outpath = NULL;
+     g_autoptr(qemuFirmware) fw = NULL;
+-    g_autofree char *buf = NULL;
+     g_autoptr(virJSONValue) json = NULL;
+     g_autofree char *expected = NULL;
+     g_autofree char *actual = NULL;
++    g_autofree char *buf = NULL;
+ 
+-    path = g_strdup_printf("%s/qemufirmwaredata/%s", abs_srcdir, filename);
++    inpath = g_strdup_printf("%s/qemufirmwaredata/%s", abs_srcdir, filename);
++    outpath = g_strdup_printf("%s/qemufirmwaredata/out/%s", abs_srcdir, filename);
+ 
+-    if (!(fw = qemuFirmwareParse(path)))
++    if (!(fw = qemuFirmwareParse(inpath)))
+         return -1;
+ 
+-    if (virFileReadAll(path,
+-                       1024 * 1024, /* 1MiB */
+-                       &buf) < 0)
+-        return -1;
++    if (virFileExists(outpath)) {
++        if (virFileReadAll(outpath,
++                           1024 * 1024, /* 1MiB */
++                           &buf) < 0)
++            return -1;
++    } else {
++        if (virFileReadAll(inpath,
++                           1024 * 1024, /* 1MiB */
++                           &buf) < 0)
++            return -1;
++    }
+ 
+     if (!(json = virJSONValueFromString(buf)))
+         return -1;
+@@ -60,7 +69,9 @@ testFWPrecedence(const void *opaque G_GNUC_UNUSED)
+     const char *expected[] = {
+         PREFIX "/share/qemu/firmware/40-bios.json",
+         SYSCONFDIR "/qemu/firmware/40-ovmf-sb-keys.json",
++        PREFIX "/share/qemu/firmware/45-ovmf-sev-stateless.json",
+         PREFIX "/share/qemu/firmware/50-ovmf-sb-keys.json",
++        PREFIX "/share/qemu/firmware/55-ovmf-sb-combined.json",
+         PREFIX "/share/qemu/firmware/61-ovmf.json",
+         PREFIX "/share/qemu/firmware/70-aavmf.json",
+         NULL
+@@ -218,7 +229,9 @@ mymain(void)
+     } while (0)
+ 
+     DO_PARSE_TEST("usr/share/qemu/firmware/40-bios.json");
++    DO_PARSE_TEST("usr/share/qemu/firmware/45-ovmf-sev-stateless.json");
+     DO_PARSE_TEST("usr/share/qemu/firmware/50-ovmf-sb-keys.json");
++    DO_PARSE_TEST("usr/share/qemu/firmware/55-ovmf-sb-combined.json");
+     DO_PARSE_TEST("usr/share/qemu/firmware/60-ovmf-sb.json");
+     DO_PARSE_TEST("usr/share/qemu/firmware/61-ovmf.json");
+     DO_PARSE_TEST("usr/share/qemu/firmware/70-aavmf.json");
+@@ -250,6 +263,8 @@ mymain(void)
+     DO_SUPPORTED_TEST("pc-q35-3.1", VIR_ARCH_X86_64, true,
+                       "/usr/share/seabios/bios-256k.bin:NULL:"
+                       "/usr/share/OVMF/OVMF_CODE.secboot.fd:/usr/share/OVMF/OVMF_VARS.secboot.fd:"
++                      "/usr/share/OVMF/OVMF.sev.fd:NULL:"
++                      "/usr/share/OVMF/OVMF.secboot.fd:NULL:"
+                       "/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd",
+                       VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS,
+                       VIR_DOMAIN_OS_DEF_FIRMWARE_EFI);
+-- 
+2.35.1
+
diff --git a/SOURCES/libvirt-qemu-support-multiqueue-for-vdpa-net-device.patch b/SOURCES/libvirt-qemu-support-multiqueue-for-vdpa-net-device.patch
new file mode 100644
index 0000000..83d9be3
--- /dev/null
+++ b/SOURCES/libvirt-qemu-support-multiqueue-for-vdpa-net-device.patch
@@ -0,0 +1,186 @@
+From 563e17f59f088d4ba76e7a95ea8958792ae165e2 Mon Sep 17 00:00:00 2001
+Message-Id: <563e17f59f088d4ba76e7a95ea8958792ae165e2@dist-git>
+From: Jonathon Jongsma <jjongsma@redhat.com>
+Date: Tue, 1 Mar 2022 16:55:21 -0600
+Subject: [PATCH] qemu: support multiqueue for vdpa net device
+
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2024406
+
+Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
+Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
+
+(cherry picked from commit a5e659f071ae5f5fc9aadb46ad7c31736425f8cf)
+Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
+---
+ src/qemu/qemu_domain.c                        |  3 +-
+ .../net-vdpa-multiqueue.x86_64-latest.args    | 36 +++++++++++++++++++
+ .../qemuxml2argvdata/net-vdpa-multiqueue.xml  | 30 ++++++++++++++++
+ tests/qemuxml2argvtest.c                      |  1 +
+ .../net-vdpa-multiqueue.xml                   | 36 +++++++++++++++++++
+ tests/qemuxml2xmltest.c                       |  1 +
+ 6 files changed, 106 insertions(+), 1 deletion(-)
+ create mode 100644 tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
+ create mode 100644 tests/qemuxml2argvdata/net-vdpa-multiqueue.xml
+ create mode 100644 tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml
+
+diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
+index a8401bac30..68052769af 100644
+--- a/src/qemu/qemu_domain.c
++++ b/src/qemu/qemu_domain.c
+@@ -4511,7 +4511,8 @@ qemuDomainValidateActualNetDef(const virDomainNetDef *net,
+               actualType == VIR_DOMAIN_NET_TYPE_BRIDGE ||
+               actualType == VIR_DOMAIN_NET_TYPE_DIRECT ||
+               actualType == VIR_DOMAIN_NET_TYPE_ETHERNET ||
+-              actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER)) {
++              actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER ||
++              actualType == VIR_DOMAIN_NET_TYPE_VDPA)) {
+             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                            _("interface %s - multiqueue is not supported for network interfaces of type %s"),
+                            macstr, virDomainNetTypeToString(actualType));
+diff --git a/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
+new file mode 100644
+index 0000000000..61ba85a847
+--- /dev/null
++++ b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
+@@ -0,0 +1,36 @@
++LC_ALL=C \
++PATH=/bin \
++HOME=/tmp/lib/domain--1-QEMUGuest1 \
++USER=test \
++LOGNAME=test \
++XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \
++XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \
++XDG_CONFIG_HOME=/tmp/lib/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":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \
++-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \
++-accel tcg \
++-cpu qemu64 \
++-m 214 \
++-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 \
++-no-acpi \
++-boot strict=on \
++-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-add-fd set=0,fd=1732,opaque=/dev/vhost-vdpa-0 \
++-netdev vhost-vdpa,vhostdev=/dev/fdset/0,id=hostnet0 \
++-device virtio-net-pci,mq=on,vectors=6,netdev=hostnet0,id=net0,mac=52:54:00:95:db:c0,bus=pci.0,addr=0x2 \
++-audiodev '{"id":"audio1","driver":"none"}' \
++-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
++-msg timestamp=on
+diff --git a/tests/qemuxml2argvdata/net-vdpa-multiqueue.xml b/tests/qemuxml2argvdata/net-vdpa-multiqueue.xml
+new file mode 100644
+index 0000000000..6e369c1916
+--- /dev/null
++++ b/tests/qemuxml2argvdata/net-vdpa-multiqueue.xml
+@@ -0,0 +1,30 @@
++<domain type='qemu'>
++  <name>QEMUGuest1</name>
++  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
++  <memory unit='KiB'>219136</memory>
++  <currentMemory unit='KiB'>219136</currentMemory>
++  <vcpu placement='static'>1</vcpu>
++  <os>
++    <type arch='x86_64' machine='pc'>hvm</type>
++    <boot dev='hd'/>
++  </os>
++  <clock offset='utc'/>
++  <on_poweroff>destroy</on_poweroff>
++  <on_reboot>restart</on_reboot>
++  <on_crash>destroy</on_crash>
++  <devices>
++    <emulator>/usr/bin/qemu-system-x86_64</emulator>
++    <controller type='usb' index='0'/>
++    <controller type='ide' index='0'/>
++    <controller type='pci' index='0' model='pci-root'/>
++    <interface type='vdpa'>
++      <mac address='52:54:00:95:db:c0'/>
++      <source dev='/dev/vhost-vdpa-0'/>
++      <model type='virtio'/>
++      <driver queues='2'/>
++    </interface>
++    <input type='mouse' bus='ps2'/>
++    <input type='keyboard' bus='ps2'/>
++    <memballoon model='none'/>
++  </devices>
++</domain>
+diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
+index cc67d806e4..1abb5d0124 100644
+--- a/tests/qemuxml2argvtest.c
++++ b/tests/qemuxml2argvtest.c
+@@ -1652,6 +1652,7 @@ mymain(void)
+     DO_TEST_FAILURE("net-hostdev-fail",
+                     QEMU_CAPS_DEVICE_VFIO_PCI);
+     DO_TEST_CAPS_LATEST("net-vdpa");
++    DO_TEST_CAPS_LATEST("net-vdpa-multiqueue");
+ 
+     DO_TEST("hostdev-pci-multifunction",
+             QEMU_CAPS_KVM,
+diff --git a/tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml b/tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml
+new file mode 100644
+index 0000000000..0876d5df62
+--- /dev/null
++++ b/tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml
+@@ -0,0 +1,36 @@
++<domain type='qemu'>
++  <name>QEMUGuest1</name>
++  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
++  <memory unit='KiB'>219136</memory>
++  <currentMemory unit='KiB'>219136</currentMemory>
++  <vcpu placement='static'>1</vcpu>
++  <os>
++    <type arch='x86_64' machine='pc'>hvm</type>
++    <boot dev='hd'/>
++  </os>
++  <clock offset='utc'/>
++  <on_poweroff>destroy</on_poweroff>
++  <on_reboot>restart</on_reboot>
++  <on_crash>destroy</on_crash>
++  <devices>
++    <emulator>/usr/bin/qemu-system-x86_64</emulator>
++    <controller type='usb' index='0'>
++      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
++    </controller>
++    <controller type='ide' index='0'>
++      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
++    </controller>
++    <controller type='pci' index='0' model='pci-root'/>
++    <interface type='vdpa'>
++      <mac address='52:54:00:95:db:c0'/>
++      <source dev='/dev/vhost-vdpa-0'/>
++      <model type='virtio'/>
++      <driver queues='2'/>
++      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
++    </interface>
++    <input type='mouse' bus='ps2'/>
++    <input type='keyboard' bus='ps2'/>
++    <audio id='1' type='none'/>
++    <memballoon model='none'/>
++  </devices>
++</domain>
+diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
+index fb438269b9..772586cf19 100644
+--- a/tests/qemuxml2xmltest.c
++++ b/tests/qemuxml2xmltest.c
+@@ -461,6 +461,7 @@ mymain(void)
+     DO_TEST_NOCAPS("net-coalesce");
+     DO_TEST_NOCAPS("net-many-models");
+     DO_TEST("net-vdpa", QEMU_CAPS_NETDEV_VHOST_VDPA);
++    DO_TEST("net-vdpa-multiqueue", QEMU_CAPS_NETDEV_VHOST_VDPA);
+ 
+     DO_TEST_NOCAPS("serial-tcp-tlsx509-chardev");
+     DO_TEST_NOCAPS("serial-tcp-tlsx509-chardev-notls");
+-- 
+2.35.1
+
diff --git a/SOURCES/libvirt-qemuDomainSetupDisk-Initialize-targetPaths.patch b/SOURCES/libvirt-qemuDomainSetupDisk-Initialize-targetPaths.patch
new file mode 100644
index 0000000..cdec8db
--- /dev/null
+++ b/SOURCES/libvirt-qemuDomainSetupDisk-Initialize-targetPaths.patch
@@ -0,0 +1,41 @@
+From 0eec7bae9f59b2693798d25d346243109e92aeff Mon Sep 17 00:00:00 2001
+Message-Id: <0eec7bae9f59b2693798d25d346243109e92aeff@dist-git>
+From: Peter Krempa <pkrempa@redhat.com>
+Date: Tue, 25 Jan 2022 17:49:00 +0100
+Subject: [PATCH] qemuDomainSetupDisk: Initialize 'targetPaths'
+
+Compiler isn't able to see that 'virDevMapperGetTargets' in cases e.g.
+when the devmapper isn't available may not initialize the value in the
+pointer passed as the second argument.
+
+The usage 'qemuDomainSetupDisk' lead to an accidental infinite loop as
+previous calls apparently doctored the stack to a point where
+'g_slist_concat' would end up in an infinite loop trying to find the end
+of the list.
+
+Fixes: 6c49c2ee9fcb88de02cdc333f666a8e95d60a3b0
+Closes: https://gitlab.com/libvirt/libvirt/-/issues/268
+Signed-off-by: Peter Krempa <pkrempa@redhat.com>
+Reviewed-by: Andrea Bolognani <abologna@redhat.com>
+(cherry picked from commit ddb2384f0c78a91c40d95afdbc7fe325e95ef2bc)
+https://bugzilla.redhat.com/show_bug.cgi?id=2046170
+---
+ src/qemu/qemu_namespace.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/qemu/qemu_namespace.c b/src/qemu/qemu_namespace.c
+index 23b1160c5e..94453033f5 100644
+--- a/src/qemu/qemu_namespace.c
++++ b/src/qemu/qemu_namespace.c
+@@ -251,7 +251,7 @@ qemuDomainSetupDisk(virStorageSource *src,
+             if (!(tmpPath = virPCIDeviceAddressGetIOMMUGroupDev(&next->nvme->pciAddr)))
+                 return -1;
+         } else {
+-            GSList *targetPaths;
++            GSList *targetPaths = NULL;
+ 
+             if (virStorageSourceIsEmpty(next) ||
+                 !virStorageSourceIsLocalStorage(next)) {
+-- 
+2.35.1
+
diff --git a/SOURCES/libvirt-qemu_command-Generate-memory-only-after-controllers.patch b/SOURCES/libvirt-qemu_command-Generate-memory-only-after-controllers.patch
new file mode 100644
index 0000000..6671005
--- /dev/null
+++ b/SOURCES/libvirt-qemu_command-Generate-memory-only-after-controllers.patch
@@ -0,0 +1,662 @@
+From 6f692c60b1d58135f439ad91e95d18540dfa6556 Mon Sep 17 00:00:00 2001
+Message-Id: <6f692c60b1d58135f439ad91e95d18540dfa6556@dist-git>
+From: Michal Privoznik <mprivozn@redhat.com>
+Date: Thu, 27 Jan 2022 11:13:53 +0100
+Subject: [PATCH] qemu_command: Generate memory only after controllers
+
+Currently, memory device (def->mems) part of cmd line is
+generated before any controller. In majority of cases it doesn't
+matter because neither of memory devices live on a bus that's
+created by an exposed controller (e.g. there's no DIMM
+controller, at least not exposed). Except for virtio-mem and
+virtio-pmem, which do have a PCI address. And if it so happens
+that the device goes onto non-default bus (pci.0) starting such
+guest fails, because the controller that creates the desired bus
+wasn't processed yet. QEMU processes arguments in order.
+
+For instance, if virtio-mem has address with bus='0x01' QEMU
+refuses to start with the following message:
+
+  Bus 'pci.1' not found
+
+Similarly for virtio-pmem. I've successfully tested migration and
+changing the order does not affect migration stream.
+
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2047271
+Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
+Reviewed-by: Andrea Bolognani <abologna@redhat.com>
+(cherry picked from commit af23241cfed712f69450e82135d7c7b4899736de)
+
+Conflicts:
+tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args:
+tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args:
+tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args:
+tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args:
+tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args:
+tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args:
+tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args:
+tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args:
+tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args:
+tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args:
+  These happened because downstream we don't use JSON for -device,
+  but upstream we do (as of 1a691fe1c84090da80a652c4c80ac00a6134a69b).
+
+Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
+---
+ src/qemu/qemu_command.c                                   | 6 +++---
+ tests/qemuxml2argvdata/hugepages-memaccess.args           | 4 ++--
+ tests/qemuxml2argvdata/hugepages-memaccess2.args          | 4 ++--
+ tests/qemuxml2argvdata/hugepages-numa-default-dimm.args   | 4 ++--
+ .../qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args  | 4 ++--
+ .../qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args | 4 ++--
+ tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args      | 8 ++++----
+ tests/qemuxml2argvdata/memory-hotplug-dimm.args           | 8 ++++----
+ .../memory-hotplug-nvdimm-access.x86_64-latest.args       | 4 ++--
+ .../memory-hotplug-nvdimm-align.x86_64-5.2.0.args         | 4 ++--
+ .../memory-hotplug-nvdimm-align.x86_64-latest.args        | 4 ++--
+ .../memory-hotplug-nvdimm-label.x86_64-5.2.0.args         | 4 ++--
+ .../memory-hotplug-nvdimm-label.x86_64-latest.args        | 4 ++--
+ .../memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args          | 4 ++--
+ .../memory-hotplug-nvdimm-pmem.x86_64-latest.args         | 4 ++--
+ .../memory-hotplug-nvdimm-ppc64-abi-update.args           | 4 ++--
+ tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args   | 4 ++--
+ .../memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args      | 4 ++--
+ .../memory-hotplug-nvdimm-readonly.x86_64-latest.args     | 4 ++--
+ .../memory-hotplug-nvdimm.x86_64-latest.args              | 4 ++--
+ .../memory-hotplug-ppc64-nonuma-abi-update.args           | 8 ++++----
+ tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args   | 8 ++++----
+ .../memory-hotplug-virtio-mem.x86_64-latest.args          | 8 ++++----
+ .../memory-hotplug-virtio-pmem.x86_64-5.2.0.args          | 4 ++--
+ .../memory-hotplug-virtio-pmem.x86_64-latest.args         | 4 ++--
+ tests/qemuxml2argvdata/pages-dimm-discard.args            | 8 ++++----
+ 26 files changed, 65 insertions(+), 65 deletions(-)
+
+diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
+index d822533ccb..509bab08ef 100644
+--- a/src/qemu/qemu_command.c
++++ b/src/qemu/qemu_command.c
+@@ -10543,9 +10543,6 @@ qemuBuildCommandLine(virQEMUDriver *driver,
+         qemuBuildNumaCommandLine(cfg, def, cmd, priv) < 0)
+         return NULL;
+ 
+-    if (qemuBuildMemoryDeviceCommandLine(cmd, cfg, def, priv) < 0)
+-        return NULL;
+-
+     virUUIDFormat(def->uuid, uuid);
+     virCommandAddArgList(cmd, "-uuid", uuid, NULL);
+ 
+@@ -10595,6 +10592,9 @@ qemuBuildCommandLine(virQEMUDriver *driver,
+     if (qemuBuildControllersCommandLine(cmd, def, qemuCaps) < 0)
+         return NULL;
+ 
++    if (qemuBuildMemoryDeviceCommandLine(cmd, cfg, def, priv) < 0)
++        return NULL;
++
+     if (qemuBuildHubCommandLine(cmd, def, qemuCaps) < 0)
+         return NULL;
+ 
+diff --git a/tests/qemuxml2argvdata/hugepages-memaccess.args b/tests/qemuxml2argvdata/hugepages-memaccess.args
+index b89f791697..a369c7f6da 100644
+--- a/tests/qemuxml2argvdata/hugepages-memaccess.args
++++ b/tests/qemuxml2argvdata/hugepages-memaccess.args
+@@ -24,8 +24,6 @@ QEMU_AUDIO_DRV=none \
+ -numa node,nodeid=2,cpus=2,memdev=ram-node2 \
+ -object memory-backend-file,id=ram-node3,mem-path=/dev/hugepages1G/libvirt/qemu/-1-QEMUGuest1,share=off,prealloc=on,size=1073741824,host-nodes=3,policy=bind \
+ -numa node,nodeid=3,cpus=3,memdev=ram-node3 \
+--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,share=on,prealloc=on,size=536870912,host-nodes=0-3,policy=bind \
+--device pc-dimm,node=1,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -37,6 +35,8 @@ QEMU_AUDIO_DRV=none \
+ -no-acpi \
+ -boot strict=on \
+ -usb \
++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,share=on,prealloc=on,size=536870912,host-nodes=0-3,policy=bind \
++-device pc-dimm,node=1,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \
+ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \
+ -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
+ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
+diff --git a/tests/qemuxml2argvdata/hugepages-memaccess2.args b/tests/qemuxml2argvdata/hugepages-memaccess2.args
+index 0c296797e9..434ebdaa62 100644
+--- a/tests/qemuxml2argvdata/hugepages-memaccess2.args
++++ b/tests/qemuxml2argvdata/hugepages-memaccess2.args
+@@ -24,8 +24,6 @@ QEMU_AUDIO_DRV=none \
+ -numa node,nodeid=2,cpus=2,memdev=ram-node2 \
+ -object memory-backend-file,id=ram-node3,mem-path=/var/lib/libvirt/qemu/ram/-1-QEMUGuest1/ram-node3,share=off,size=1073741824,host-nodes=3,policy=bind \
+ -numa node,nodeid=3,cpus=3,memdev=ram-node3 \
+--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,share=on,prealloc=on,size=536870912,host-nodes=0-3,policy=bind \
+--device pc-dimm,node=1,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -37,6 +35,8 @@ QEMU_AUDIO_DRV=none \
+ -no-acpi \
+ -boot strict=on \
+ -usb \
++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,share=on,prealloc=on,size=536870912,host-nodes=0-3,policy=bind \
++-device pc-dimm,node=1,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \
+ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \
+ -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
+ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
+diff --git a/tests/qemuxml2argvdata/hugepages-numa-default-dimm.args b/tests/qemuxml2argvdata/hugepages-numa-default-dimm.args
+index f560cabf8e..57bb70346d 100644
+--- a/tests/qemuxml2argvdata/hugepages-numa-default-dimm.args
++++ b/tests/qemuxml2argvdata/hugepages-numa-default-dimm.args
+@@ -19,8 +19,6 @@ QEMU_AUDIO_DRV=none \
+ -mem-prealloc \
+ -mem-path /dev/hugepages2M/libvirt/qemu/-1-fedora \
+ -numa node,nodeid=0,cpus=0-1,mem=1024 \
+--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages1G/libvirt/qemu/-1-fedora,size=1073741824,host-nodes=1-3,policy=bind \
+--device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \
+ -uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \
+ -display none \
+ -no-user-config \
+@@ -32,4 +30,6 @@ QEMU_AUDIO_DRV=none \
+ -no-acpi \
+ -boot strict=on \
+ -usb \
++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages1G/libvirt/qemu/-1-fedora,size=1073741824,host-nodes=1-3,policy=bind \
++-device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \
+ -msg timestamp=on
+diff --git a/tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args b/tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args
+index 8b5665f86e..7d9dcfb4df 100644
+--- a/tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object '{"qom-type":"memory-backend-file","id":"ram-node0","mem-path":"/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1","share":true,"prealloc":true,"size":1073741824}' \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":true,"prealloc":true,"size":536870912}' \
+--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":true,"prealloc":true,"size":536870912}' \
++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -audiodev '{"id":"audio1","driver":"none"}' \
+ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+ -msg timestamp=on
+diff --git a/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args b/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args
+index 8a40e2d79c..04a320d469 100644
+--- a/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-instance-00000092/.config \
+ -smp 8,sockets=1,dies=1,cores=8,threads=1 \
+ -object '{"qom-type":"memory-backend-memfd","id":"ram-node0","hugetlb":true,"hugetlbsize":2097152,"share":true,"prealloc":true,"size":15032385536,"host-nodes":[3],"policy":"preferred"}' \
+ -numa node,nodeid=0,cpus=0-7,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":true,"prealloc":true,"size":536870912,"host-nodes":[3],"policy":"preferred"}' \
+--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid 126f2720-6f8e-45ab-a886-ec9277079a67 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-instance-00000092/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":true,"prealloc":true,"size":536870912,"host-nodes":[3],"policy":"preferred"}' \
++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -audiodev '{"id":"audio1","driver":"none"}' \
+ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
+ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args b/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args
+index 907072d55d..b36117f1e8 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args
+@@ -17,10 +17,6 @@ QEMU_AUDIO_DRV=none \
+ -realtime mlock=off \
+ -smp 2,sockets=2,cores=1,threads=1 \
+ -numa node,nodeid=0,cpus=0-1,mem=214 \
+--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,prealloc=on,size=536870912,host-nodes=1-3,policy=bind \
+--device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \
+--object memory-backend-ram,id=memdimm2,size=536870912 \
+--device pc-dimm,node=0,memdev=memdimm2,id=dimm2,slot=2 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -32,6 +28,10 @@ QEMU_AUDIO_DRV=none \
+ -no-acpi \
+ -boot strict=on \
+ -usb \
++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,prealloc=on,size=536870912,host-nodes=1-3,policy=bind \
++-device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \
++-object memory-backend-ram,id=memdimm2,size=536870912 \
++-device pc-dimm,node=0,memdev=memdimm2,id=dimm2,slot=2 \
+ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \
+ -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
+ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-dimm.args b/tests/qemuxml2argvdata/memory-hotplug-dimm.args
+index 5d87f4a3ef..72c2803c5e 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-dimm.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-dimm.args
+@@ -17,10 +17,6 @@ QEMU_AUDIO_DRV=none \
+ -realtime mlock=off \
+ -smp 2,sockets=2,cores=1,threads=1 \
+ -numa node,nodeid=0,cpus=0-1,mem=214 \
+--object memory-backend-ram,id=memdimm0,size=536870912 \
+--device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \
+--object memory-backend-file,id=memdimm1,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,prealloc=on,size=536870912,host-nodes=1-3,policy=bind \
+--device pc-dimm,node=0,memdev=memdimm1,id=dimm1,slot=1 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -32,6 +28,10 @@ QEMU_AUDIO_DRV=none \
+ -no-acpi \
+ -boot strict=on \
+ -usb \
++-object memory-backend-ram,id=memdimm0,size=536870912 \
++-device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \
++-object memory-backend-file,id=memdimm1,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,prealloc=on,size=536870912,host-nodes=1-3,policy=bind \
++-device pc-dimm,node=0,memdev=memdimm1,id=dimm1,slot=1 \
+ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \
+ -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
+ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args
+index 3664150c51..94aeadabce 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \
+--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \
++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-5.2.0.args
+index 6c28c86004..0b29a6fded 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-5.2.0.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-5.2.0.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object memory-backend-ram,id=ram-node0,size=224395264 \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912,align=2097152 \
+--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912,align=2097152 \
++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args
+index aa77849079..5045cc8318 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912,"align":2097152}' \
+--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912,"align":2097152}' \
++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-5.2.0.args
+index c45b401af5..7c67161b78 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-5.2.0.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-5.2.0.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object memory-backend-ram,id=ram-node0,size=224395264 \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912 \
+--device nvdimm,node=0,label-size=131072,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912 \
++-device nvdimm,node=0,label-size=131072,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args
+index 07863ba87c..9466877699 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \
+--device nvdimm,node=0,label-size=131072,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \
++-device nvdimm,node=0,label-size=131072,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args
+index 3f35d4dca2..c4dae0cfd1 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object memory-backend-ram,id=ram-node0,size=224395264 \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,size=536870912,pmem=on \
+--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,size=536870912,pmem=on \
++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args
+index 4ed86feb01..9324535ac3 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"size":536870912,"pmem":true}' \
+--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"size":536870912,"pmem":true}' \
++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args
+index ebdb0429d0..55b16c9dc2 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args
+@@ -17,8 +17,6 @@ QEMU_AUDIO_DRV=none \
+ -realtime mlock=off \
+ -smp 2,sockets=2,cores=1,threads=1 \
+ -numa node,nodeid=0,cpus=0-1,mem=1024 \
+--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,prealloc=on,size=537001984 \
+--device nvdimm,node=0,label-size=131072,uuid=49545eb3-75e1-2d0a-acdd-f0294406c99e,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -28,4 +26,6 @@ QEMU_AUDIO_DRV=none \
+ -rtc base=utc \
+ -no-shutdown \
+ -boot strict=on \
++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,prealloc=on,size=537001984 \
++-device nvdimm,node=0,label-size=131072,uuid=49545eb3-75e1-2d0a-acdd-f0294406c99e,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -msg timestamp=on
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args
+index ebdb0429d0..55b16c9dc2 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args
+@@ -17,8 +17,6 @@ QEMU_AUDIO_DRV=none \
+ -realtime mlock=off \
+ -smp 2,sockets=2,cores=1,threads=1 \
+ -numa node,nodeid=0,cpus=0-1,mem=1024 \
+--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,prealloc=on,size=537001984 \
+--device nvdimm,node=0,label-size=131072,uuid=49545eb3-75e1-2d0a-acdd-f0294406c99e,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -28,4 +26,6 @@ QEMU_AUDIO_DRV=none \
+ -rtc base=utc \
+ -no-shutdown \
+ -boot strict=on \
++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,prealloc=on,size=537001984 \
++-device nvdimm,node=0,label-size=131072,uuid=49545eb3-75e1-2d0a-acdd-f0294406c99e,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -msg timestamp=on
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args
+index bca2f286ba..b1873c100f 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object memory-backend-ram,id=ram-node0,size=224395264 \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912 \
+--device nvdimm,node=0,unarmed=on,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912 \
++-device nvdimm,node=0,unarmed=on,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args
+index 8be7f35cec..4f11d22e00 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \
+--device nvdimm,node=0,unarmed=on,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \
++-device nvdimm,node=0,unarmed=on,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args
+index 307698749e..434a0f91cf 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":1073741824}' \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","prealloc":true,"size":536870912}' \
+--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","prealloc":true,"size":536870912}' \
++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args b/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args
+index 5380c9e805..e8a6451841 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args
+@@ -16,10 +16,6 @@ QEMU_AUDIO_DRV=none \
+ -m size=1048576k,slots=16,maxmem=4194304k \
+ -realtime mlock=off \
+ -smp 1,sockets=1,cores=1,threads=1 \
+--object memory-backend-ram,id=memdimm0,size=536870912 \
+--device pc-dimm,memdev=memdimm0,id=dimm0,slot=0 \
+--object memory-backend-ram,id=memdimm1,size=536870912 \
+--device pc-dimm,memdev=memdimm1,id=dimm1,slot=1 \
+ -uuid 49545eb3-75e1-2d0a-acdd-f0294406c99e \
+ -display none \
+ -no-user-config \
+@@ -29,4 +25,8 @@ QEMU_AUDIO_DRV=none \
+ -rtc base=utc \
+ -no-shutdown \
+ -boot strict=on \
++-object memory-backend-ram,id=memdimm0,size=536870912 \
++-device pc-dimm,memdev=memdimm0,id=dimm0,slot=0 \
++-object memory-backend-ram,id=memdimm1,size=536870912 \
++-device pc-dimm,memdev=memdimm1,id=dimm1,slot=1 \
+ -msg timestamp=on
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args b/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args
+index acff36eb78..181409cde0 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args
+@@ -16,10 +16,6 @@ QEMU_AUDIO_DRV=none \
+ -m size=1310720k,slots=16,maxmem=4194304k \
+ -realtime mlock=off \
+ -smp 1,sockets=1,cores=1,threads=1 \
+--object memory-backend-ram,id=memdimm0,size=536870912 \
+--device pc-dimm,memdev=memdimm0,id=dimm0,slot=0 \
+--object memory-backend-ram,id=memdimm1,size=536870912 \
+--device pc-dimm,memdev=memdimm1,id=dimm1,slot=1 \
+ -uuid 49545eb3-75e1-2d0a-acdd-f0294406c99e \
+ -display none \
+ -no-user-config \
+@@ -29,4 +25,8 @@ QEMU_AUDIO_DRV=none \
+ -rtc base=utc \
+ -no-shutdown \
+ -boot strict=on \
++-object memory-backend-ram,id=memdimm0,size=536870912 \
++-device pc-dimm,memdev=memdimm0,id=dimm0,slot=0 \
++-object memory-backend-ram,id=memdimm1,size=536870912 \
++-device pc-dimm,memdev=memdimm1,id=dimm1,slot=1 \
+ -msg timestamp=on
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args
+index 8747b249da..30b635d365 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args
+@@ -18,10 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":2145386496}' \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-ram","id":"memvirtiomem0","reserve":false,"size":1073741824}' \
+--device virtio-mem-pci,node=0,block-size=2097152,requested-size=536870912,memdev=memvirtiomem0,id=virtiomem0,bus=pci.0,addr=0x2 \
+--object '{"qom-type":"memory-backend-file","id":"memvirtiomem1","mem-path":"/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1","reserve":false,"size":2147483648,"host-nodes":[1,2,3],"policy":"bind"}' \
+--device virtio-mem-pci,node=0,block-size=2097152,requested-size=1073741824,memdev=memvirtiomem1,id=virtiomem1,bus=pci.0,addr=0x3 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -33,6 +29,10 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-ram","id":"memvirtiomem0","reserve":false,"size":1073741824}' \
++-device virtio-mem-pci,node=0,block-size=2097152,requested-size=536870912,memdev=memvirtiomem0,id=virtiomem0,bus=pci.0,addr=0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memvirtiomem1","mem-path":"/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1","reserve":false,"size":2147483648,"host-nodes":[1,2,3],"policy":"bind"}' \
++-device virtio-mem-pci,node=0,block-size=2097152,requested-size=1073741824,memdev=memvirtiomem1,id=virtiomem1,bus=pci.0,addr=0x3 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-5.2.0.args
+index 17fd98fb88..8fa678c209 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-5.2.0.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-5.2.0.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object memory-backend-ram,id=ram-node0,size=2145386496 \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object memory-backend-file,id=memvirtiopmem0,mem-path=/tmp/virtio_pmem,share=on,size=536870912 \
+--device virtio-pmem-pci,memdev=memvirtiopmem0,id=virtiopmem0,bus=pci.0,addr=0x5 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object memory-backend-file,id=memvirtiopmem0,mem-path=/tmp/virtio_pmem,share=on,size=536870912 \
++-device virtio-pmem-pci,memdev=memvirtiopmem0,id=virtiopmem0,bus=pci.0,addr=0x5 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args
+index e5a91b6d33..95ff490cef 100644
+--- a/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args
++++ b/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args
+@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -smp 2,sockets=2,dies=1,cores=1,threads=1 \
+ -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":2145386496}' \
+ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+--object '{"qom-type":"memory-backend-file","id":"memvirtiopmem0","mem-path":"/tmp/virtio_pmem","share":true,"size":536870912}' \
+--device virtio-pmem-pci,memdev=memvirtiopmem0,id=virtiopmem0,bus=pci.0,addr=0x5 \
+ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+ -display none \
+ -no-user-config \
+@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -no-acpi \
+ -boot strict=on \
+ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
++-object '{"qom-type":"memory-backend-file","id":"memvirtiopmem0","mem-path":"/tmp/virtio_pmem","share":true,"size":536870912}' \
++-device virtio-pmem-pci,memdev=memvirtiopmem0,id=virtiopmem0,bus=pci.0,addr=0x5 \
+ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
+ -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \
+diff --git a/tests/qemuxml2argvdata/pages-dimm-discard.args b/tests/qemuxml2argvdata/pages-dimm-discard.args
+index 2ebe9c1350..e63c908549 100644
+--- a/tests/qemuxml2argvdata/pages-dimm-discard.args
++++ b/tests/qemuxml2argvdata/pages-dimm-discard.args
+@@ -17,10 +17,6 @@ QEMU_AUDIO_DRV=none \
+ -realtime mlock=off \
+ -smp 2,sockets=2,cores=1,threads=1 \
+ -numa node,nodeid=0,cpus=0-1,mem=1024 \
+--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages1G/libvirt/qemu/-1-fedora,prealloc=on,size=1073741824,host-nodes=1-3,policy=bind \
+--device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \
+--object memory-backend-file,id=memdimm1,mem-path=/var/lib/libvirt/qemu/ram/-1-fedora/dimm1,discard-data=on,share=off,size=536870912 \
+--device pc-dimm,node=0,memdev=memdimm1,id=dimm1,slot=1 \
+ -uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \
+ -display none \
+ -no-user-config \
+@@ -32,4 +28,8 @@ QEMU_AUDIO_DRV=none \
+ -no-acpi \
+ -boot strict=on \
+ -usb \
++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages1G/libvirt/qemu/-1-fedora,prealloc=on,size=1073741824,host-nodes=1-3,policy=bind \
++-device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \
++-object memory-backend-file,id=memdimm1,mem-path=/var/lib/libvirt/qemu/ram/-1-fedora/dimm1,discard-data=on,share=off,size=536870912 \
++-device pc-dimm,node=0,memdev=memdimm1,id=dimm1,slot=1 \
+ -msg timestamp=on
+-- 
+2.35.1
+
diff --git a/SOURCES/libvirt-remove-sysconfig-files.patch b/SOURCES/libvirt-remove-sysconfig-files.patch
new file mode 100644
index 0000000..0a6fc8d
--- /dev/null
+++ b/SOURCES/libvirt-remove-sysconfig-files.patch
@@ -0,0 +1,846 @@
+From fabb2642be1ef180b221af36e5810f819622fc58 Mon Sep 17 00:00:00 2001
+Message-Id: <fabb2642be1ef180b221af36e5810f819622fc58@dist-git>
+From: Olaf Hering <olaf@aepfle.de>
+Date: Wed, 12 Jan 2022 11:45:08 +0100
+Subject: [PATCH] remove sysconfig files
+
+sysconfig files are owned by the admin of the host. They have the
+liberty to put anything they want into these files. This makes it
+difficult to provide different built-in defaults.
+
+Remove the sysconfig file and place the current desired default into
+the service file.
+
+Local customizations can now go either into /etc/sysconfig/name
+or /etc/systemd/system/name.service.d/my-knobs.conf
+
+Attempt to handle upgrades in libvirt.spec.
+Dirty files which are marked as %config will be renamed to file.rpmsave.
+To restore them automatically, move stale .rpmsave files away, and
+catch any new rpmsave files in %posttrans.
+
+Signed-off-by: Olaf Hering <olaf@aepfle.de>
+Reviewed-by: Andrea Bolognani <abologna@redhat.com>
+(cherry picked from commit 8eb4461645c5738674232ee26c15f5555230b7ff)
+
+https://bugzilla.redhat.com/show_bug.cgi?id=2042529
+---
+ docs/daemons.rst                        | 21 ++++++++
+ docs/remote.html.in                     |  6 +--
+ libvirt.spec.in                         | 69 +++++++++++++++++++------
+ src/ch/meson.build                      |  5 --
+ src/ch/virtchd.service.in               |  1 +
+ src/ch/virtchd.sysconf                  |  3 --
+ src/interface/meson.build               |  5 --
+ src/interface/virtinterfaced.service.in |  1 +
+ src/interface/virtinterfaced.sysconf    |  3 --
+ src/libxl/meson.build                   |  5 --
+ src/libxl/virtxend.service.in           |  1 +
+ src/libxl/virtxend.sysconf              |  3 --
+ src/locking/meson.build                 |  5 --
+ src/locking/virtlockd.service.in        |  1 +
+ src/locking/virtlockd.sysconf           |  3 --
+ src/logging/meson.build                 |  5 --
+ src/logging/virtlogd.sysconf            |  3 --
+ src/lxc/meson.build                     |  5 --
+ src/lxc/virtlxcd.service.in             |  1 +
+ src/lxc/virtlxcd.sysconf                |  3 --
+ src/meson.build                         | 16 ------
+ src/network/meson.build                 |  5 --
+ src/network/virtnetworkd.service.in     |  1 +
+ src/network/virtnetworkd.sysconf        |  3 --
+ src/node_device/meson.build             |  5 --
+ src/node_device/virtnodedevd.service.in |  1 +
+ src/node_device/virtnodedevd.sysconf    |  3 --
+ src/nwfilter/meson.build                |  5 --
+ src/nwfilter/virtnwfilterd.service.in   |  1 +
+ src/nwfilter/virtnwfilterd.sysconf      |  3 --
+ src/qemu/meson.build                    |  5 --
+ src/qemu/virtqemud.service.in           |  1 +
+ src/qemu/virtqemud.sysconf              | 12 -----
+ src/remote/libvirtd.service.in          |  1 +
+ src/remote/libvirtd.sysconf             | 21 --------
+ src/remote/meson.build                  | 10 ----
+ src/remote/virtproxyd.service.in        |  1 +
+ src/remote/virtproxyd.sysconf           |  3 --
+ src/secret/meson.build                  |  5 --
+ src/secret/virtsecretd.service.in       |  1 +
+ src/secret/virtsecretd.sysconf          |  3 --
+ src/storage/meson.build                 |  5 --
+ src/storage/virtstoraged.service.in     |  1 +
+ src/storage/virtstoraged.sysconf        |  3 --
+ src/vbox/meson.build                    |  5 --
+ src/vbox/virtvboxd.service.in           |  1 +
+ src/vbox/virtvboxd.sysconf              |  3 --
+ src/vz/meson.build                      |  5 --
+ src/vz/virtvzd.service.in               |  1 +
+ src/vz/virtvzd.sysconf                  |  3 --
+ tools/libvirt-guests.sysconf            | 50 ------------------
+ tools/meson.build                       |  6 ---
+ 52 files changed, 93 insertions(+), 245 deletions(-)
+ delete mode 100644 src/ch/virtchd.sysconf
+ delete mode 100644 src/interface/virtinterfaced.sysconf
+ delete mode 100644 src/libxl/virtxend.sysconf
+ delete mode 100644 src/locking/virtlockd.sysconf
+ delete mode 100644 src/logging/virtlogd.sysconf
+ delete mode 100644 src/lxc/virtlxcd.sysconf
+ delete mode 100644 src/network/virtnetworkd.sysconf
+ delete mode 100644 src/node_device/virtnodedevd.sysconf
+ delete mode 100644 src/nwfilter/virtnwfilterd.sysconf
+ delete mode 100644 src/qemu/virtqemud.sysconf
+ delete mode 100644 src/remote/libvirtd.sysconf
+ delete mode 100644 src/remote/virtproxyd.sysconf
+ delete mode 100644 src/secret/virtsecretd.sysconf
+ delete mode 100644 src/storage/virtstoraged.sysconf
+ delete mode 100644 src/vbox/virtvboxd.sysconf
+ delete mode 100644 src/vz/virtvzd.sysconf
+ delete mode 100644 tools/libvirt-guests.sysconf
+
+diff --git a/docs/daemons.rst b/docs/daemons.rst
+index c8ae3b0cef..1f9bc34260 100644
+--- a/docs/daemons.rst
++++ b/docs/daemons.rst
+@@ -686,3 +686,24 @@ socket unit names into the service. When using these old versions, the
+ ``unix_sock_dir`` setting in ``virtlockd.conf`` must be changed in
+ lock-step with the equivalent setting in the unit files to ensure that
+ ``virtlockd`` can identify the sockets.
++
++Changing command line options for daemons
++=========================================
++
++Two ways exist to override the defaults in the provided service files:
++either a systemd "drop-in" configuration file, or a ``/etc/sysconfig/$daemon``
++file must be created.  For example, to change the command line option
++for a debug session of ``libvirtd``, create a file
++``/etc/systemd/system/libvirtd.service.d/debug.conf`` with the following content:
++
++   ::
++
++      [Unit]
++      Description=Virtualization daemon, with override from debug.conf
++
++      [Service]
++      Environment=G_DEBUG=fatal-warnings
++      Environment=LIBVIRTD_ARGS="--listen --verbose"
++
++After changes to systemd "drop-in" configuration files it is required to run
++``systemctl daemon-reload``.
+diff --git a/docs/remote.html.in b/docs/remote.html.in
+index efdb2b3253..47fb2d4df3 100644
+--- a/docs/remote.html.in
++++ b/docs/remote.html.in
+@@ -138,9 +138,9 @@ Blank lines and comments beginning with <code>#</code> are ignored.
+         <td> 1 (on) </td>
+         <td>
+   Listen for secure TLS connections on the public TCP/IP port.
+-  Note: it is also necessary to start the server in listening mode by
+-  running it with --listen or editing /etc/sysconfig/libvirtd by uncommenting the LIBVIRTD_ARGS="--listen" line
+-  to cause the server to come up in listening mode whenever it is started.
++  Note: it is also necessary to start the server in listening mode
++  by running it with --listen or adding a LIBVIRTD_ARGS="--listen"
++  line to /etc/sysconfig/libvirtd.
+ </td>
+       </tr>
+       <tr>
+diff --git a/src/ch/meson.build b/src/ch/meson.build
+index e0afdb390a..a4bf0c6649 100644
+--- a/src/ch/meson.build
++++ b/src/ch/meson.build
+@@ -63,11 +63,6 @@ if conf.has('WITH_CH')
+     'sockets': [ 'main', 'ro', 'admin' ],
+   }
+ 
+-  sysconf_files += {
+-    'name': 'virtchd',
+-    'file': files('virtchd.sysconf'),
+-  }
+-
+   virt_install_dirs += [
+     localstatedir / 'lib' / 'libvirt' / 'ch',
+     runstatedir / 'libvirt' / 'ch',
+diff --git a/src/ch/virtchd.service.in b/src/ch/virtchd.service.in
+index cc1e85d1df..f08339f211 100644
+--- a/src/ch/virtchd.service.in
++++ b/src/ch/virtchd.service.in
+@@ -18,6 +18,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTCHD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtchd
+ ExecStart=@sbindir@/virtchd $VIRTCHD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/ch/virtchd.sysconf b/src/ch/virtchd.sysconf
+deleted file mode 100644
+index 5ee44be5cf..0000000000
+--- a/src/ch/virtchd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtchd.service systemd unit
+-
+-VIRTCHD_ARGS="--timeout 120"
+diff --git a/src/interface/meson.build b/src/interface/meson.build
+index 2d4e30362c..f9f378aeb0 100644
+--- a/src/interface/meson.build
++++ b/src/interface/meson.build
+@@ -54,9 +54,4 @@ if conf.has('WITH_INTERFACE')
+     'name': 'virtinterfaced',
+     'in_file': files('virtinterfaced.init.in')
+   }
+-
+-  sysconf_files += {
+-    'name': 'virtinterfaced',
+-    'file': files('virtinterfaced.sysconf'),
+-  }
+ endif
+diff --git a/src/interface/virtinterfaced.service.in b/src/interface/virtinterfaced.service.in
+index 73d409b81b..3d944e17a9 100644
+--- a/src/interface/virtinterfaced.service.in
++++ b/src/interface/virtinterfaced.service.in
+@@ -13,6 +13,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTINTERFACED_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtinterfaced
+ ExecStart=@sbindir@/virtinterfaced $VIRTINTERFACED_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/interface/virtinterfaced.sysconf b/src/interface/virtinterfaced.sysconf
+deleted file mode 100644
+index 0685da31b8..0000000000
+--- a/src/interface/virtinterfaced.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtinterfaced.service systemd unit
+-
+-VIRTINTERFACED_ARGS="--timeout 120"
+diff --git a/src/libxl/meson.build b/src/libxl/meson.build
+index 9793899106..8347a3c966 100644
+--- a/src/libxl/meson.build
++++ b/src/libxl/meson.build
+@@ -78,11 +78,6 @@ if conf.has('WITH_LIBXL')
+     'in_file': files('virtxend.init.in'),
+   }
+ 
+-  sysconf_files += {
+-    'name': 'virtxend',
+-    'file': files('virtxend.sysconf'),
+-  }
+-
+   virt_install_dirs += [
+     localstatedir / 'lib' / 'libvirt' / 'libxl',
+     runstatedir / 'libvirt' / 'libxl',
+diff --git a/src/libxl/virtxend.service.in b/src/libxl/virtxend.service.in
+index 19b19ce3e6..2b5163e179 100644
+--- a/src/libxl/virtxend.service.in
++++ b/src/libxl/virtxend.service.in
+@@ -18,6 +18,7 @@ ConditionPathExists=/proc/xen/capabilities
+ 
+ [Service]
+ Type=notify
++Environment=VIRTXEND_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtxend
+ ExecStart=@sbindir@/virtxend $VIRTXEND_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/libxl/virtxend.sysconf b/src/libxl/virtxend.sysconf
+deleted file mode 100644
+index 301da47e8d..0000000000
+--- a/src/libxl/virtxend.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtxend.service systemd unit
+-
+-VIRTXEND_ARGS="--timeout 120"
+diff --git a/src/locking/meson.build b/src/locking/meson.build
+index 184d3c3f56..72f7780438 100644
+--- a/src/locking/meson.build
++++ b/src/locking/meson.build
+@@ -156,11 +156,6 @@ if conf.has('WITH_LIBVIRTD')
+     'in_file': files('virtlockd.init.in'),
+   }
+ 
+-  sysconf_files += {
+-    'name': 'virtlockd',
+-    'file': files('virtlockd.sysconf'),
+-  }
+-
+   if conf.has('WITH_SANLOCK')
+     virt_helpers += {
+       'name': 'libvirt_sanlock_helper',
+diff --git a/src/locking/virtlockd.service.in b/src/locking/virtlockd.service.in
+index 4a6fab05ab..19271d1e7d 100644
+--- a/src/locking/virtlockd.service.in
++++ b/src/locking/virtlockd.service.in
+@@ -7,6 +7,7 @@ Documentation=man:virtlockd(8)
+ Documentation=https://libvirt.org
+ 
+ [Service]
++Environment=VIRTLOCKD_ARGS=
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtlockd
+ ExecStart=@sbindir@/virtlockd $VIRTLOCKD_ARGS
+ ExecReload=/bin/kill -USR1 $MAINPID
+diff --git a/src/locking/virtlockd.sysconf b/src/locking/virtlockd.sysconf
+deleted file mode 100644
+index 03aea9e1bc..0000000000
+--- a/src/locking/virtlockd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtlockd.service systemd unit
+-
+-VIRTLOCKD_ARGS=""
+diff --git a/src/logging/meson.build b/src/logging/meson.build
+index 89e06a0d5a..7066f16fad 100644
+--- a/src/logging/meson.build
++++ b/src/logging/meson.build
+@@ -101,11 +101,6 @@ if conf.has('WITH_LIBVIRTD')
+     'name': 'virtlogd',
+     'in_file': files('virtlogd.init.in'),
+   }
+-
+-  sysconf_files += {
+-    'name': 'virtlogd',
+-    'file': files('virtlogd.sysconf'),
+-  }
+ endif
+ 
+ log_inc_dir = include_directories('.')
+diff --git a/src/logging/virtlogd.sysconf b/src/logging/virtlogd.sysconf
+deleted file mode 100644
+index 67993e83ce..0000000000
+--- a/src/logging/virtlogd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtlogd.service systemd unit
+-
+-VIRTLOGD_ARGS=""
+diff --git a/src/lxc/meson.build b/src/lxc/meson.build
+index ad5c659dba..c1f71b43e1 100644
+--- a/src/lxc/meson.build
++++ b/src/lxc/meson.build
+@@ -175,11 +175,6 @@ if conf.has('WITH_LXC')
+     'in_file': files('virtlxcd.init.in'),
+   }
+ 
+-  sysconf_files += {
+-    'name': 'virtlxcd',
+-    'file': files('virtlxcd.sysconf'),
+-  }
+-
+   virt_install_dirs += [
+     localstatedir / 'lib' / 'libvirt' / 'lxc',
+     runstatedir / 'libvirt' / 'lxc',
+diff --git a/src/lxc/virtlxcd.service.in b/src/lxc/virtlxcd.service.in
+index 3af7c1a52d..d58bde9f5d 100644
+--- a/src/lxc/virtlxcd.service.in
++++ b/src/lxc/virtlxcd.service.in
+@@ -18,6 +18,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTLXCD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtlxcd
+ ExecStart=@sbindir@/virtlxcd $VIRTLXCD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/lxc/virtlxcd.sysconf b/src/lxc/virtlxcd.sysconf
+deleted file mode 100644
+index 119a4a23f3..0000000000
+--- a/src/lxc/virtlxcd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtlxcd.service systemd unit
+-
+-VIRTLXCD_ARGS="--timeout 120"
+diff --git a/src/meson.build b/src/meson.build
+index 2408344ef7..fc6c77f5d1 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -208,12 +208,6 @@ virt_daemon_units = []
+ #   * in_file - source init file (required)
+ openrc_init_files = []
+ 
+-# sysconf_files
+-#   install libvirt daemon sysconf files
+-#   * name - daemon name (required)
+-#   * file - source sysconf file (required)
+-sysconf_files = []
+-
+ # virt_install_dirs:
+ #   list of directories to create during installation
+ virt_install_dirs = []
+@@ -868,16 +862,6 @@ if conf.has('WITH_LIBVIRTD')
+   endif
+ endif
+ 
+-if init_script != 'none'
+-  foreach sysconf : sysconf_files
+-    install_data(
+-      sysconf['file'],
+-      install_dir: sysconfdir / 'sysconfig',
+-      rename: [ sysconf['name'] ],
+-    )
+-  endforeach
+-endif
+-
+ if conf.has('WITH_DTRACE_PROBES')
+   custom_target(
+     'libvirt_functions.stp',
+diff --git a/src/network/meson.build b/src/network/meson.build
+index d6fb624bb7..e7c43bc4c4 100644
+--- a/src/network/meson.build
++++ b/src/network/meson.build
+@@ -72,11 +72,6 @@ if conf.has('WITH_NETWORK')
+     'in_file': files('virtnetworkd.init.in'),
+   }
+ 
+-  sysconf_files += {
+-    'name': 'virtnetworkd',
+-    'file': files('virtnetworkd.sysconf'),
+-  }
+-
+   virt_install_dirs += [
+     localstatedir / 'lib' / 'libvirt' / 'network',
+     localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
+diff --git a/src/network/virtnetworkd.service.in b/src/network/virtnetworkd.service.in
+index 4c39d2a5d7..3decfbbf1d 100644
+--- a/src/network/virtnetworkd.service.in
++++ b/src/network/virtnetworkd.service.in
+@@ -16,6 +16,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTNETWORKD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtnetworkd
+ ExecStart=@sbindir@/virtnetworkd $VIRTNETWORKD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/network/virtnetworkd.sysconf b/src/network/virtnetworkd.sysconf
+deleted file mode 100644
+index 93f3a7a327..0000000000
+--- a/src/network/virtnetworkd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtnetworkd.service systemd unit
+-
+-VIRTNETWORKD_ARGS="--timeout 120"
+diff --git a/src/node_device/meson.build b/src/node_device/meson.build
+index 15f9c3ad29..5013d825b3 100644
+--- a/src/node_device/meson.build
++++ b/src/node_device/meson.build
+@@ -62,9 +62,4 @@ if conf.has('WITH_NODE_DEVICES')
+     'name': 'virtnodedevd',
+     'in_file': files('virtnodedevd.init.in'),
+   }
+-
+-  sysconf_files += {
+-    'name': 'virtnodedevd',
+-    'file': files('virtnodedevd.sysconf'),
+-  }
+ endif
+diff --git a/src/node_device/virtnodedevd.service.in b/src/node_device/virtnodedevd.service.in
+index d2453dd620..688cf89822 100644
+--- a/src/node_device/virtnodedevd.service.in
++++ b/src/node_device/virtnodedevd.service.in
+@@ -13,6 +13,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTNODEDEVD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtnodedevd
+ ExecStart=@sbindir@/virtnodedevd $VIRTNODEDEVD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/node_device/virtnodedevd.sysconf b/src/node_device/virtnodedevd.sysconf
+deleted file mode 100644
+index fa7faa3a79..0000000000
+--- a/src/node_device/virtnodedevd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtnodedevd.service systemd unit
+-
+-VIRTNODEDEVD_ARGS="--timeout 120"
+diff --git a/src/nwfilter/meson.build b/src/nwfilter/meson.build
+index a21e575925..ebbe712906 100644
+--- a/src/nwfilter/meson.build
++++ b/src/nwfilter/meson.build
+@@ -61,10 +61,5 @@ if conf.has('WITH_NWFILTER')
+     'in_file': files('virtnwfilterd.init.in'),
+   }
+ 
+-  sysconf_files += {
+-    'name': 'virtnwfilterd',
+-    'file': files('virtnwfilterd.sysconf'),
+-  }
+-
+   subdir('xml')
+ endif
+diff --git a/src/nwfilter/virtnwfilterd.service.in b/src/nwfilter/virtnwfilterd.service.in
+index dda7c01a3d..36d00b58f0 100644
+--- a/src/nwfilter/virtnwfilterd.service.in
++++ b/src/nwfilter/virtnwfilterd.service.in
+@@ -13,6 +13,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTNWFILTERD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtnwfilterd
+ ExecStart=@sbindir@/virtnwfilterd $VIRTNWFILTERD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/nwfilter/virtnwfilterd.sysconf b/src/nwfilter/virtnwfilterd.sysconf
+deleted file mode 100644
+index 80cc645ba5..0000000000
+--- a/src/nwfilter/virtnwfilterd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtnwfilterd.service systemd unit
+-
+-VIRTNWFILTERD_ARGS="--timeout 120"
+diff --git a/src/qemu/meson.build b/src/qemu/meson.build
+index 66ef594006..5f82f687c1 100644
+--- a/src/qemu/meson.build
++++ b/src/qemu/meson.build
+@@ -165,11 +165,6 @@ if conf.has('WITH_QEMU')
+     'in_file': files('virtqemud.init.in'),
+   }
+ 
+-  sysconf_files += {
+-    'name': 'virtqemud',
+-    'file': files('virtqemud.sysconf'),
+-  }
+-
+   if conf.has('WITH_SYSCTL')
+     install_data(
+       'postcopy-migration.sysctl',
+diff --git a/src/qemu/virtqemud.service.in b/src/qemu/virtqemud.service.in
+index 20e1b43a6e..551eb4d405 100644
+--- a/src/qemu/virtqemud.service.in
++++ b/src/qemu/virtqemud.service.in
+@@ -20,6 +20,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTQEMUD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtqemud
+ ExecStart=@sbindir@/virtqemud $VIRTQEMUD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/qemu/virtqemud.sysconf b/src/qemu/virtqemud.sysconf
+deleted file mode 100644
+index 87b626e3ed..0000000000
+--- a/src/qemu/virtqemud.sysconf
++++ /dev/null
+@@ -1,12 +0,0 @@
+-# Customizations for the virtqemud.service systemd unit
+-
+-VIRTQEMUD_ARGS="--timeout 120"
+-
+-# Override the QEMU/SDL default audio driver probing when
+-# starting virtual machines using SDL graphics
+-#
+-# NB these have no effect for VMs using VNC, unless vnc_allow_host_audio
+-# is enabled in /etc/libvirt/qemu.conf
+-#QEMU_AUDIO_DRV=sdl
+-#
+-#SDL_AUDIODRIVER=pulse
+diff --git a/src/remote/libvirtd.service.in b/src/remote/libvirtd.service.in
+index cc0d4e3693..5d4d412fcc 100644
+--- a/src/remote/libvirtd.service.in
++++ b/src/remote/libvirtd.service.in
+@@ -28,6 +28,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=LIBVIRTD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/libvirtd
+ ExecStart=@sbindir@/libvirtd $LIBVIRTD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/remote/libvirtd.sysconf b/src/remote/libvirtd.sysconf
+deleted file mode 100644
+index 18aec1ba67..0000000000
+--- a/src/remote/libvirtd.sysconf
++++ /dev/null
+@@ -1,21 +0,0 @@
+-# Customizations for the libvirtd.service systemd unit
+-
+-# Default behaviour is for libvirtd.service to start on boot
+-# so that VM autostart can be performed. We then want it to
+-# shutdown again if nothing was started and rely on systemd
+-# socket activation to start it again when some client app
+-# connects.
+-LIBVIRTD_ARGS="--timeout 120"
+-
+-# If systemd socket activation is disabled, then the following
+-# can be used to listen on TCP/TLS sockets
+-#LIBVIRTD_ARGS="--listen"
+-
+-# Override the QEMU/SDL default audio driver probing when
+-# starting virtual machines using SDL graphics
+-#
+-# NB these have no effect for VMs using VNC, unless vnc_allow_host_audio
+-# is enabled in /etc/libvirt/qemu.conf
+-#QEMU_AUDIO_DRV=sdl
+-#
+-#SDL_AUDIODRIVER=pulse
+diff --git a/src/remote/meson.build b/src/remote/meson.build
+index 0a188268b5..fc98d0e5be 100644
+--- a/src/remote/meson.build
++++ b/src/remote/meson.build
+@@ -204,11 +204,6 @@ if conf.has('WITH_REMOTE')
+       'confd': files('libvirtd.confd'),
+     }
+ 
+-    sysconf_files += {
+-      'name': 'libvirtd',
+-      'file': files('libvirtd.sysconf'),
+-    }
+-
+     virt_daemons += {
+       'name': 'virtproxyd',
+       'c_args': [
+@@ -239,11 +234,6 @@ if conf.has('WITH_REMOTE')
+       'confd': files('virtproxyd.confd'),
+     }
+ 
+-    sysconf_files += {
+-      'name': 'virtproxyd',
+-      'file': files('virtproxyd.sysconf'),
+-    }
+-
+     virt_install_dirs += [
+       localstatedir / 'log' / 'libvirt',
+     ]
+diff --git a/src/remote/virtproxyd.service.in b/src/remote/virtproxyd.service.in
+index f43ce9ee6e..10e8cf7263 100644
+--- a/src/remote/virtproxyd.service.in
++++ b/src/remote/virtproxyd.service.in
+@@ -13,6 +13,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTPROXYD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtproxyd
+ ExecStart=@sbindir@/virtproxyd $VIRTPROXYD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/remote/virtproxyd.sysconf b/src/remote/virtproxyd.sysconf
+deleted file mode 100644
+index 0fc5c61096..0000000000
+--- a/src/remote/virtproxyd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtproxyd.service systemd unit
+-
+-VIRTPROXYD_ARGS="--timeout 120"
+diff --git a/src/secret/meson.build b/src/secret/meson.build
+index a487055cde..efc0ebb1e6 100644
+--- a/src/secret/meson.build
++++ b/src/secret/meson.build
+@@ -43,9 +43,4 @@ if conf.has('WITH_SECRETS')
+     'name': 'virtsecretd',
+     'in_file': files('virtsecretd.init.in'),
+   }
+-
+-  sysconf_files += {
+-    'name': 'virtsecretd',
+-    'file': files('virtsecretd.sysconf'),
+-  }
+ endif
+diff --git a/src/secret/virtsecretd.service.in b/src/secret/virtsecretd.service.in
+index 8444142a3a..cbd63fe0b2 100644
+--- a/src/secret/virtsecretd.service.in
++++ b/src/secret/virtsecretd.service.in
+@@ -13,6 +13,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTSECRETD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtsecretd
+ ExecStart=@sbindir@/virtsecretd $VIRTSECRETD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/secret/virtsecretd.sysconf b/src/secret/virtsecretd.sysconf
+deleted file mode 100644
+index 2247d05964..0000000000
+--- a/src/secret/virtsecretd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtsecretd.service systemd unit
+-
+-VIRTSECRETD_ARGS="--timeout 120"
+diff --git a/src/storage/meson.build b/src/storage/meson.build
+index d1aa66b147..c43707461d 100644
+--- a/src/storage/meson.build
++++ b/src/storage/meson.build
+@@ -125,11 +125,6 @@ if conf.has('WITH_STORAGE')
+     'name': 'virtstoraged',
+     'in_file': files('virtstoraged.init.in'),
+   }
+-
+-  sysconf_files += {
+-    'name': 'virtstoraged',
+-    'file': files('virtstoraged.sysconf'),
+-  }
+ endif
+ 
+ if conf.has('WITH_STORAGE_DISK')
+diff --git a/src/storage/virtstoraged.service.in b/src/storage/virtstoraged.service.in
+index fc3e9a1b69..f72f8426fd 100644
+--- a/src/storage/virtstoraged.service.in
++++ b/src/storage/virtstoraged.service.in
+@@ -15,6 +15,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTSTORAGED_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtstoraged
+ ExecStart=@sbindir@/virtstoraged $VIRTSTORAGED_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/storage/virtstoraged.sysconf b/src/storage/virtstoraged.sysconf
+deleted file mode 100644
+index 122373eb7c..0000000000
+--- a/src/storage/virtstoraged.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtstoraged.service systemd unit
+-
+-VIRTSTORAGED_ARGS="--timeout 120"
+diff --git a/src/vbox/meson.build b/src/vbox/meson.build
+index df0cfb40e8..240f2389a9 100644
+--- a/src/vbox/meson.build
++++ b/src/vbox/meson.build
+@@ -68,9 +68,4 @@ if conf.has('WITH_VBOX')
+     'name': 'virtvboxd',
+     'in_file': files('virtvboxd.init.in'),
+   }
+-
+-  sysconf_files += {
+-    'name': 'virtvboxd',
+-    'file': files('virtvboxd.sysconf'),
+-  }
+ endif
+diff --git a/src/vbox/virtvboxd.service.in b/src/vbox/virtvboxd.service.in
+index ebb31dde07..cfdafc39d2 100644
+--- a/src/vbox/virtvboxd.service.in
++++ b/src/vbox/virtvboxd.service.in
+@@ -14,6 +14,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTVBOXD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtvboxd
+ ExecStart=@sbindir@/virtvboxd $VIRTVBOXD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/vbox/virtvboxd.sysconf b/src/vbox/virtvboxd.sysconf
+deleted file mode 100644
+index 37ad353d54..0000000000
+--- a/src/vbox/virtvboxd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtvboxd.service systemd unit
+-
+-VIRTVBOXD_ARGS="--timeout 120"
+diff --git a/src/vz/meson.build b/src/vz/meson.build
+index 14f7280f66..d102696943 100644
+--- a/src/vz/meson.build
++++ b/src/vz/meson.build
+@@ -58,9 +58,4 @@ if conf.has('WITH_VZ')
+     'name': 'virtvzd',
+     'in_file': files('virtvzd.init.in'),
+   }
+-
+-  sysconf_files += {
+-    'name': 'virtvzd',
+-    'file': files('virtvzd.sysconf'),
+-  }
+ endif
+diff --git a/src/vz/virtvzd.service.in b/src/vz/virtvzd.service.in
+index f551cb8fbf..7636bf2b9e 100644
+--- a/src/vz/virtvzd.service.in
++++ b/src/vz/virtvzd.service.in
+@@ -14,6 +14,7 @@ Documentation=https://libvirt.org
+ 
+ [Service]
+ Type=notify
++Environment=VIRTVZD_ARGS="--timeout 120"
+ EnvironmentFile=-@sysconfdir@/sysconfig/virtvzd
+ ExecStart=@sbindir@/virtvzd $VIRTVZD_ARGS
+ ExecReload=/bin/kill -HUP $MAINPID
+diff --git a/src/vz/virtvzd.sysconf b/src/vz/virtvzd.sysconf
+deleted file mode 100644
+index a86b9dfb6c..0000000000
+--- a/src/vz/virtvzd.sysconf
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Customizations for the virtvzd.service systemd unit
+-
+-VIRTVZD_ARGS="--timeout 120"
+diff --git a/tools/libvirt-guests.sysconf b/tools/libvirt-guests.sysconf
+deleted file mode 100644
+index 4f83edab90..0000000000
+--- a/tools/libvirt-guests.sysconf
++++ /dev/null
+@@ -1,50 +0,0 @@
+-# Customizations for the libvirt-guests.service systemd unit
+-
+-# URIs to check for running guests
+-# example: URIS='default xen:///system vbox+tcp://host/system lxc:///system'
+-#URIS=default
+-
+-# action taken on host boot
+-# - start   all guests which were running on shutdown are started on boot
+-#           regardless on their autostart settings
+-# - ignore  libvirt-guests init script won't start any guest on boot, however,
+-#           guests marked as autostart will still be automatically started by
+-#           libvirtd
+-#ON_BOOT=start
+-
+-# Number of seconds to wait between each guest start. Set to 0 to allow
+-# parallel startup.
+-#START_DELAY=0
+-
+-# action taken on host shutdown
+-# - suspend   all running guests are suspended using virsh managedsave
+-# - shutdown  all running guests are asked to shutdown. Please be careful with
+-#             this settings since there is no way to distinguish between a
+-#             guest which is stuck or ignores shutdown requests and a guest
+-#             which just needs a long time to shutdown. When setting
+-#             ON_SHUTDOWN=shutdown, you must also set SHUTDOWN_TIMEOUT to a
+-#             value suitable for your guests.
+-#ON_SHUTDOWN=suspend
+-
+-# Number of guests will be shutdown concurrently, taking effect when
+-# "ON_SHUTDOWN" is set to "shutdown". If Set to 0, guests will be shutdown one
+-# after another. Number of guests on shutdown at any time will not exceed number
+-# set in this variable.
+-#PARALLEL_SHUTDOWN=0
+-
+-# Number of seconds we're willing to wait for a guest to shut down. If parallel
+-# shutdown is enabled, this timeout applies as a timeout for shutting down all
+-# guests on a single URI defined in the variable URIS. If this is 0, then there
+-# is no time out (use with caution, as guests might not respond to a shutdown
+-# request). The default value is 300 seconds (5 minutes).
+-#SHUTDOWN_TIMEOUT=300
+-
+-# If non-zero, try to bypass the file system cache when saving and
+-# restoring guests, even though this may give slower operation for
+-# some file systems.
+-#BYPASS_CACHE=0
+-
+-# If non-zero, try to sync guest time on domain resume. Be aware, that
+-# this requires guest agent with support for time synchronization
+-# running in the guest. By default, this functionality is turned off.
+-#SYNC_TIME=1
+diff --git a/tools/meson.build b/tools/meson.build
+index 2d0aecb90b..f4b4a16c29 100644
+--- a/tools/meson.build
++++ b/tools/meson.build
+@@ -308,12 +308,6 @@ if conf.has('WITH_LIBVIRTD')
+   )
+ 
+   if init_script == 'systemd'
+-    install_data(
+-      'libvirt-guests.sysconf',
+-      install_dir: sysconfdir / 'sysconfig',
+-      rename: 'libvirt-guests',
+-    )
+-
+     configure_file(
+       input: 'libvirt-guests.service.in',
+       output: '@BASENAME@',
+-- 
+2.35.0
+
diff --git a/SOURCES/libvirt-util-Fix-machined-servicename.patch b/SOURCES/libvirt-util-Fix-machined-servicename.patch
new file mode 100644
index 0000000..bdab8fb
--- /dev/null
+++ b/SOURCES/libvirt-util-Fix-machined-servicename.patch
@@ -0,0 +1,71 @@
+From f38b129e38b73cb20a2d858de7b593d09380e548 Mon Sep 17 00:00:00 2001
+Message-Id: <f38b129e38b73cb20a2d858de7b593d09380e548@dist-git>
+From: Martin Kletzander <mkletzan@redhat.com>
+Date: Wed, 23 Feb 2022 10:45:28 +0100
+Subject: [PATCH] util: Fix machined servicename
+
+Commit 4e42686adef8 wrongly assumed how g_variant_new_parsed() works and broke
+starting of domains on systems with systemd (machined).
+
+Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
+Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
+(cherry picked from commit a64e666a112d4d6299d1b73704d176283bc42b19)
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1868537
+
+Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
+---
+ src/util/virsystemd.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c
+index f156c2f39a..a8af80c495 100644
+--- a/src/util/virsystemd.c
++++ b/src/util/virsystemd.c
+@@ -360,6 +360,7 @@ int virSystemdCreateMachine(const char *name,
+     g_autofree char *creatorname = NULL;
+     g_autofree char *slicename = NULL;
+     g_autofree char *scopename = NULL;
++    g_autofree char *servicename = NULL;
+     static int hasCreateWithNetwork = 1;
+ 
+     if ((rc = virSystemdHasMachined()) < 0)
+@@ -369,6 +370,7 @@ int virSystemdCreateMachine(const char *name,
+         return -1;
+ 
+     creatorname = g_strdup_printf("libvirt-%s", drivername);
++    servicename = g_strdup_printf("virt%sd.service", drivername);
+ 
+     if (partition) {
+         if (!(slicename = virSystemdMakeSliceName(partition)))
+@@ -440,11 +442,10 @@ int virSystemdCreateMachine(const char *name,
+         gnicindexes = g_variant_new_fixed_array(G_VARIANT_TYPE("i"),
+                                                 nicindexes, nnicindexes, sizeof(int));
+         gprops = g_variant_new_parsed("[('Slice', <%s>),"
+-                                      " ('After', <['libvirtd.service']>),"
+-                                      " ('After', <['virt%sd.service']>),"
++                                      " ('After', <['libvirtd.service', %s]>),"
+                                       " ('Before', <['virt-guest-shutdown.target']>)]",
+                                       slicename,
+-                                      drivername);
++                                      servicename);
+         message = g_variant_new("(s@ayssus@ai@a(sv))",
+                                 name,
+                                 guuid,
+@@ -490,11 +491,10 @@ int virSystemdCreateMachine(const char *name,
+         guuid = g_variant_new_fixed_array(G_VARIANT_TYPE("y"),
+                                           uuid, 16, sizeof(unsigned char));
+         gprops = g_variant_new_parsed("[('Slice', <%s>),"
+-                                      " ('After', <['libvirtd.service']>),"
+-                                      " ('After', <['virt%sd.service']>),"
++                                      " ('After', <['libvirtd.service', %s]>),"
+                                       " ('Before', <['virt-guest-shutdown.target']>)]",
+                                       slicename,
+-                                      drivername);
++                                      servicename);
+         message = g_variant_new("(s@ayssus@a(sv))",
+                                 name,
+                                 guuid,
+-- 
+2.35.1
+
diff --git a/SOURCES/symlinks b/SOURCES/symlinks
new file mode 100644
index 0000000..54c634d
--- /dev/null
+++ b/SOURCES/symlinks
@@ -0,0 +1,1123 @@
+.ctags.d/libvirt.ctags ../.ctags
+tests/virt-admin-self-test ./virsh-self-test
+tests/genericxml2xmloutdata/device-backenddomain.xml ../genericxml2xmlindata/device-backenddomain.xml
+tests/networkxml2xmlin/leasetime-hours.xml ../networkxml2confdata/leasetime-hours.xml
+tests/networkxml2xmlin/leasetime-infinite.xml ../networkxml2confdata/leasetime-infinite.xml
+tests/networkxml2xmlin/leasetime-minutes.xml ../networkxml2confdata/leasetime-minutes.xml
+tests/networkxml2xmlin/leasetime-seconds.xml ../networkxml2confdata/leasetime-seconds.xml
+tests/networkxml2xmlout/leasetime-hours.xml ../networkxml2xmlin/leasetime-hours.xml
+tests/networkxml2xmlout/leasetime-infinite.xml ../networkxml2xmlin/leasetime-infinite.xml
+tests/networkxml2xmlout/leasetime-minutes.xml ../networkxml2xmlin/leasetime-minutes.xml
+tests/networkxml2xmlout/leasetime-seconds.xml ../networkxml2xmlin/leasetime-seconds.xml
+tests/nodedevxml2xmlout/DVD_GCC_4247N.xml ../nodedevschemadata/DVD_GCC_4247N.xml
+tests/nodedevxml2xmlout/DVD_with_media.xml ../nodedevschemadata/DVD_with_media.xml
+tests/nodedevxml2xmlout/ap_07_0038.xml ../nodedevschemadata/ap_07_0038.xml
+tests/nodedevxml2xmlout/ap_card07.xml ../nodedevschemadata/ap_card07.xml
+tests/nodedevxml2xmlout/ap_matrix.xml ../nodedevschemadata/ap_matrix.xml
+tests/nodedevxml2xmlout/ap_matrix_mdev_types.xml ../nodedevschemadata/ap_matrix_mdev_types.xml
+tests/nodedevxml2xmlout/ccw_0_0_ffff.xml ../nodedevschemadata/ccw_0_0_ffff.xml
+tests/nodedevxml2xmlout/computer.xml ../nodedevschemadata/computer.xml
+tests/nodedevxml2xmlout/css_0_0_fffe_mdev_types.xml ../nodedevschemadata/css_0_0_fffe_mdev_types.xml
+tests/nodedevxml2xmlout/css_0_0_ffff.xml ../nodedevschemadata/css_0_0_ffff.xml
+tests/nodedevxml2xmlout/drm_renderD129.xml ../nodedevschemadata/drm_renderD129.xml
+tests/nodedevxml2xmlout/mdev_3627463d_b7f0_4fea_b468_f1da537d301b.xml ../nodedevschemadata/mdev_3627463d_b7f0_4fea_b468_f1da537d301b.xml
+tests/nodedevxml2xmlout/mdev_ee0b88c4_f554_4dc1_809d_b2a01e8e48ad.xml ../nodedevschemadata/mdev_ee0b88c4_f554_4dc1_809d_b2a01e8e48ad.xml
+tests/nodedevxml2xmlout/net_00_13_02_b9_f9_d3.xml ../nodedevschemadata/net_00_13_02_b9_f9_d3.xml
+tests/nodedevxml2xmlout/net_00_15_58_2f_e9_55.xml ../nodedevschemadata/net_00_15_58_2f_e9_55.xml
+tests/nodedevxml2xmlout/pci_0000_00_02_0_header_type.xml ../nodedevschemadata/pci_0000_00_02_0_header_type.xml
+tests/nodedevxml2xmlout/pci_0000_00_1c_0_header_type.xml ../nodedevschemadata/pci_0000_00_1c_0_header_type.xml
+tests/nodedevxml2xmlout/pci_0000_02_10_7_mdev_types.xml ../nodedevschemadata/pci_0000_02_10_7_mdev_types.xml
+tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov.xml ../nodedevschemadata/pci_0000_02_10_7_sriov.xml
+tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov_pf_vfs_all.xml ../nodedevschemadata/pci_0000_02_10_7_sriov_pf_vfs_all.xml
+tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov_pf_vfs_all_header_type.xml ../nodedevschemadata/pci_0000_02_10_7_sriov_pf_vfs_all_header_type.xml
+tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov_vfs.xml ../nodedevschemadata/pci_0000_02_10_7_sriov_vfs.xml
+tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov_zero_vfs_max_count.xml ../nodedevschemadata/pci_0000_02_10_7_sriov_zero_vfs_max_count.xml
+tests/nodedevxml2xmlout/pci_0000_42_00_0_vpd.xml ../nodedevschemadata/pci_0000_42_00_0_vpd.xml
+tests/nodedevxml2xmlout/pci_1002_71c4.xml ../nodedevschemadata/pci_1002_71c4.xml
+tests/nodedevxml2xmlout/pci_8086_0c0c_snd_hda_intel.xml ../nodedevschemadata/pci_8086_0c0c_snd_hda_intel.xml
+tests/nodedevxml2xmlout/pci_8086_10c9_sriov_pf.xml ../nodedevschemadata/pci_8086_10c9_sriov_pf.xml
+tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host.xml ../nodedevschemadata/pci_8086_27c5_scsi_host.xml
+tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host_0.xml ../nodedevschemadata/pci_8086_27c5_scsi_host_0.xml
+tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host_0_unique_id.xml ../nodedevschemadata/pci_8086_27c5_scsi_host_0_unique_id.xml
+tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host_scsi_device_lun0.xml ../nodedevschemadata/pci_8086_27c5_scsi_host_scsi_device_lun0.xml
+tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host_scsi_host.xml ../nodedevschemadata/pci_8086_27c5_scsi_host_scsi_host.xml
+tests/nodedevxml2xmlout/pci_8086_4238_pcie_wireless.xml ../nodedevschemadata/pci_8086_4238_pcie_wireless.xml
+tests/nodedevxml2xmlout/scsi_target0_0_0.xml ../nodedevschemadata/scsi_target0_0_0.xml
+tests/nodedevxml2xmlout/scsi_target1_0_0.xml ../nodedevschemadata/scsi_target1_0_0.xml
+tests/nodedevxml2xmlout/storage_serial_3600c0ff000d7a2a5d463ff4902000000.xml ../nodedevschemadata/storage_serial_3600c0ff000d7a2a5d463ff4902000000.xml
+tests/nodedevxml2xmlout/storage_serial_SATA_HTS721010G9SA00_MPCZ12Y0GNGWSE.xml ../nodedevschemadata/storage_serial_SATA_HTS721010G9SA00_MPCZ12Y0GNGWSE.xml
+tests/nodedevxml2xmlout/usb_device_1d6b_1_0000_00_1d_0.xml ../nodedevschemadata/usb_device_1d6b_1_0000_00_1d_0.xml
+tests/nodedevxml2xmlout/usb_device_1d6b_1_0000_00_1d_0_if0.xml ../nodedevschemadata/usb_device_1d6b_1_0000_00_1d_0_if0.xml
+tests/qemublocktestdata/imagecreate/qcow2-backing-luks.xml qcow2.xml
+tests/qemublocktestdata/imagecreate/qcow2-backing-qcow2-slice.xml qcow2.xml
+tests/qemublocktestdata/imagecreate/qcow2-backing-qcow2luks.xml qcow2.xml
+tests/qemublocktestdata/imagecreate/qcow2-backing-raw-nbd.xml qcow2.xml
+tests/qemublocktestdata/imagecreate/qcow2-backing-raw-slice.xml qcow2.xml
+tests/qemublocktestdata/imagecreate/qcow2-backing-raw.xml qcow2.xml
+tests/qemublocktestdata/imagecreate/qcow2-luks-encopts-backing.xml qcow2-luks-encopts.xml
+tests/qemufirmwaredata/etc/qemu/firmware/40-ovmf-sb-keys.json ../../../usr/share/qemu/firmware/50-ovmf-sb-keys.json
+tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-doorbell-detach.xml qemuhotplug-base-live+ivshmem-plain.xml
+tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-plain-detach.xml qemuhotplug-base-live.xml
+tests/qemustatusxml2xmldata/backup-pull-out.xml backup-pull-in.xml
+tests/qemustatusxml2xmldata/blockjob-blockdev-out.xml blockjob-blockdev-in.xml
+tests/qemustatusxml2xmldata/blockjob-mirror-out.xml blockjob-mirror-in.xml
+tests/qemustatusxml2xmldata/migration-in-params-out.xml migration-in-params-in.xml
+tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-out.xml migration-out-nbd-bitmaps-in.xml
+tests/qemustatusxml2xmldata/migration-out-params-out.xml migration-out-params-in.xml
+tests/qemustatusxml2xmldata/modern-out.xml modern-in.xml
+tests/qemustatusxml2xmldata/vcpus-multi-out.xml vcpus-multi-in.xml
+tests/qemuvhostuserdata/etc/qemu/vhost-user/40-gpu.json ../../../usr/share/qemu/vhost-user/50-gpu.json
+tests/qemuvhostuserdata/usr/share/qemu/vhost-user/30-gpu.json 50-gpu.json
+tests/qemuvhostuserdata/usr/share/qemu/vhost-user/60-gpu.json 50-gpu.json
+tests/qemuxml2argvdata/aarch64-gic-default-both.args aarch64-gic-v3.args
+tests/qemuxml2argvdata/aarch64-gic-default-both.xml aarch64-gic-default.xml
+tests/qemuxml2argvdata/aarch64-gic-default-v2.args aarch64-gic-v2.args
+tests/qemuxml2argvdata/aarch64-gic-default-v2.xml aarch64-gic-default.xml
+tests/qemuxml2argvdata/aarch64-gic-default-v3.args aarch64-gic-v3.args
+tests/qemuxml2argvdata/aarch64-gic-default-v3.xml aarch64-gic-default.xml
+tests/qemuxml2argvdata/aarch64-gic-default.args aarch64-gic-v2.args
+tests/qemuxml2argvdata/aarch64-gic-none-both.args aarch64-gic-v3.args
+tests/qemuxml2argvdata/aarch64-gic-none-both.xml aarch64-gic-none.xml
+tests/qemuxml2argvdata/aarch64-gic-none-v2.args aarch64-gic-v2.args
+tests/qemuxml2argvdata/aarch64-gic-none-v2.xml aarch64-gic-none.xml
+tests/qemuxml2argvdata/aarch64-gic-none-v3.args aarch64-gic-v3.args
+tests/qemuxml2argvdata/aarch64-gic-none-v3.xml aarch64-gic-none-v2.xml
+tests/qemuxml2argvdata/aarch64-gic-none.args aarch64-gic-v2.args
+tests/qemuxml2argvdata/cpu-check-full.args cpu-check-none.args
+tests/qemuxml2argvdata/cpu-check-partial.args cpu-check-none.args
+tests/qemuxml2argvdata/cpu-numa-memshared-1.xml cpu-numa-memshared.xml
+tests/qemuxml2argvdata/disk-backing-chains-index.x86_64-2.12.0.args disk-backing-chains-noindex.x86_64-2.12.0.args
+tests/qemuxml2argvdata/disk-backing-chains-index.x86_64-latest.args disk-backing-chains-noindex.x86_64-latest.args
+tests/qemuxml2argvdata/mach-virt-console-native.args mach-virt-serial-native.args
+tests/qemuxml2argvdata/mach-virt-serial+console-native.args mach-virt-serial-native.args
+tests/qemuxml2argvdata/mach-virt-serial-compat.args mach-virt-serial-native.args
+tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.xml memory-hotplug-nvdimm-ppc64.xml
+tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.xml memory-hotplug-ppc64-nonuma.xml
+tests/qemuxml2argvdata/pci-rom-disabled-invalid.args pci-rom-disabled.args
+tests/qemuxml2argvdata/ppc64-usb-controller-legacy.xml ppc64-usb-controller.xml
+tests/qemuxml2argvdata/ppc64-usb-controller-qemu-xhci.xml ppc64-usb-controller.xml
+tests/qemuxml2argvdata/pseries-console-native.args pseries-serial-native.args
+tests/qemuxml2argvdata/pseries-features-ccf.xml pseries-features.xml
+tests/qemuxml2argvdata/pseries-features-cfpc.xml pseries-features.xml
+tests/qemuxml2argvdata/pseries-features-hpt-pagesize.xml pseries-features.xml
+tests/qemuxml2argvdata/pseries-features-htm.xml pseries-features.xml
+tests/qemuxml2argvdata/pseries-features-ibs.xml pseries-features.xml
+tests/qemuxml2argvdata/pseries-features-nested-hv.xml pseries-features.xml
+tests/qemuxml2argvdata/pseries-features-sbbc.xml pseries-features.xml
+tests/qemuxml2argvdata/pseries-serial+console-native.args pseries-serial-native.args
+tests/qemuxml2argvdata/pseries-serial-compat.args pseries-serial-native.args
+tests/qemuxml2argvdata/q35-virtio-pci.xml q35-pcie.xml
+tests/qemuxml2argvdata/usb-controller-default-unavailable-q35.xml usb-controller-default-q35.xml
+tests/qemuxml2argvdata/usb-controller-explicit-unavailable-q35.xml usb-controller-explicit-q35.xml
+tests/qemuxml2argvdata/usb-controller-qemu-xhci-unavailable.xml usb-controller-qemu-xhci.xml
+tests/qemuxml2argvdata/user-aliases2.args boot-floppy-q35.args
+tests/qemuxml2xmloutdata/aarch64-gic-default-both.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
+tests/qemuxml2xmloutdata/aarch64-gic-default-v2.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
+tests/qemuxml2xmloutdata/aarch64-gic-default-v3.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
+tests/qemuxml2xmloutdata/aarch64-gic-default.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
+tests/qemuxml2xmloutdata/aarch64-gic-host.xml ../qemuxml2argvdata/aarch64-gic-host.xml
+tests/qemuxml2xmloutdata/aarch64-gic-none-both.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
+tests/qemuxml2xmloutdata/aarch64-gic-none-v2.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
+tests/qemuxml2xmloutdata/aarch64-gic-none-v3.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
+tests/qemuxml2xmloutdata/aarch64-gic-none.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
+tests/qemuxml2xmloutdata/aarch64-gic-v2.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
+tests/qemuxml2xmloutdata/aarch64-gic-v3.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
+tests/qemuxml2xmloutdata/audio-alsa-best.xml ../qemuxml2argvdata/audio-alsa-best.xml
+tests/qemuxml2xmloutdata/audio-alsa-full.xml ../qemuxml2argvdata/audio-alsa-full.xml
+tests/qemuxml2xmloutdata/audio-alsa-minimal.xml ../qemuxml2argvdata/audio-alsa-minimal.xml
+tests/qemuxml2xmloutdata/audio-coreaudio-best.xml ../qemuxml2argvdata/audio-coreaudio-best.xml
+tests/qemuxml2xmloutdata/audio-coreaudio-full.xml ../qemuxml2argvdata/audio-coreaudio-full.xml
+tests/qemuxml2xmloutdata/audio-coreaudio-minimal.xml ../qemuxml2argvdata/audio-coreaudio-minimal.xml
+tests/qemuxml2xmloutdata/audio-file-best.xml ../qemuxml2argvdata/audio-file-best.xml
+tests/qemuxml2xmloutdata/audio-file-full.xml ../qemuxml2argvdata/audio-file-full.xml
+tests/qemuxml2xmloutdata/audio-file-minimal.xml ../qemuxml2argvdata/audio-file-minimal.xml
+tests/qemuxml2xmloutdata/audio-jack-full.xml ../qemuxml2argvdata/audio-jack-full.xml
+tests/qemuxml2xmloutdata/audio-many-backends.x86_64-latest.xml ../qemuxml2argvdata/audio-many-backends.xml
+tests/qemuxml2xmloutdata/audio-none-best.xml ../qemuxml2argvdata/audio-none-best.xml
+tests/qemuxml2xmloutdata/audio-none-full.xml ../qemuxml2argvdata/audio-none-full.xml
+tests/qemuxml2xmloutdata/audio-none-minimal.xml ../qemuxml2argvdata/audio-none-minimal.xml
+tests/qemuxml2xmloutdata/audio-oss-best.xml ../qemuxml2argvdata/audio-oss-best.xml
+tests/qemuxml2xmloutdata/audio-oss-full.xml ../qemuxml2argvdata/audio-oss-full.xml
+tests/qemuxml2xmloutdata/audio-oss-minimal.xml ../qemuxml2argvdata/audio-oss-minimal.xml
+tests/qemuxml2xmloutdata/audio-pulseaudio-best.xml ../qemuxml2argvdata/audio-pulseaudio-best.xml
+tests/qemuxml2xmloutdata/audio-pulseaudio-full.xml ../qemuxml2argvdata/audio-pulseaudio-full.xml
+tests/qemuxml2xmloutdata/audio-pulseaudio-minimal.xml ../qemuxml2argvdata/audio-pulseaudio-minimal.xml
+tests/qemuxml2xmloutdata/audio-sdl-best.xml ../qemuxml2argvdata/audio-sdl-best.xml
+tests/qemuxml2xmloutdata/audio-sdl-full.xml ../qemuxml2argvdata/audio-sdl-full.xml
+tests/qemuxml2xmloutdata/audio-sdl-minimal.xml ../qemuxml2argvdata/audio-sdl-minimal.xml
+tests/qemuxml2xmloutdata/audio-spice-best.xml ../qemuxml2argvdata/audio-spice-best.xml
+tests/qemuxml2xmloutdata/audio-spice-full.xml ../qemuxml2argvdata/audio-spice-full.xml
+tests/qemuxml2xmloutdata/audio-spice-minimal.xml ../qemuxml2argvdata/audio-spice-minimal.xml
+tests/qemuxml2xmloutdata/blkdeviotune-group-num.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-group-num.xml
+tests/qemuxml2xmloutdata/blkdeviotune-max-length.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-max-length.xml
+tests/qemuxml2xmloutdata/blkdeviotune-max.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-max.xml
+tests/qemuxml2xmloutdata/boot-floppy-q35.xml ../qemuxml2argvdata/boot-floppy-q35.xml
+tests/qemuxml2xmloutdata/clock-realtime.xml ../qemuxml2argvdata/clock-realtime.xml
+tests/qemuxml2xmloutdata/clock-timer-armvtimer.aarch64-latest.xml ../qemuxml2argvdata/clock-timer-armvtimer.xml
+tests/qemuxml2xmloutdata/disk-detect-zeroes.x86_64-latest.xml ../qemuxml2argvdata/disk-detect-zeroes.xml
+tests/qemuxml2xmloutdata/disk-nvme.xml ../qemuxml2argvdata/disk-nvme.xml
+tests/qemuxml2xmloutdata/disk-virtio-queues.x86_64-latest.xml ../qemuxml2argvdata/disk-virtio-queues.xml
+tests/qemuxml2xmloutdata/disk-virtio-scsi-reservations.xml ../qemuxml2argvdata/disk-virtio-scsi-reservations.xml
+tests/qemuxml2xmloutdata/downscript.xml ../qemuxml2argvdata/downscript.xml
+tests/qemuxml2xmloutdata/encrypted-disk-usage.xml ../qemuxml2argvdata/encrypted-disk-usage.xml
+tests/qemuxml2xmloutdata/fd-memory-no-numa-topology.xml ../qemuxml2argvdata/fd-memory-no-numa-topology.xml
+tests/qemuxml2xmloutdata/fd-memory-numa-topology.xml ../qemuxml2argvdata/fd-memory-numa-topology.xml
+tests/qemuxml2xmloutdata/fd-memory-numa-topology2.xml ../qemuxml2argvdata/fd-memory-numa-topology2.xml
+tests/qemuxml2xmloutdata/fd-memory-numa-topology3.xml ../qemuxml2argvdata/fd-memory-numa-topology3.xml
+tests/qemuxml2xmloutdata/fd-memory-numa-topology4.x86_64-latest.xml ../qemuxml2argvdata/fd-memory-numa-topology4.xml
+tests/qemuxml2xmloutdata/hugepages-default-2M.xml ../qemuxml2argvdata/hugepages-default-2M.xml
+tests/qemuxml2xmloutdata/hugepages-default-system-size.xml ../qemuxml2argvdata/hugepages-default-system-size.xml
+tests/qemuxml2xmloutdata/hugepages-memaccess.xml ../qemuxml2argvdata/hugepages-memaccess.xml
+tests/qemuxml2xmloutdata/hugepages-memaccess2.xml ../qemuxml2argvdata/hugepages-memaccess2.xml
+tests/qemuxml2xmloutdata/hugepages-numa-default-dimm.xml ../qemuxml2argvdata/hugepages-numa-default-dimm.xml
+tests/qemuxml2xmloutdata/hugepages-nvdimm.xml ../qemuxml2argvdata/hugepages-nvdimm.xml
+tests/qemuxml2xmloutdata/input-linux.x86_64-latest.xml ../qemuxml2argvdata/input-linux.xml
+tests/qemuxml2xmloutdata/intel-iommu-aw-bits.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu-aw-bits.xml
+tests/qemuxml2xmloutdata/intel-iommu-caching-mode.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu-caching-mode.xml
+tests/qemuxml2xmloutdata/intel-iommu-device-iotlb.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu-device-iotlb.xml
+tests/qemuxml2xmloutdata/intel-iommu-eim.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu-eim.xml
+tests/qemuxml2xmloutdata/intel-iommu.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu.xml
+tests/qemuxml2xmloutdata/kvm-features-off.xml ../qemuxml2argvdata/kvm-features-off.xml
+tests/qemuxml2xmloutdata/kvm-features.xml ../qemuxml2argvdata/kvm-features.xml
+tests/qemuxml2xmloutdata/luks-disks.x86_64-latest.xml ../qemuxml2argvdata/luks-disks.xml
+tests/qemuxml2xmloutdata/mach-virt-console-native.xml mach-virt-serial-compat.xml
+tests/qemuxml2xmloutdata/mach-virt-serial+console-native.xml mach-virt-serial-compat.xml
+tests/qemuxml2xmloutdata/mach-virt-serial-native.xml mach-virt-serial-compat.xml
+tests/qemuxml2xmloutdata/memfd-memory-default-hugepage.x86_64-latest.xml ../qemuxml2argvdata/memfd-memory-default-hugepage.xml
+tests/qemuxml2xmloutdata/memfd-memory-numa.x86_64-latest.xml ../qemuxml2argvdata/memfd-memory-numa.xml
+tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-access.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-access.xml
+tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-align.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-align.xml
+tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-label.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-label.xml
+tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-pmem.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml
+tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-readonly.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml
+tests/qemuxml2xmloutdata/memory-hotplug-nvdimm.xml ../qemuxml2argvdata/memory-hotplug-nvdimm.xml
+tests/qemuxml2xmloutdata/memory-hotplug-ppc64-nonuma.xml ../qemuxml2argvdata/memory-hotplug-ppc64-nonuma.xml
+tests/qemuxml2xmloutdata/memory-hotplug-virtio-mem.x86_64-latest.xml ../qemuxml2argvdata/memory-hotplug-virtio-mem.xml
+tests/qemuxml2xmloutdata/memory-hotplug-virtio-pmem.x86_64-latest.xml ../qemuxml2argvdata/memory-hotplug-virtio-pmem.xml
+tests/qemuxml2xmloutdata/net-user-addr.xml ../qemuxml2argvdata/net-user-addr.xml
+tests/qemuxml2xmloutdata/net-virtio-teaming-hostdev.xml ../qemuxml2argvdata/net-virtio-teaming-hostdev.xml
+tests/qemuxml2xmloutdata/numatune-hmat.xml ../qemuxml2argvdata/numatune-hmat.xml
+tests/qemuxml2xmloutdata/numatune-memnode-restrictive-mode.x86_64-latest.xml ../qemuxml2argvdata/numatune-memnode-restrictive-mode.xml
+tests/qemuxml2xmloutdata/numatune-no-vcpu.xml ../qemuxml2argvdata/numatune-no-vcpu.xml
+tests/qemuxml2xmloutdata/os-firmware-efi-no-enrolled-keys.x86_64-latest.xml ../qemuxml2argvdata/os-firmware-efi-no-enrolled-keys.xml
+tests/qemuxml2xmloutdata/pages-dimm-discard.xml ../qemuxml2argvdata/pages-dimm-discard.xml
+tests/qemuxml2xmloutdata/pages-discard-hugepages.xml ../qemuxml2argvdata/pages-discard-hugepages.xml
+tests/qemuxml2xmloutdata/pages-discard.xml ../qemuxml2argvdata/pages-discard.xml
+tests/qemuxml2xmloutdata/pc-i440fx-acpi-root-hotplug-disable.x86_64-latest.xml ../qemuxml2argvdata/pc-i440fx-acpi-root-hotplug-disable.xml
+tests/qemuxml2xmloutdata/pc-i440fx-acpi-root-hotplug-enable.x86_64-latest.xml ../qemuxml2argvdata/pc-i440fx-acpi-root-hotplug-enable.xml
+tests/qemuxml2xmloutdata/pseries-console-native.xml pseries-serial-native.xml
+tests/qemuxml2xmloutdata/pseries-serial+console-native.xml pseries-serial-native.xml
+tests/qemuxml2xmloutdata/pseries-serial-compat.xml pseries-serial-native.xml
+tests/qemuxml2xmloutdata/serial-tcp-tlsx509-chardev-notls.xml ../qemuxml2argvdata/serial-tcp-tlsx509-chardev-notls.xml
+tests/qemuxml2xmloutdata/smbios-type-fwcfg.xml ../qemuxml2argvdata/smbios-type-fwcfg.xml
+tests/qemuxml2xmloutdata/tpm-emulator-spapr.ppc64-latest.xml ../qemuxml2argvdata/tpm-emulator-spapr.xml
+tests/qemuxml2xmloutdata/tpm-emulator-tpm2-enc.x86_64-latest.xml ../qemuxml2argvdata/tpm-emulator-tpm2-enc.xml
+tests/qemuxml2xmloutdata/tpm-emulator-tpm2-pstate.x86_64-latest.xml ../qemuxml2argvdata/tpm-emulator-tpm2-pstate.xml
+tests/qemuxml2xmloutdata/tpm-emulator-tpm2.x86_64-latest.xml ../qemuxml2argvdata/tpm-emulator-tpm2.xml
+tests/qemuxml2xmloutdata/tpm-emulator.x86_64-latest.xml ../qemuxml2argvdata/tpm-emulator.xml
+tests/qemuxml2xmloutdata/tpm-passthrough-crb.x86_64-latest.xml ../qemuxml2argvdata/tpm-passthrough-crb.xml
+tests/qemuxml2xmloutdata/tpm-passthrough.x86_64-latest.xml ../qemuxml2argvdata/tpm-passthrough.xml
+tests/qemuxml2xmloutdata/user-aliases.xml ../qemuxml2argvdata/user-aliases.xml
+tests/qemuxml2xmloutdata/vcpu-placement-static.xml ../qemuxml2argvdata/vcpu-placement-static.xml
+tests/qemuxml2xmloutdata/vhost-user-fs-fd-memory.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-fd-memory.xml
+tests/qemuxml2xmloutdata/vhost-user-fs-hugepages.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-hugepages.xml
+tests/qemuxml2xmloutdata/vhost-user-fs-sock.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-sock.xml
+tests/qemuxml2xmloutdata/vhost-vsock-ccw-iommu.s390x-latest.xml ../qemuxml2argvdata/vhost-vsock-ccw-iommu.xml
+tests/qemuxml2xmloutdata/vhost-vsock-ccw.xml ../qemuxml2argvdata/vhost-vsock-ccw.xml
+tests/qemuxml2xmloutdata/vhost-vsock.x86_64-latest.xml ../qemuxml2argvdata/vhost-vsock.xml
+tests/qemuxml2xmloutdata/video-qxl-resolution.xml ../qemuxml2argvdata/video-qxl-resolution.xml
+tests/qemuxml2xmloutdata/video-virtio-vga-gpu-gl.x86_64-latest.xml ../qemuxml2argvdata/video-virtio-vga-gpu-gl.xml
+tests/qemuxml2xmloutdata/virtio-options.x86_64-latest.xml ../qemuxml2argvdata/virtio-options.xml
+tests/qemuxml2xmloutdata/x86_64-default-cpu-tcg-features.x86_64-latest.xml ../qemuxml2argvdata/x86_64-default-cpu-tcg-features.xml
+tests/vircaps2xmldata/linux-basic-dies/system/cpu ../../../virhostcpudata/linux-with-die/cpu
+tests/vircaps2xmldata/linux-basic-dies/system/node ../../../virhostcpudata/linux-with-die/node
+tests/vircaps2xmldata/linux-basic/system/node/node0/cpu0 ../../cpu/cpu0
+tests/vircaps2xmldata/linux-basic/system/node/node0/cpu1 ../../cpu/cpu1
+tests/vircaps2xmldata/linux-basic/system/node/node0/cpu2 ../../cpu/cpu2
+tests/vircaps2xmldata/linux-basic/system/node/node0/cpu3 ../../cpu/cpu3
+tests/vircaps2xmldata/linux-basic/system/node/node1/cpu4 ../../cpu/cpu4
+tests/vircaps2xmldata/linux-basic/system/node/node1/cpu5 ../../cpu/cpu5
+tests/vircaps2xmldata/linux-basic/system/node/node1/cpu6 ../../cpu/cpu6
+tests/vircaps2xmldata/linux-basic/system/node/node1/cpu7 ../../cpu/cpu7
+tests/vircaps2xmldata/linux-basic/system/node/node2/cpu10 ../../cpu/cpu10
+tests/vircaps2xmldata/linux-basic/system/node/node2/cpu11 ../../cpu/cpu11
+tests/vircaps2xmldata/linux-basic/system/node/node2/cpu8 ../../cpu/cpu8
+tests/vircaps2xmldata/linux-basic/system/node/node2/cpu9 ../../cpu/cpu9
+tests/vircaps2xmldata/linux-basic/system/node/node3/cpu12 ../../cpu/cpu12
+tests/vircaps2xmldata/linux-basic/system/node/node3/cpu13 ../../cpu/cpu13
+tests/vircaps2xmldata/linux-basic/system/node/node3/cpu14 ../../cpu/cpu14
+tests/vircaps2xmldata/linux-basic/system/node/node3/cpu15 ../../cpu/cpu15
+tests/vircaps2xmldata/linux-caches/system/node/node0/cpu0 ../../cpu/cpu0
+tests/vircaps2xmldata/linux-caches/system/node/node0/cpu1 ../../cpu/cpu1
+tests/vircaps2xmldata/linux-caches/system/node/node0/cpu2 ../../cpu/cpu2
+tests/vircaps2xmldata/linux-caches/system/node/node0/cpu3 ../../cpu/cpu3
+tests/vircaps2xmldata/linux-caches/system/node/node0/cpu4 ../../cpu/cpu4
+tests/vircaps2xmldata/linux-caches/system/node/node0/cpu5 ../../cpu/cpu5
+tests/vircaps2xmldata/linux-caches/system/node/node0/cpu6 ../../cpu/cpu6
+tests/vircaps2xmldata/linux-caches/system/node/node0/cpu7 ../../cpu/cpu7
+tests/vircaps2xmldata/linux-hmat/system/node/node0/access1/targets/node1 ../../../node1
+tests/vircaps2xmldata/linux-resctrl-cdp/system ../linux-resctrl/system/
+tests/vircaps2xmldata/linux-resctrl-cmt/system ../linux-resctrl/system
+tests/vircaps2xmldata/linux-resctrl-fake-feature/system ../linux-resctrl/system
+tests/vircaps2xmldata/linux-resctrl-skx-twocaches/system/node/node0/cpu0 ../../cpu/cpu0
+tests/vircaps2xmldata/linux-resctrl-skx/system/node/node0/cpu0 ../../cpu/cpu0
+tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu0 ../../cpu/cpu0
+tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu1 ../../cpu/cpu1
+tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu2 ../../cpu/cpu2
+tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu3 ../../cpu/cpu3
+tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu4 ../../cpu/cpu4
+tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu5 ../../cpu/cpu5
+tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu10 ../../cpu/cpu10
+tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu11 ../../cpu/cpu11
+tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu6 ../../cpu/cpu6
+tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu7 ../../cpu/cpu7
+tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu8 ../../cpu/cpu8
+tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu9 ../../cpu/cpu9
+tests/virfilecachedata/9ca150bf3119b75dcac8e8bae4bc3a28e75bc3e262757001e8b953580f5e75ef.cache 5f3154560c130108b282a2aa15b1658aa16923e46497dd8deeb6be287ddb0ca0.cache
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu100 ../../cpu/cpu100
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu101 ../../cpu/cpu101
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu102 ../../cpu/cpu102
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu103 ../../cpu/cpu103
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu12 ../../cpu/cpu12
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu13 ../../cpu/cpu13
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu14 ../../cpu/cpu14
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu144 ../../cpu/cpu144
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu145 ../../cpu/cpu145
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu146 ../../cpu/cpu146
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu147 ../../cpu/cpu147
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu148 ../../cpu/cpu148
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu149 ../../cpu/cpu149
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu15 ../../cpu/cpu15
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu150 ../../cpu/cpu150
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu151 ../../cpu/cpu151
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu152 ../../cpu/cpu152
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu153 ../../cpu/cpu153
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu154 ../../cpu/cpu154
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu155 ../../cpu/cpu155
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu156 ../../cpu/cpu156
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu157 ../../cpu/cpu157
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu158 ../../cpu/cpu158
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu159 ../../cpu/cpu159
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu16 ../../cpu/cpu16
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu17 ../../cpu/cpu17
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu18 ../../cpu/cpu18
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu19 ../../cpu/cpu19
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu20 ../../cpu/cpu20
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu21 ../../cpu/cpu21
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu22 ../../cpu/cpu22
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu23 ../../cpu/cpu23
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu24 ../../cpu/cpu24
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu25 ../../cpu/cpu25
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu26 ../../cpu/cpu26
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu27 ../../cpu/cpu27
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu28 ../../cpu/cpu28
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu29 ../../cpu/cpu29
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu30 ../../cpu/cpu30
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu31 ../../cpu/cpu31
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu32 ../../cpu/cpu32
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu33 ../../cpu/cpu33
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu34 ../../cpu/cpu34
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu35 ../../cpu/cpu35
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu36 ../../cpu/cpu36
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu37 ../../cpu/cpu37
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu38 ../../cpu/cpu38
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu39 ../../cpu/cpu39
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu56 ../../cpu/cpu56
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu57 ../../cpu/cpu57
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu58 ../../cpu/cpu58
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu59 ../../cpu/cpu59
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu60 ../../cpu/cpu60
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu61 ../../cpu/cpu61
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu62 ../../cpu/cpu62
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu63 ../../cpu/cpu63
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu64 ../../cpu/cpu64
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu65 ../../cpu/cpu65
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu66 ../../cpu/cpu66
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu67 ../../cpu/cpu67
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu68 ../../cpu/cpu68
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu69 ../../cpu/cpu69
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu70 ../../cpu/cpu70
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu71 ../../cpu/cpu71
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu80 ../../cpu/cpu80
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu81 ../../cpu/cpu81
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu82 ../../cpu/cpu82
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu83 ../../cpu/cpu83
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu84 ../../cpu/cpu84
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu85 ../../cpu/cpu85
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu86 ../../cpu/cpu86
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu87 ../../cpu/cpu87
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu88 ../../cpu/cpu88
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu89 ../../cpu/cpu89
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu9 ../../cpu/cpu9
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu90 ../../cpu/cpu90
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu91 ../../cpu/cpu91
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu92 ../../cpu/cpu92
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu93 ../../cpu/cpu93
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu94 ../../cpu/cpu94
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu95 ../../cpu/cpu95
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu96 ../../cpu/cpu96
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu97 ../../cpu/cpu97
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu98 ../../cpu/cpu98
+tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu99 ../../cpu/cpu99
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu40 ../../cpu/cpu40
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu41 ../../cpu/cpu41
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu42 ../../cpu/cpu42
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu43 ../../cpu/cpu43
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu44 ../../cpu/cpu44
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu45 ../../cpu/cpu45
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu46 ../../cpu/cpu46
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu47 ../../cpu/cpu47
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu48 ../../cpu/cpu48
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu49 ../../cpu/cpu49
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu50 ../../cpu/cpu50
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu51 ../../cpu/cpu51
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu52 ../../cpu/cpu52
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu53 ../../cpu/cpu53
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu54 ../../cpu/cpu54
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu55 ../../cpu/cpu55
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu72 ../../cpu/cpu72
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu73 ../../cpu/cpu73
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu74 ../../cpu/cpu74
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu75 ../../cpu/cpu75
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu76 ../../cpu/cpu76
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu77 ../../cpu/cpu77
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu78 ../../cpu/cpu78
+tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu79 ../../cpu/cpu79
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu104 ../../cpu/cpu104
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu105 ../../cpu/cpu105
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu106 ../../cpu/cpu106
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu107 ../../cpu/cpu107
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu108 ../../cpu/cpu108
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu109 ../../cpu/cpu109
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu110 ../../cpu/cpu110
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu111 ../../cpu/cpu111
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu112 ../../cpu/cpu112
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu113 ../../cpu/cpu113
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu114 ../../cpu/cpu114
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu115 ../../cpu/cpu115
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu116 ../../cpu/cpu116
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu117 ../../cpu/cpu117
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu118 ../../cpu/cpu118
+tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu119 ../../cpu/cpu119
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu120 ../../cpu/cpu120
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu121 ../../cpu/cpu121
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu122 ../../cpu/cpu122
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu123 ../../cpu/cpu123
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu124 ../../cpu/cpu124
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu125 ../../cpu/cpu125
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu126 ../../cpu/cpu126
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu127 ../../cpu/cpu127
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu128 ../../cpu/cpu128
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu129 ../../cpu/cpu129
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu130 ../../cpu/cpu130
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu131 ../../cpu/cpu131
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu132 ../../cpu/cpu132
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu133 ../../cpu/cpu133
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu134 ../../cpu/cpu134
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu135 ../../cpu/cpu135
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu136 ../../cpu/cpu136
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu137 ../../cpu/cpu137
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu138 ../../cpu/cpu138
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu139 ../../cpu/cpu139
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu140 ../../cpu/cpu140
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu141 ../../cpu/cpu141
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu142 ../../cpu/cpu142
+tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu143 ../../cpu/cpu143
+tests/virhostcpudata/linux-high-ids/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-high-ids/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-high-ids/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-high-ids/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-high-ids/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-high-ids/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-high-ids/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-high-ids/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-high-ids/node/node1/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-high-ids/node/node1/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-high-ids/node/node1/cpu12 ../../cpu/cpu12
+tests/virhostcpudata/linux-high-ids/node/node1/cpu13 ../../cpu/cpu13
+tests/virhostcpudata/linux-high-ids/node/node1/cpu14 ../../cpu/cpu14
+tests/virhostcpudata/linux-high-ids/node/node1/cpu15 ../../cpu/cpu15
+tests/virhostcpudata/linux-high-ids/node/node1/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-high-ids/node/node1/cpu9 ../../cpu/cpu9
+tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-subcores1/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-subcores1/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-subcores1/node/node0/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-subcores1/node/node0/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-subcores1/node/node0/cpu12 ../../cpu/cpu12
+tests/virhostcpudata/linux-subcores1/node/node0/cpu13 ../../cpu/cpu13
+tests/virhostcpudata/linux-subcores1/node/node0/cpu14 ../../cpu/cpu14
+tests/virhostcpudata/linux-subcores1/node/node0/cpu15 ../../cpu/cpu15
+tests/virhostcpudata/linux-subcores1/node/node0/cpu16 ../../cpu/cpu16
+tests/virhostcpudata/linux-subcores1/node/node0/cpu17 ../../cpu/cpu17
+tests/virhostcpudata/linux-subcores1/node/node0/cpu18 ../../cpu/cpu18
+tests/virhostcpudata/linux-subcores1/node/node0/cpu19 ../../cpu/cpu19
+tests/virhostcpudata/linux-subcores1/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-subcores1/node/node0/cpu20 ../../cpu/cpu20
+tests/virhostcpudata/linux-subcores1/node/node0/cpu21 ../../cpu/cpu21
+tests/virhostcpudata/linux-subcores1/node/node0/cpu22 ../../cpu/cpu22
+tests/virhostcpudata/linux-subcores1/node/node0/cpu23 ../../cpu/cpu23
+tests/virhostcpudata/linux-subcores1/node/node0/cpu24 ../../cpu/cpu24
+tests/virhostcpudata/linux-subcores1/node/node0/cpu25 ../../cpu/cpu25
+tests/virhostcpudata/linux-subcores1/node/node0/cpu26 ../../cpu/cpu26
+tests/virhostcpudata/linux-subcores1/node/node0/cpu27 ../../cpu/cpu27
+tests/virhostcpudata/linux-subcores1/node/node0/cpu28 ../../cpu/cpu28
+tests/virhostcpudata/linux-subcores1/node/node0/cpu29 ../../cpu/cpu29
+tests/virhostcpudata/linux-subcores1/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-subcores1/node/node0/cpu30 ../../cpu/cpu30
+tests/virhostcpudata/linux-subcores1/node/node0/cpu31 ../../cpu/cpu31
+tests/virhostcpudata/linux-subcores1/node/node0/cpu32 ../../cpu/cpu32
+tests/virhostcpudata/linux-subcores1/node/node0/cpu33 ../../cpu/cpu33
+tests/virhostcpudata/linux-subcores1/node/node0/cpu34 ../../cpu/cpu34
+tests/virhostcpudata/linux-subcores1/node/node0/cpu35 ../../cpu/cpu35
+tests/virhostcpudata/linux-subcores1/node/node0/cpu36 ../../cpu/cpu36
+tests/virhostcpudata/linux-subcores1/node/node0/cpu37 ../../cpu/cpu37
+tests/virhostcpudata/linux-subcores1/node/node0/cpu38 ../../cpu/cpu38
+tests/virhostcpudata/linux-subcores1/node/node0/cpu39 ../../cpu/cpu39
+tests/virhostcpudata/linux-subcores1/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-subcores1/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-subcores1/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-subcores1/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-subcores1/node/node0/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-subcores1/node/node0/cpu9 ../../cpu/cpu9
+tests/virhostcpudata/linux-subcores1/node/node1/cpu40 ../../cpu/cpu40
+tests/virhostcpudata/linux-subcores1/node/node1/cpu41 ../../cpu/cpu41
+tests/virhostcpudata/linux-subcores1/node/node1/cpu42 ../../cpu/cpu42
+tests/virhostcpudata/linux-subcores1/node/node1/cpu43 ../../cpu/cpu43
+tests/virhostcpudata/linux-subcores1/node/node1/cpu44 ../../cpu/cpu44
+tests/virhostcpudata/linux-subcores1/node/node1/cpu45 ../../cpu/cpu45
+tests/virhostcpudata/linux-subcores1/node/node1/cpu46 ../../cpu/cpu46
+tests/virhostcpudata/linux-subcores1/node/node1/cpu47 ../../cpu/cpu47
+tests/virhostcpudata/linux-subcores1/node/node1/cpu48 ../../cpu/cpu48
+tests/virhostcpudata/linux-subcores1/node/node1/cpu49 ../../cpu/cpu49
+tests/virhostcpudata/linux-subcores1/node/node1/cpu50 ../../cpu/cpu50
+tests/virhostcpudata/linux-subcores1/node/node1/cpu51 ../../cpu/cpu51
+tests/virhostcpudata/linux-subcores1/node/node1/cpu52 ../../cpu/cpu52
+tests/virhostcpudata/linux-subcores1/node/node1/cpu53 ../../cpu/cpu53
+tests/virhostcpudata/linux-subcores1/node/node1/cpu54 ../../cpu/cpu54
+tests/virhostcpudata/linux-subcores1/node/node1/cpu55 ../../cpu/cpu55
+tests/virhostcpudata/linux-subcores1/node/node1/cpu56 ../../cpu/cpu56
+tests/virhostcpudata/linux-subcores1/node/node1/cpu57 ../../cpu/cpu57
+tests/virhostcpudata/linux-subcores1/node/node1/cpu58 ../../cpu/cpu58
+tests/virhostcpudata/linux-subcores1/node/node1/cpu59 ../../cpu/cpu59
+tests/virhostcpudata/linux-subcores1/node/node1/cpu60 ../../cpu/cpu60
+tests/virhostcpudata/linux-subcores1/node/node1/cpu61 ../../cpu/cpu61
+tests/virhostcpudata/linux-subcores1/node/node1/cpu62 ../../cpu/cpu62
+tests/virhostcpudata/linux-subcores1/node/node1/cpu63 ../../cpu/cpu63
+tests/virhostcpudata/linux-subcores1/node/node1/cpu64 ../../cpu/cpu64
+tests/virhostcpudata/linux-subcores1/node/node1/cpu65 ../../cpu/cpu65
+tests/virhostcpudata/linux-subcores1/node/node1/cpu66 ../../cpu/cpu66
+tests/virhostcpudata/linux-subcores1/node/node1/cpu67 ../../cpu/cpu67
+tests/virhostcpudata/linux-subcores1/node/node1/cpu68 ../../cpu/cpu68
+tests/virhostcpudata/linux-subcores1/node/node1/cpu69 ../../cpu/cpu69
+tests/virhostcpudata/linux-subcores1/node/node1/cpu70 ../../cpu/cpu70
+tests/virhostcpudata/linux-subcores1/node/node1/cpu71 ../../cpu/cpu71
+tests/virhostcpudata/linux-subcores1/node/node1/cpu72 ../../cpu/cpu72
+tests/virhostcpudata/linux-subcores1/node/node1/cpu73 ../../cpu/cpu73
+tests/virhostcpudata/linux-subcores1/node/node1/cpu74 ../../cpu/cpu74
+tests/virhostcpudata/linux-subcores1/node/node1/cpu75 ../../cpu/cpu75
+tests/virhostcpudata/linux-subcores1/node/node1/cpu76 ../../cpu/cpu76
+tests/virhostcpudata/linux-subcores1/node/node1/cpu77 ../../cpu/cpu77
+tests/virhostcpudata/linux-subcores1/node/node1/cpu78 ../../cpu/cpu78
+tests/virhostcpudata/linux-subcores1/node/node1/cpu79 ../../cpu/cpu79
+tests/virhostcpudata/linux-subcores1/node/node16/cpu100 ../../cpu/cpu100
+tests/virhostcpudata/linux-subcores1/node/node16/cpu101 ../../cpu/cpu101
+tests/virhostcpudata/linux-subcores1/node/node16/cpu102 ../../cpu/cpu102
+tests/virhostcpudata/linux-subcores1/node/node16/cpu103 ../../cpu/cpu103
+tests/virhostcpudata/linux-subcores1/node/node16/cpu104 ../../cpu/cpu104
+tests/virhostcpudata/linux-subcores1/node/node16/cpu105 ../../cpu/cpu105
+tests/virhostcpudata/linux-subcores1/node/node16/cpu106 ../../cpu/cpu106
+tests/virhostcpudata/linux-subcores1/node/node16/cpu107 ../../cpu/cpu107
+tests/virhostcpudata/linux-subcores1/node/node16/cpu108 ../../cpu/cpu108
+tests/virhostcpudata/linux-subcores1/node/node16/cpu109 ../../cpu/cpu109
+tests/virhostcpudata/linux-subcores1/node/node16/cpu110 ../../cpu/cpu110
+tests/virhostcpudata/linux-subcores1/node/node16/cpu111 ../../cpu/cpu111
+tests/virhostcpudata/linux-subcores1/node/node16/cpu112 ../../cpu/cpu112
+tests/virhostcpudata/linux-subcores1/node/node16/cpu113 ../../cpu/cpu113
+tests/virhostcpudata/linux-subcores1/node/node16/cpu114 ../../cpu/cpu114
+tests/virhostcpudata/linux-subcores1/node/node16/cpu115 ../../cpu/cpu115
+tests/virhostcpudata/linux-subcores1/node/node16/cpu116 ../../cpu/cpu116
+tests/virhostcpudata/linux-subcores1/node/node16/cpu117 ../../cpu/cpu117
+tests/virhostcpudata/linux-subcores1/node/node16/cpu118 ../../cpu/cpu118
+tests/virhostcpudata/linux-subcores1/node/node16/cpu119 ../../cpu/cpu119
+tests/virhostcpudata/linux-subcores1/node/node16/cpu80 ../../cpu/cpu80
+tests/virhostcpudata/linux-subcores1/node/node16/cpu81 ../../cpu/cpu81
+tests/virhostcpudata/linux-subcores1/node/node16/cpu82 ../../cpu/cpu82
+tests/virhostcpudata/linux-subcores1/node/node16/cpu83 ../../cpu/cpu83
+tests/virhostcpudata/linux-subcores1/node/node16/cpu84 ../../cpu/cpu84
+tests/virhostcpudata/linux-subcores1/node/node16/cpu85 ../../cpu/cpu85
+tests/virhostcpudata/linux-subcores1/node/node16/cpu86 ../../cpu/cpu86
+tests/virhostcpudata/linux-subcores1/node/node16/cpu87 ../../cpu/cpu87
+tests/virhostcpudata/linux-subcores1/node/node16/cpu88 ../../cpu/cpu88
+tests/virhostcpudata/linux-subcores1/node/node16/cpu89 ../../cpu/cpu89
+tests/virhostcpudata/linux-subcores1/node/node16/cpu90 ../../cpu/cpu90
+tests/virhostcpudata/linux-subcores1/node/node16/cpu91 ../../cpu/cpu91
+tests/virhostcpudata/linux-subcores1/node/node16/cpu92 ../../cpu/cpu92
+tests/virhostcpudata/linux-subcores1/node/node16/cpu93 ../../cpu/cpu93
+tests/virhostcpudata/linux-subcores1/node/node16/cpu94 ../../cpu/cpu94
+tests/virhostcpudata/linux-subcores1/node/node16/cpu95 ../../cpu/cpu95
+tests/virhostcpudata/linux-subcores1/node/node16/cpu96 ../../cpu/cpu96
+tests/virhostcpudata/linux-subcores1/node/node16/cpu97 ../../cpu/cpu97
+tests/virhostcpudata/linux-subcores1/node/node16/cpu98 ../../cpu/cpu98
+tests/virhostcpudata/linux-subcores1/node/node16/cpu99 ../../cpu/cpu99
+tests/virhostcpudata/linux-subcores1/node/node17/cpu120 ../../cpu/cpu120
+tests/virhostcpudata/linux-subcores1/node/node17/cpu121 ../../cpu/cpu121
+tests/virhostcpudata/linux-subcores1/node/node17/cpu122 ../../cpu/cpu122
+tests/virhostcpudata/linux-subcores1/node/node17/cpu123 ../../cpu/cpu123
+tests/virhostcpudata/linux-subcores1/node/node17/cpu124 ../../cpu/cpu124
+tests/virhostcpudata/linux-subcores1/node/node17/cpu125 ../../cpu/cpu125
+tests/virhostcpudata/linux-subcores1/node/node17/cpu126 ../../cpu/cpu126
+tests/virhostcpudata/linux-subcores1/node/node17/cpu127 ../../cpu/cpu127
+tests/virhostcpudata/linux-subcores1/node/node17/cpu128 ../../cpu/cpu128
+tests/virhostcpudata/linux-subcores1/node/node17/cpu129 ../../cpu/cpu129
+tests/virhostcpudata/linux-subcores1/node/node17/cpu130 ../../cpu/cpu130
+tests/virhostcpudata/linux-subcores1/node/node17/cpu131 ../../cpu/cpu131
+tests/virhostcpudata/linux-subcores1/node/node17/cpu132 ../../cpu/cpu132
+tests/virhostcpudata/linux-subcores1/node/node17/cpu133 ../../cpu/cpu133
+tests/virhostcpudata/linux-subcores1/node/node17/cpu134 ../../cpu/cpu134
+tests/virhostcpudata/linux-subcores1/node/node17/cpu135 ../../cpu/cpu135
+tests/virhostcpudata/linux-subcores1/node/node17/cpu136 ../../cpu/cpu136
+tests/virhostcpudata/linux-subcores1/node/node17/cpu137 ../../cpu/cpu137
+tests/virhostcpudata/linux-subcores1/node/node17/cpu138 ../../cpu/cpu138
+tests/virhostcpudata/linux-subcores1/node/node17/cpu139 ../../cpu/cpu139
+tests/virhostcpudata/linux-subcores1/node/node17/cpu140 ../../cpu/cpu140
+tests/virhostcpudata/linux-subcores1/node/node17/cpu141 ../../cpu/cpu141
+tests/virhostcpudata/linux-subcores1/node/node17/cpu142 ../../cpu/cpu142
+tests/virhostcpudata/linux-subcores1/node/node17/cpu143 ../../cpu/cpu143
+tests/virhostcpudata/linux-subcores1/node/node17/cpu144 ../../cpu/cpu144
+tests/virhostcpudata/linux-subcores1/node/node17/cpu145 ../../cpu/cpu145
+tests/virhostcpudata/linux-subcores1/node/node17/cpu146 ../../cpu/cpu146
+tests/virhostcpudata/linux-subcores1/node/node17/cpu147 ../../cpu/cpu147
+tests/virhostcpudata/linux-subcores1/node/node17/cpu148 ../../cpu/cpu148
+tests/virhostcpudata/linux-subcores1/node/node17/cpu149 ../../cpu/cpu149
+tests/virhostcpudata/linux-subcores1/node/node17/cpu150 ../../cpu/cpu150
+tests/virhostcpudata/linux-subcores1/node/node17/cpu151 ../../cpu/cpu151
+tests/virhostcpudata/linux-subcores1/node/node17/cpu152 ../../cpu/cpu152
+tests/virhostcpudata/linux-subcores1/node/node17/cpu153 ../../cpu/cpu153
+tests/virhostcpudata/linux-subcores1/node/node17/cpu154 ../../cpu/cpu154
+tests/virhostcpudata/linux-subcores1/node/node17/cpu155 ../../cpu/cpu155
+tests/virhostcpudata/linux-subcores1/node/node17/cpu156 ../../cpu/cpu156
+tests/virhostcpudata/linux-subcores1/node/node17/cpu157 ../../cpu/cpu157
+tests/virhostcpudata/linux-subcores1/node/node17/cpu158 ../../cpu/cpu158
+tests/virhostcpudata/linux-subcores1/node/node17/cpu159 ../../cpu/cpu159
+tests/virhostcpudata/linux-subcores2/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-subcores2/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-subcores2/node/node0/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-subcores2/node/node0/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-subcores2/node/node0/cpu12 ../../cpu/cpu12
+tests/virhostcpudata/linux-subcores2/node/node0/cpu13 ../../cpu/cpu13
+tests/virhostcpudata/linux-subcores2/node/node0/cpu14 ../../cpu/cpu14
+tests/virhostcpudata/linux-subcores2/node/node0/cpu15 ../../cpu/cpu15
+tests/virhostcpudata/linux-subcores2/node/node0/cpu16 ../../cpu/cpu16
+tests/virhostcpudata/linux-subcores2/node/node0/cpu17 ../../cpu/cpu17
+tests/virhostcpudata/linux-subcores2/node/node0/cpu18 ../../cpu/cpu18
+tests/virhostcpudata/linux-subcores2/node/node0/cpu19 ../../cpu/cpu19
+tests/virhostcpudata/linux-subcores2/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-subcores2/node/node0/cpu20 ../../cpu/cpu20
+tests/virhostcpudata/linux-subcores2/node/node0/cpu21 ../../cpu/cpu21
+tests/virhostcpudata/linux-subcores2/node/node0/cpu22 ../../cpu/cpu22
+tests/virhostcpudata/linux-subcores2/node/node0/cpu23 ../../cpu/cpu23
+tests/virhostcpudata/linux-subcores2/node/node0/cpu24 ../../cpu/cpu24
+tests/virhostcpudata/linux-subcores2/node/node0/cpu25 ../../cpu/cpu25
+tests/virhostcpudata/linux-subcores2/node/node0/cpu26 ../../cpu/cpu26
+tests/virhostcpudata/linux-subcores2/node/node0/cpu27 ../../cpu/cpu27
+tests/virhostcpudata/linux-subcores2/node/node0/cpu28 ../../cpu/cpu28
+tests/virhostcpudata/linux-subcores2/node/node0/cpu29 ../../cpu/cpu29
+tests/virhostcpudata/linux-subcores2/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-subcores2/node/node0/cpu30 ../../cpu/cpu30
+tests/virhostcpudata/linux-subcores2/node/node0/cpu31 ../../cpu/cpu31
+tests/virhostcpudata/linux-subcores2/node/node0/cpu32 ../../cpu/cpu32
+tests/virhostcpudata/linux-subcores2/node/node0/cpu33 ../../cpu/cpu33
+tests/virhostcpudata/linux-subcores2/node/node0/cpu34 ../../cpu/cpu34
+tests/virhostcpudata/linux-subcores2/node/node0/cpu35 ../../cpu/cpu35
+tests/virhostcpudata/linux-subcores2/node/node0/cpu36 ../../cpu/cpu36
+tests/virhostcpudata/linux-subcores2/node/node0/cpu37 ../../cpu/cpu37
+tests/virhostcpudata/linux-subcores2/node/node0/cpu38 ../../cpu/cpu38
+tests/virhostcpudata/linux-subcores2/node/node0/cpu39 ../../cpu/cpu39
+tests/virhostcpudata/linux-subcores2/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-subcores2/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-subcores2/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-subcores2/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-subcores2/node/node0/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-subcores2/node/node0/cpu9 ../../cpu/cpu9
+tests/virhostcpudata/linux-subcores2/node/node1/cpu40 ../../cpu/cpu40
+tests/virhostcpudata/linux-subcores2/node/node1/cpu41 ../../cpu/cpu41
+tests/virhostcpudata/linux-subcores2/node/node1/cpu42 ../../cpu/cpu42
+tests/virhostcpudata/linux-subcores2/node/node1/cpu43 ../../cpu/cpu43
+tests/virhostcpudata/linux-subcores2/node/node1/cpu44 ../../cpu/cpu44
+tests/virhostcpudata/linux-subcores2/node/node1/cpu45 ../../cpu/cpu45
+tests/virhostcpudata/linux-subcores2/node/node1/cpu46 ../../cpu/cpu46
+tests/virhostcpudata/linux-subcores2/node/node1/cpu47 ../../cpu/cpu47
+tests/virhostcpudata/linux-subcores2/node/node1/cpu48 ../../cpu/cpu48
+tests/virhostcpudata/linux-subcores2/node/node1/cpu49 ../../cpu/cpu49
+tests/virhostcpudata/linux-subcores2/node/node1/cpu50 ../../cpu/cpu50
+tests/virhostcpudata/linux-subcores2/node/node1/cpu51 ../../cpu/cpu51
+tests/virhostcpudata/linux-subcores2/node/node1/cpu52 ../../cpu/cpu52
+tests/virhostcpudata/linux-subcores2/node/node1/cpu53 ../../cpu/cpu53
+tests/virhostcpudata/linux-subcores2/node/node1/cpu54 ../../cpu/cpu54
+tests/virhostcpudata/linux-subcores2/node/node1/cpu55 ../../cpu/cpu55
+tests/virhostcpudata/linux-subcores2/node/node1/cpu56 ../../cpu/cpu56
+tests/virhostcpudata/linux-subcores2/node/node1/cpu57 ../../cpu/cpu57
+tests/virhostcpudata/linux-subcores2/node/node1/cpu58 ../../cpu/cpu58
+tests/virhostcpudata/linux-subcores2/node/node1/cpu59 ../../cpu/cpu59
+tests/virhostcpudata/linux-subcores2/node/node1/cpu60 ../../cpu/cpu60
+tests/virhostcpudata/linux-subcores2/node/node1/cpu61 ../../cpu/cpu61
+tests/virhostcpudata/linux-subcores2/node/node1/cpu62 ../../cpu/cpu62
+tests/virhostcpudata/linux-subcores2/node/node1/cpu63 ../../cpu/cpu63
+tests/virhostcpudata/linux-subcores2/node/node1/cpu64 ../../cpu/cpu64
+tests/virhostcpudata/linux-subcores2/node/node1/cpu65 ../../cpu/cpu65
+tests/virhostcpudata/linux-subcores2/node/node1/cpu66 ../../cpu/cpu66
+tests/virhostcpudata/linux-subcores2/node/node1/cpu67 ../../cpu/cpu67
+tests/virhostcpudata/linux-subcores2/node/node1/cpu68 ../../cpu/cpu68
+tests/virhostcpudata/linux-subcores2/node/node1/cpu69 ../../cpu/cpu69
+tests/virhostcpudata/linux-subcores2/node/node1/cpu70 ../../cpu/cpu70
+tests/virhostcpudata/linux-subcores2/node/node1/cpu71 ../../cpu/cpu71
+tests/virhostcpudata/linux-subcores2/node/node1/cpu72 ../../cpu/cpu72
+tests/virhostcpudata/linux-subcores2/node/node1/cpu73 ../../cpu/cpu73
+tests/virhostcpudata/linux-subcores2/node/node1/cpu74 ../../cpu/cpu74
+tests/virhostcpudata/linux-subcores2/node/node1/cpu75 ../../cpu/cpu75
+tests/virhostcpudata/linux-subcores2/node/node1/cpu76 ../../cpu/cpu76
+tests/virhostcpudata/linux-subcores2/node/node1/cpu77 ../../cpu/cpu77
+tests/virhostcpudata/linux-subcores2/node/node1/cpu78 ../../cpu/cpu78
+tests/virhostcpudata/linux-subcores2/node/node1/cpu79 ../../cpu/cpu79
+tests/virhostcpudata/linux-subcores2/node/node16/cpu100 ../../cpu/cpu100
+tests/virhostcpudata/linux-subcores2/node/node16/cpu101 ../../cpu/cpu101
+tests/virhostcpudata/linux-subcores2/node/node16/cpu102 ../../cpu/cpu102
+tests/virhostcpudata/linux-subcores2/node/node16/cpu103 ../../cpu/cpu103
+tests/virhostcpudata/linux-subcores2/node/node16/cpu104 ../../cpu/cpu104
+tests/virhostcpudata/linux-subcores2/node/node16/cpu105 ../../cpu/cpu105
+tests/virhostcpudata/linux-subcores2/node/node16/cpu106 ../../cpu/cpu106
+tests/virhostcpudata/linux-subcores2/node/node16/cpu107 ../../cpu/cpu107
+tests/virhostcpudata/linux-subcores2/node/node16/cpu108 ../../cpu/cpu108
+tests/virhostcpudata/linux-subcores2/node/node16/cpu109 ../../cpu/cpu109
+tests/virhostcpudata/linux-subcores2/node/node16/cpu110 ../../cpu/cpu110
+tests/virhostcpudata/linux-subcores2/node/node16/cpu111 ../../cpu/cpu111
+tests/virhostcpudata/linux-subcores2/node/node16/cpu112 ../../cpu/cpu112
+tests/virhostcpudata/linux-subcores2/node/node16/cpu113 ../../cpu/cpu113
+tests/virhostcpudata/linux-subcores2/node/node16/cpu114 ../../cpu/cpu114
+tests/virhostcpudata/linux-subcores2/node/node16/cpu115 ../../cpu/cpu115
+tests/virhostcpudata/linux-subcores2/node/node16/cpu116 ../../cpu/cpu116
+tests/virhostcpudata/linux-subcores2/node/node16/cpu117 ../../cpu/cpu117
+tests/virhostcpudata/linux-subcores2/node/node16/cpu118 ../../cpu/cpu118
+tests/virhostcpudata/linux-subcores2/node/node16/cpu119 ../../cpu/cpu119
+tests/virhostcpudata/linux-subcores2/node/node16/cpu80 ../../cpu/cpu80
+tests/virhostcpudata/linux-subcores2/node/node16/cpu81 ../../cpu/cpu81
+tests/virhostcpudata/linux-subcores2/node/node16/cpu82 ../../cpu/cpu82
+tests/virhostcpudata/linux-subcores2/node/node16/cpu83 ../../cpu/cpu83
+tests/virhostcpudata/linux-subcores2/node/node16/cpu84 ../../cpu/cpu84
+tests/virhostcpudata/linux-subcores2/node/node16/cpu85 ../../cpu/cpu85
+tests/virhostcpudata/linux-subcores2/node/node16/cpu86 ../../cpu/cpu86
+tests/virhostcpudata/linux-subcores2/node/node16/cpu87 ../../cpu/cpu87
+tests/virhostcpudata/linux-subcores2/node/node16/cpu88 ../../cpu/cpu88
+tests/virhostcpudata/linux-subcores2/node/node16/cpu89 ../../cpu/cpu89
+tests/virhostcpudata/linux-subcores2/node/node16/cpu90 ../../cpu/cpu90
+tests/virhostcpudata/linux-subcores2/node/node16/cpu91 ../../cpu/cpu91
+tests/virhostcpudata/linux-subcores2/node/node16/cpu92 ../../cpu/cpu92
+tests/virhostcpudata/linux-subcores2/node/node16/cpu93 ../../cpu/cpu93
+tests/virhostcpudata/linux-subcores2/node/node16/cpu94 ../../cpu/cpu94
+tests/virhostcpudata/linux-subcores2/node/node16/cpu95 ../../cpu/cpu95
+tests/virhostcpudata/linux-subcores2/node/node16/cpu96 ../../cpu/cpu96
+tests/virhostcpudata/linux-subcores2/node/node16/cpu97 ../../cpu/cpu97
+tests/virhostcpudata/linux-subcores2/node/node16/cpu98 ../../cpu/cpu98
+tests/virhostcpudata/linux-subcores2/node/node16/cpu99 ../../cpu/cpu99
+tests/virhostcpudata/linux-subcores2/node/node17/cpu120 ../../cpu/cpu120
+tests/virhostcpudata/linux-subcores2/node/node17/cpu121 ../../cpu/cpu121
+tests/virhostcpudata/linux-subcores2/node/node17/cpu122 ../../cpu/cpu122
+tests/virhostcpudata/linux-subcores2/node/node17/cpu123 ../../cpu/cpu123
+tests/virhostcpudata/linux-subcores2/node/node17/cpu124 ../../cpu/cpu124
+tests/virhostcpudata/linux-subcores2/node/node17/cpu125 ../../cpu/cpu125
+tests/virhostcpudata/linux-subcores2/node/node17/cpu126 ../../cpu/cpu126
+tests/virhostcpudata/linux-subcores2/node/node17/cpu127 ../../cpu/cpu127
+tests/virhostcpudata/linux-subcores2/node/node17/cpu128 ../../cpu/cpu128
+tests/virhostcpudata/linux-subcores2/node/node17/cpu129 ../../cpu/cpu129
+tests/virhostcpudata/linux-subcores2/node/node17/cpu130 ../../cpu/cpu130
+tests/virhostcpudata/linux-subcores2/node/node17/cpu131 ../../cpu/cpu131
+tests/virhostcpudata/linux-subcores2/node/node17/cpu132 ../../cpu/cpu132
+tests/virhostcpudata/linux-subcores2/node/node17/cpu133 ../../cpu/cpu133
+tests/virhostcpudata/linux-subcores2/node/node17/cpu134 ../../cpu/cpu134
+tests/virhostcpudata/linux-subcores2/node/node17/cpu135 ../../cpu/cpu135
+tests/virhostcpudata/linux-subcores2/node/node17/cpu136 ../../cpu/cpu136
+tests/virhostcpudata/linux-subcores2/node/node17/cpu137 ../../cpu/cpu137
+tests/virhostcpudata/linux-subcores2/node/node17/cpu138 ../../cpu/cpu138
+tests/virhostcpudata/linux-subcores2/node/node17/cpu139 ../../cpu/cpu139
+tests/virhostcpudata/linux-subcores2/node/node17/cpu140 ../../cpu/cpu140
+tests/virhostcpudata/linux-subcores2/node/node17/cpu141 ../../cpu/cpu141
+tests/virhostcpudata/linux-subcores2/node/node17/cpu142 ../../cpu/cpu142
+tests/virhostcpudata/linux-subcores2/node/node17/cpu143 ../../cpu/cpu143
+tests/virhostcpudata/linux-subcores2/node/node17/cpu144 ../../cpu/cpu144
+tests/virhostcpudata/linux-subcores2/node/node17/cpu145 ../../cpu/cpu145
+tests/virhostcpudata/linux-subcores2/node/node17/cpu146 ../../cpu/cpu146
+tests/virhostcpudata/linux-subcores2/node/node17/cpu147 ../../cpu/cpu147
+tests/virhostcpudata/linux-subcores2/node/node17/cpu148 ../../cpu/cpu148
+tests/virhostcpudata/linux-subcores2/node/node17/cpu149 ../../cpu/cpu149
+tests/virhostcpudata/linux-subcores2/node/node17/cpu150 ../../cpu/cpu150
+tests/virhostcpudata/linux-subcores2/node/node17/cpu151 ../../cpu/cpu151
+tests/virhostcpudata/linux-subcores2/node/node17/cpu152 ../../cpu/cpu152
+tests/virhostcpudata/linux-subcores2/node/node17/cpu153 ../../cpu/cpu153
+tests/virhostcpudata/linux-subcores2/node/node17/cpu154 ../../cpu/cpu154
+tests/virhostcpudata/linux-subcores2/node/node17/cpu155 ../../cpu/cpu155
+tests/virhostcpudata/linux-subcores2/node/node17/cpu156 ../../cpu/cpu156
+tests/virhostcpudata/linux-subcores2/node/node17/cpu157 ../../cpu/cpu157
+tests/virhostcpudata/linux-subcores2/node/node17/cpu158 ../../cpu/cpu158
+tests/virhostcpudata/linux-subcores2/node/node17/cpu159 ../../cpu/cpu159
+tests/virhostcpudata/linux-subcores3/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-subcores3/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-subcores3/node/node0/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-subcores3/node/node0/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-subcores3/node/node0/cpu12 ../../cpu/cpu12
+tests/virhostcpudata/linux-subcores3/node/node0/cpu13 ../../cpu/cpu13
+tests/virhostcpudata/linux-subcores3/node/node0/cpu14 ../../cpu/cpu14
+tests/virhostcpudata/linux-subcores3/node/node0/cpu15 ../../cpu/cpu15
+tests/virhostcpudata/linux-subcores3/node/node0/cpu16 ../../cpu/cpu16
+tests/virhostcpudata/linux-subcores3/node/node0/cpu17 ../../cpu/cpu17
+tests/virhostcpudata/linux-subcores3/node/node0/cpu18 ../../cpu/cpu18
+tests/virhostcpudata/linux-subcores3/node/node0/cpu19 ../../cpu/cpu19
+tests/virhostcpudata/linux-subcores3/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-subcores3/node/node0/cpu20 ../../cpu/cpu20
+tests/virhostcpudata/linux-subcores3/node/node0/cpu21 ../../cpu/cpu21
+tests/virhostcpudata/linux-subcores3/node/node0/cpu22 ../../cpu/cpu22
+tests/virhostcpudata/linux-subcores3/node/node0/cpu23 ../../cpu/cpu23
+tests/virhostcpudata/linux-subcores3/node/node0/cpu24 ../../cpu/cpu24
+tests/virhostcpudata/linux-subcores3/node/node0/cpu25 ../../cpu/cpu25
+tests/virhostcpudata/linux-subcores3/node/node0/cpu26 ../../cpu/cpu26
+tests/virhostcpudata/linux-subcores3/node/node0/cpu27 ../../cpu/cpu27
+tests/virhostcpudata/linux-subcores3/node/node0/cpu28 ../../cpu/cpu28
+tests/virhostcpudata/linux-subcores3/node/node0/cpu29 ../../cpu/cpu29
+tests/virhostcpudata/linux-subcores3/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-subcores3/node/node0/cpu30 ../../cpu/cpu30
+tests/virhostcpudata/linux-subcores3/node/node0/cpu31 ../../cpu/cpu31
+tests/virhostcpudata/linux-subcores3/node/node0/cpu32 ../../cpu/cpu32
+tests/virhostcpudata/linux-subcores3/node/node0/cpu33 ../../cpu/cpu33
+tests/virhostcpudata/linux-subcores3/node/node0/cpu34 ../../cpu/cpu34
+tests/virhostcpudata/linux-subcores3/node/node0/cpu35 ../../cpu/cpu35
+tests/virhostcpudata/linux-subcores3/node/node0/cpu36 ../../cpu/cpu36
+tests/virhostcpudata/linux-subcores3/node/node0/cpu37 ../../cpu/cpu37
+tests/virhostcpudata/linux-subcores3/node/node0/cpu38 ../../cpu/cpu38
+tests/virhostcpudata/linux-subcores3/node/node0/cpu39 ../../cpu/cpu39
+tests/virhostcpudata/linux-subcores3/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-subcores3/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-subcores3/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-subcores3/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-subcores3/node/node0/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-subcores3/node/node0/cpu9 ../../cpu/cpu9
+tests/virhostcpudata/linux-subcores3/node/node1/cpu40 ../../cpu/cpu40
+tests/virhostcpudata/linux-subcores3/node/node1/cpu41 ../../cpu/cpu41
+tests/virhostcpudata/linux-subcores3/node/node1/cpu42 ../../cpu/cpu42
+tests/virhostcpudata/linux-subcores3/node/node1/cpu43 ../../cpu/cpu43
+tests/virhostcpudata/linux-subcores3/node/node1/cpu44 ../../cpu/cpu44
+tests/virhostcpudata/linux-subcores3/node/node1/cpu45 ../../cpu/cpu45
+tests/virhostcpudata/linux-subcores3/node/node1/cpu46 ../../cpu/cpu46
+tests/virhostcpudata/linux-subcores3/node/node1/cpu47 ../../cpu/cpu47
+tests/virhostcpudata/linux-subcores3/node/node1/cpu48 ../../cpu/cpu48
+tests/virhostcpudata/linux-subcores3/node/node1/cpu49 ../../cpu/cpu49
+tests/virhostcpudata/linux-subcores3/node/node1/cpu50 ../../cpu/cpu50
+tests/virhostcpudata/linux-subcores3/node/node1/cpu51 ../../cpu/cpu51
+tests/virhostcpudata/linux-subcores3/node/node1/cpu52 ../../cpu/cpu52
+tests/virhostcpudata/linux-subcores3/node/node1/cpu53 ../../cpu/cpu53
+tests/virhostcpudata/linux-subcores3/node/node1/cpu54 ../../cpu/cpu54
+tests/virhostcpudata/linux-subcores3/node/node1/cpu55 ../../cpu/cpu55
+tests/virhostcpudata/linux-subcores3/node/node1/cpu56 ../../cpu/cpu56
+tests/virhostcpudata/linux-subcores3/node/node1/cpu57 ../../cpu/cpu57
+tests/virhostcpudata/linux-subcores3/node/node1/cpu58 ../../cpu/cpu58
+tests/virhostcpudata/linux-subcores3/node/node1/cpu59 ../../cpu/cpu59
+tests/virhostcpudata/linux-subcores3/node/node1/cpu60 ../../cpu/cpu60
+tests/virhostcpudata/linux-subcores3/node/node1/cpu61 ../../cpu/cpu61
+tests/virhostcpudata/linux-subcores3/node/node1/cpu62 ../../cpu/cpu62
+tests/virhostcpudata/linux-subcores3/node/node1/cpu63 ../../cpu/cpu63
+tests/virhostcpudata/linux-subcores3/node/node1/cpu64 ../../cpu/cpu64
+tests/virhostcpudata/linux-subcores3/node/node1/cpu65 ../../cpu/cpu65
+tests/virhostcpudata/linux-subcores3/node/node1/cpu66 ../../cpu/cpu66
+tests/virhostcpudata/linux-subcores3/node/node1/cpu67 ../../cpu/cpu67
+tests/virhostcpudata/linux-subcores3/node/node1/cpu68 ../../cpu/cpu68
+tests/virhostcpudata/linux-subcores3/node/node1/cpu69 ../../cpu/cpu69
+tests/virhostcpudata/linux-subcores3/node/node1/cpu70 ../../cpu/cpu70
+tests/virhostcpudata/linux-subcores3/node/node1/cpu71 ../../cpu/cpu71
+tests/virhostcpudata/linux-subcores3/node/node1/cpu72 ../../cpu/cpu72
+tests/virhostcpudata/linux-subcores3/node/node1/cpu73 ../../cpu/cpu73
+tests/virhostcpudata/linux-subcores3/node/node1/cpu74 ../../cpu/cpu74
+tests/virhostcpudata/linux-subcores3/node/node1/cpu75 ../../cpu/cpu75
+tests/virhostcpudata/linux-subcores3/node/node1/cpu76 ../../cpu/cpu76
+tests/virhostcpudata/linux-subcores3/node/node1/cpu77 ../../cpu/cpu77
+tests/virhostcpudata/linux-subcores3/node/node1/cpu78 ../../cpu/cpu78
+tests/virhostcpudata/linux-subcores3/node/node1/cpu79 ../../cpu/cpu79
+tests/virhostcpudata/linux-subcores3/node/node16/cpu100 ../../cpu/cpu100
+tests/virhostcpudata/linux-subcores3/node/node16/cpu101 ../../cpu/cpu101
+tests/virhostcpudata/linux-subcores3/node/node16/cpu102 ../../cpu/cpu102
+tests/virhostcpudata/linux-subcores3/node/node16/cpu103 ../../cpu/cpu103
+tests/virhostcpudata/linux-subcores3/node/node16/cpu104 ../../cpu/cpu104
+tests/virhostcpudata/linux-subcores3/node/node16/cpu105 ../../cpu/cpu105
+tests/virhostcpudata/linux-subcores3/node/node16/cpu106 ../../cpu/cpu106
+tests/virhostcpudata/linux-subcores3/node/node16/cpu107 ../../cpu/cpu107
+tests/virhostcpudata/linux-subcores3/node/node16/cpu108 ../../cpu/cpu108
+tests/virhostcpudata/linux-subcores3/node/node16/cpu109 ../../cpu/cpu109
+tests/virhostcpudata/linux-subcores3/node/node16/cpu110 ../../cpu/cpu110
+tests/virhostcpudata/linux-subcores3/node/node16/cpu111 ../../cpu/cpu111
+tests/virhostcpudata/linux-subcores3/node/node16/cpu112 ../../cpu/cpu112
+tests/virhostcpudata/linux-subcores3/node/node16/cpu113 ../../cpu/cpu113
+tests/virhostcpudata/linux-subcores3/node/node16/cpu114 ../../cpu/cpu114
+tests/virhostcpudata/linux-subcores3/node/node16/cpu115 ../../cpu/cpu115
+tests/virhostcpudata/linux-subcores3/node/node16/cpu116 ../../cpu/cpu116
+tests/virhostcpudata/linux-subcores3/node/node16/cpu117 ../../cpu/cpu117
+tests/virhostcpudata/linux-subcores3/node/node16/cpu118 ../../cpu/cpu118
+tests/virhostcpudata/linux-subcores3/node/node16/cpu119 ../../cpu/cpu119
+tests/virhostcpudata/linux-subcores3/node/node16/cpu80 ../../cpu/cpu80
+tests/virhostcpudata/linux-subcores3/node/node16/cpu81 ../../cpu/cpu81
+tests/virhostcpudata/linux-subcores3/node/node16/cpu82 ../../cpu/cpu82
+tests/virhostcpudata/linux-subcores3/node/node16/cpu83 ../../cpu/cpu83
+tests/virhostcpudata/linux-subcores3/node/node16/cpu84 ../../cpu/cpu84
+tests/virhostcpudata/linux-subcores3/node/node16/cpu85 ../../cpu/cpu85
+tests/virhostcpudata/linux-subcores3/node/node16/cpu86 ../../cpu/cpu86
+tests/virhostcpudata/linux-subcores3/node/node16/cpu87 ../../cpu/cpu87
+tests/virhostcpudata/linux-subcores3/node/node16/cpu88 ../../cpu/cpu88
+tests/virhostcpudata/linux-subcores3/node/node16/cpu89 ../../cpu/cpu89
+tests/virhostcpudata/linux-subcores3/node/node16/cpu90 ../../cpu/cpu90
+tests/virhostcpudata/linux-subcores3/node/node16/cpu91 ../../cpu/cpu91
+tests/virhostcpudata/linux-subcores3/node/node16/cpu92 ../../cpu/cpu92
+tests/virhostcpudata/linux-subcores3/node/node16/cpu93 ../../cpu/cpu93
+tests/virhostcpudata/linux-subcores3/node/node16/cpu94 ../../cpu/cpu94
+tests/virhostcpudata/linux-subcores3/node/node16/cpu95 ../../cpu/cpu95
+tests/virhostcpudata/linux-subcores3/node/node16/cpu96 ../../cpu/cpu96
+tests/virhostcpudata/linux-subcores3/node/node16/cpu97 ../../cpu/cpu97
+tests/virhostcpudata/linux-subcores3/node/node16/cpu98 ../../cpu/cpu98
+tests/virhostcpudata/linux-subcores3/node/node16/cpu99 ../../cpu/cpu99
+tests/virhostcpudata/linux-subcores3/node/node17/cpu120 ../../cpu/cpu120
+tests/virhostcpudata/linux-subcores3/node/node17/cpu121 ../../cpu/cpu121
+tests/virhostcpudata/linux-subcores3/node/node17/cpu122 ../../cpu/cpu122
+tests/virhostcpudata/linux-subcores3/node/node17/cpu123 ../../cpu/cpu123
+tests/virhostcpudata/linux-subcores3/node/node17/cpu124 ../../cpu/cpu124
+tests/virhostcpudata/linux-subcores3/node/node17/cpu125 ../../cpu/cpu125
+tests/virhostcpudata/linux-subcores3/node/node17/cpu126 ../../cpu/cpu126
+tests/virhostcpudata/linux-subcores3/node/node17/cpu127 ../../cpu/cpu127
+tests/virhostcpudata/linux-subcores3/node/node17/cpu128 ../../cpu/cpu128
+tests/virhostcpudata/linux-subcores3/node/node17/cpu129 ../../cpu/cpu129
+tests/virhostcpudata/linux-subcores3/node/node17/cpu130 ../../cpu/cpu130
+tests/virhostcpudata/linux-subcores3/node/node17/cpu131 ../../cpu/cpu131
+tests/virhostcpudata/linux-subcores3/node/node17/cpu132 ../../cpu/cpu132
+tests/virhostcpudata/linux-subcores3/node/node17/cpu133 ../../cpu/cpu133
+tests/virhostcpudata/linux-subcores3/node/node17/cpu134 ../../cpu/cpu134
+tests/virhostcpudata/linux-subcores3/node/node17/cpu135 ../../cpu/cpu135
+tests/virhostcpudata/linux-subcores3/node/node17/cpu136 ../../cpu/cpu136
+tests/virhostcpudata/linux-subcores3/node/node17/cpu137 ../../cpu/cpu137
+tests/virhostcpudata/linux-subcores3/node/node17/cpu138 ../../cpu/cpu138
+tests/virhostcpudata/linux-subcores3/node/node17/cpu139 ../../cpu/cpu139
+tests/virhostcpudata/linux-subcores3/node/node17/cpu140 ../../cpu/cpu140
+tests/virhostcpudata/linux-subcores3/node/node17/cpu141 ../../cpu/cpu141
+tests/virhostcpudata/linux-subcores3/node/node17/cpu142 ../../cpu/cpu142
+tests/virhostcpudata/linux-subcores3/node/node17/cpu143 ../../cpu/cpu143
+tests/virhostcpudata/linux-subcores3/node/node17/cpu144 ../../cpu/cpu144
+tests/virhostcpudata/linux-subcores3/node/node17/cpu145 ../../cpu/cpu145
+tests/virhostcpudata/linux-subcores3/node/node17/cpu146 ../../cpu/cpu146
+tests/virhostcpudata/linux-subcores3/node/node17/cpu147 ../../cpu/cpu147
+tests/virhostcpudata/linux-subcores3/node/node17/cpu148 ../../cpu/cpu148
+tests/virhostcpudata/linux-subcores3/node/node17/cpu149 ../../cpu/cpu149
+tests/virhostcpudata/linux-subcores3/node/node17/cpu150 ../../cpu/cpu150
+tests/virhostcpudata/linux-subcores3/node/node17/cpu151 ../../cpu/cpu151
+tests/virhostcpudata/linux-subcores3/node/node17/cpu152 ../../cpu/cpu152
+tests/virhostcpudata/linux-subcores3/node/node17/cpu153 ../../cpu/cpu153
+tests/virhostcpudata/linux-subcores3/node/node17/cpu154 ../../cpu/cpu154
+tests/virhostcpudata/linux-subcores3/node/node17/cpu155 ../../cpu/cpu155
+tests/virhostcpudata/linux-subcores3/node/node17/cpu156 ../../cpu/cpu156
+tests/virhostcpudata/linux-subcores3/node/node17/cpu157 ../../cpu/cpu157
+tests/virhostcpudata/linux-subcores3/node/node17/cpu158 ../../cpu/cpu158
+tests/virhostcpudata/linux-subcores3/node/node17/cpu159 ../../cpu/cpu159
+tests/virhostcpudata/linux-test2/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-test2/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-test3/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-test3/node/node0/cpu12 ../../cpu/cpu12
+tests/virhostcpudata/linux-test3/node/node0/cpu16 ../../cpu/cpu16
+tests/virhostcpudata/linux-test3/node/node0/cpu20 ../../cpu/cpu20
+tests/virhostcpudata/linux-test3/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-test3/node/node0/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-test3/node/node1/cpu24 ../../cpu/cpu24
+tests/virhostcpudata/linux-test3/node/node1/cpu28 ../../cpu/cpu28
+tests/virhostcpudata/linux-test3/node/node1/cpu32 ../../cpu/cpu32
+tests/virhostcpudata/linux-test3/node/node1/cpu36 ../../cpu/cpu36
+tests/virhostcpudata/linux-test3/node/node1/cpu40 ../../cpu/cpu40
+tests/virhostcpudata/linux-test3/node/node1/cpu44 ../../cpu/cpu44
+tests/virhostcpudata/linux-test3/node/node2/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-test3/node/node2/cpu15 ../../cpu/cpu15
+tests/virhostcpudata/linux-test3/node/node2/cpu19 ../../cpu/cpu19
+tests/virhostcpudata/linux-test3/node/node2/cpu23 ../../cpu/cpu23
+tests/virhostcpudata/linux-test3/node/node2/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-test3/node/node2/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-test3/node/node3/cpu27 ../../cpu/cpu27
+tests/virhostcpudata/linux-test3/node/node3/cpu31 ../../cpu/cpu31
+tests/virhostcpudata/linux-test3/node/node3/cpu35 ../../cpu/cpu35
+tests/virhostcpudata/linux-test3/node/node3/cpu39 ../../cpu/cpu39
+tests/virhostcpudata/linux-test3/node/node3/cpu43 ../../cpu/cpu43
+tests/virhostcpudata/linux-test3/node/node3/cpu47 ../../cpu/cpu47
+tests/virhostcpudata/linux-test3/node/node4/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-test3/node/node4/cpu14 ../../cpu/cpu14
+tests/virhostcpudata/linux-test3/node/node4/cpu18 ../../cpu/cpu18
+tests/virhostcpudata/linux-test3/node/node4/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-test3/node/node4/cpu22 ../../cpu/cpu22
+tests/virhostcpudata/linux-test3/node/node4/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-test3/node/node5/cpu26 ../../cpu/cpu26
+tests/virhostcpudata/linux-test3/node/node5/cpu30 ../../cpu/cpu30
+tests/virhostcpudata/linux-test3/node/node5/cpu34 ../../cpu/cpu34
+tests/virhostcpudata/linux-test3/node/node5/cpu38 ../../cpu/cpu38
+tests/virhostcpudata/linux-test3/node/node5/cpu42 ../../cpu/cpu42
+tests/virhostcpudata/linux-test3/node/node5/cpu46 ../../cpu/cpu46
+tests/virhostcpudata/linux-test3/node/node6/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-test3/node/node6/cpu13 ../../cpu/cpu13
+tests/virhostcpudata/linux-test3/node/node6/cpu17 ../../cpu/cpu17
+tests/virhostcpudata/linux-test3/node/node6/cpu21 ../../cpu/cpu21
+tests/virhostcpudata/linux-test3/node/node6/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-test3/node/node6/cpu9 ../../cpu/cpu9
+tests/virhostcpudata/linux-test3/node/node7/cpu25 ../../cpu/cpu25
+tests/virhostcpudata/linux-test3/node/node7/cpu29 ../../cpu/cpu29
+tests/virhostcpudata/linux-test3/node/node7/cpu33 ../../cpu/cpu33
+tests/virhostcpudata/linux-test3/node/node7/cpu37 ../../cpu/cpu37
+tests/virhostcpudata/linux-test3/node/node7/cpu41 ../../cpu/cpu41
+tests/virhostcpudata/linux-test3/node/node7/cpu45 ../../cpu/cpu45
+tests/virhostcpudata/linux-test4/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-test4/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-test4/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-test4/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-test4/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-test4/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-test4/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-test4/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-test4/node/node1/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-test4/node/node1/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-test4/node/node1/cpu12 ../../cpu/cpu12
+tests/virhostcpudata/linux-test4/node/node1/cpu13 ../../cpu/cpu13
+tests/virhostcpudata/linux-test4/node/node1/cpu14 ../../cpu/cpu14
+tests/virhostcpudata/linux-test4/node/node1/cpu15 ../../cpu/cpu15
+tests/virhostcpudata/linux-test4/node/node1/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-test4/node/node1/cpu9 ../../cpu/cpu9
+tests/virhostcpudata/linux-test6/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-test6/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-test6/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-test6/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-test6/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-test6/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-test6/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-test6/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-test7/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-test7/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-test7/node/node0/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-test7/node/node0/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-test7/node/node0/cpu12 ../../cpu/cpu12
+tests/virhostcpudata/linux-test7/node/node0/cpu13 ../../cpu/cpu13
+tests/virhostcpudata/linux-test7/node/node0/cpu14 ../../cpu/cpu14
+tests/virhostcpudata/linux-test7/node/node0/cpu15 ../../cpu/cpu15
+tests/virhostcpudata/linux-test7/node/node0/cpu16 ../../cpu/cpu16
+tests/virhostcpudata/linux-test7/node/node0/cpu17 ../../cpu/cpu17
+tests/virhostcpudata/linux-test7/node/node0/cpu18 ../../cpu/cpu18
+tests/virhostcpudata/linux-test7/node/node0/cpu19 ../../cpu/cpu19
+tests/virhostcpudata/linux-test7/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-test7/node/node0/cpu20 ../../cpu/cpu20
+tests/virhostcpudata/linux-test7/node/node0/cpu21 ../../cpu/cpu21
+tests/virhostcpudata/linux-test7/node/node0/cpu22 ../../cpu/cpu22
+tests/virhostcpudata/linux-test7/node/node0/cpu23 ../../cpu/cpu23
+tests/virhostcpudata/linux-test7/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-test7/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-test7/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-test7/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-test7/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-test7/node/node0/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-test7/node/node0/cpu9 ../../cpu/cpu9
+tests/virhostcpudata/linux-test8/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-test8/node/node0/cpu12 ../../cpu/cpu12
+tests/virhostcpudata/linux-test8/node/node0/cpu16 ../../cpu/cpu16
+tests/virhostcpudata/linux-test8/node/node0/cpu20 ../../cpu/cpu20
+tests/virhostcpudata/linux-test8/node/node0/cpu24 ../../cpu/cpu24
+tests/virhostcpudata/linux-test8/node/node0/cpu28 ../../cpu/cpu28
+tests/virhostcpudata/linux-test8/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-test8/node/node0/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-test8/node/node1/cpu32 ../../cpu/cpu32
+tests/virhostcpudata/linux-test8/node/node1/cpu36 ../../cpu/cpu36
+tests/virhostcpudata/linux-test8/node/node1/cpu40 ../../cpu/cpu40
+tests/virhostcpudata/linux-test8/node/node1/cpu44 ../../cpu/cpu44
+tests/virhostcpudata/linux-test8/node/node1/cpu48 ../../cpu/cpu48
+tests/virhostcpudata/linux-test8/node/node1/cpu52 ../../cpu/cpu52
+tests/virhostcpudata/linux-test8/node/node1/cpu56 ../../cpu/cpu56
+tests/virhostcpudata/linux-test8/node/node1/cpu60 ../../cpu/cpu60
+tests/virhostcpudata/linux-test8/node/node2/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-test8/node/node2/cpu13 ../../cpu/cpu13
+tests/virhostcpudata/linux-test8/node/node2/cpu17 ../../cpu/cpu17
+tests/virhostcpudata/linux-test8/node/node2/cpu21 ../../cpu/cpu21
+tests/virhostcpudata/linux-test8/node/node2/cpu25 ../../cpu/cpu25
+tests/virhostcpudata/linux-test8/node/node2/cpu29 ../../cpu/cpu29
+tests/virhostcpudata/linux-test8/node/node2/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-test8/node/node2/cpu9 ../../cpu/cpu9
+tests/virhostcpudata/linux-test8/node/node3/cpu33 ../../cpu/cpu33
+tests/virhostcpudata/linux-test8/node/node3/cpu37 ../../cpu/cpu37
+tests/virhostcpudata/linux-test8/node/node3/cpu41 ../../cpu/cpu41
+tests/virhostcpudata/linux-test8/node/node3/cpu45 ../../cpu/cpu45
+tests/virhostcpudata/linux-test8/node/node3/cpu49 ../../cpu/cpu49
+tests/virhostcpudata/linux-test8/node/node3/cpu53 ../../cpu/cpu53
+tests/virhostcpudata/linux-test8/node/node3/cpu57 ../../cpu/cpu57
+tests/virhostcpudata/linux-test8/node/node3/cpu61 ../../cpu/cpu61
+tests/virhostcpudata/linux-test8/node/node4/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-test8/node/node4/cpu14 ../../cpu/cpu14
+tests/virhostcpudata/linux-test8/node/node4/cpu18 ../../cpu/cpu18
+tests/virhostcpudata/linux-test8/node/node4/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-test8/node/node4/cpu22 ../../cpu/cpu22
+tests/virhostcpudata/linux-test8/node/node4/cpu26 ../../cpu/cpu26
+tests/virhostcpudata/linux-test8/node/node4/cpu30 ../../cpu/cpu30
+tests/virhostcpudata/linux-test8/node/node4/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-test8/node/node5/cpu34 ../../cpu/cpu34
+tests/virhostcpudata/linux-test8/node/node5/cpu38 ../../cpu/cpu38
+tests/virhostcpudata/linux-test8/node/node5/cpu42 ../../cpu/cpu42
+tests/virhostcpudata/linux-test8/node/node5/cpu46 ../../cpu/cpu46
+tests/virhostcpudata/linux-test8/node/node5/cpu50 ../../cpu/cpu50
+tests/virhostcpudata/linux-test8/node/node5/cpu54 ../../cpu/cpu54
+tests/virhostcpudata/linux-test8/node/node5/cpu58 ../../cpu/cpu58
+tests/virhostcpudata/linux-test8/node/node5/cpu62 ../../cpu/cpu62
+tests/virhostcpudata/linux-test8/node/node6/cpu35 ../../cpu/cpu35
+tests/virhostcpudata/linux-test8/node/node6/cpu39 ../../cpu/cpu39
+tests/virhostcpudata/linux-test8/node/node6/cpu43 ../../cpu/cpu43
+tests/virhostcpudata/linux-test8/node/node6/cpu47 ../../cpu/cpu47
+tests/virhostcpudata/linux-test8/node/node6/cpu51 ../../cpu/cpu51
+tests/virhostcpudata/linux-test8/node/node6/cpu55 ../../cpu/cpu55
+tests/virhostcpudata/linux-test8/node/node6/cpu59 ../../cpu/cpu59
+tests/virhostcpudata/linux-test8/node/node6/cpu63 ../../cpu/cpu63
+tests/virhostcpudata/linux-test8/node/node7/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-test8/node/node7/cpu15 ../../cpu/cpu15
+tests/virhostcpudata/linux-test8/node/node7/cpu19 ../../cpu/cpu19
+tests/virhostcpudata/linux-test8/node/node7/cpu23 ../../cpu/cpu23
+tests/virhostcpudata/linux-test8/node/node7/cpu27 ../../cpu/cpu27
+tests/virhostcpudata/linux-test8/node/node7/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-test8/node/node7/cpu31 ../../cpu/cpu31
+tests/virhostcpudata/linux-test8/node/node7/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-with-die/node/node0/cpu0 ../../cpu/cpu0
+tests/virhostcpudata/linux-with-die/node/node0/cpu1 ../../cpu/cpu1
+tests/virhostcpudata/linux-with-die/node/node0/cpu10 ../../cpu/cpu10
+tests/virhostcpudata/linux-with-die/node/node0/cpu11 ../../cpu/cpu11
+tests/virhostcpudata/linux-with-die/node/node0/cpu2 ../../cpu/cpu2
+tests/virhostcpudata/linux-with-die/node/node0/cpu3 ../../cpu/cpu3
+tests/virhostcpudata/linux-with-die/node/node0/cpu4 ../../cpu/cpu4
+tests/virhostcpudata/linux-with-die/node/node0/cpu5 ../../cpu/cpu5
+tests/virhostcpudata/linux-with-die/node/node0/cpu6 ../../cpu/cpu6
+tests/virhostcpudata/linux-with-die/node/node0/cpu7 ../../cpu/cpu7
+tests/virhostcpudata/linux-with-die/node/node0/cpu8 ../../cpu/cpu8
+tests/virhostcpudata/linux-with-die/node/node0/cpu9 ../../cpu/cpu9
+tests/virstoragetestdata/images/sub/link1 ../qcow2_raw-raw-reldir.qcow2
+tests/virstoragetestdata/images/sub/link2 ../qcow2_qcow2-qcow2-symlink_raw-raw-reldir.qcow2
+tests/virstoragetestdata/lookup/sub/link2 ../wrap
+tests/vmx2xmldata/cdrom-ide-file-missing-datastore.xml cdrom-ide-empty.xml
+tests/vmx2xmldata/cdrom-ide-file-missing-file.xml cdrom-ide-empty.xml
+tests/vmx2xmldata/serial-pipe-client-app.xml serial-pipe.xml
+tests/vmx2xmldata/serial-pipe-client-vm.xml serial-pipe.xml
+tests/vmx2xmldata/serial-pipe-server-app.xml serial-pipe.xml
+tests/vmx2xmldata/serial-pipe-server-vm.xml serial-pipe.xml
diff --git a/SPECS/libvirt.spec b/SPECS/libvirt.spec
new file mode 100644
index 0000000..4262c10
--- /dev/null
+++ b/SPECS/libvirt.spec
@@ -0,0 +1,2347 @@
+# -*- rpm-spec -*-
+
+# This spec file assumes you are building on a Fedora or RHEL version
+# that's still supported by the vendor. It may work on other distros
+# or versions, but no effort will be made to ensure that going forward.
+%define min_rhel 8
+%define min_fedora 33
+
+%define arches_qemu_kvm         %{ix86} x86_64 %{power64} %{arm} aarch64 s390x
+%if 0%{?rhel}
+    %if 0%{?rhel} > 8
+        %define arches_qemu_kvm     x86_64 aarch64 s390x
+    %else
+        %define arches_qemu_kvm     x86_64 %{power64} aarch64 s390x
+    %endif
+%endif
+
+%define arches_64bit            x86_64 %{power64} aarch64 s390x riscv64
+%define arches_x86              %{ix86} x86_64
+
+%define arches_systemtap_64bit  %{arches_64bit}
+%define arches_dmidecode        %{arches_x86}
+%define arches_xen              %{arches_x86} aarch64
+%define arches_vbox             %{arches_x86}
+%define arches_ceph             %{arches_64bit}
+%define arches_zfs              %{arches_x86} %{power64} %{arm}
+%define arches_numactl          %{arches_x86} %{power64} aarch64 s390x
+%define arches_numad            %{arches_x86} %{power64} aarch64
+
+# The hypervisor drivers that run in libvirtd
+%define with_qemu          0%{!?_without_qemu:1}
+%define with_lxc           0%{!?_without_lxc:1}
+%define with_libxl         0%{!?_without_libxl:1}
+%define with_vbox          0%{!?_without_vbox:1}
+
+%ifarch %{arches_qemu_kvm}
+    %define with_qemu_kvm      %{with_qemu}
+%else
+    %define with_qemu_kvm      0
+%endif
+
+%define with_qemu_tcg      %{with_qemu}
+
+# RHEL disables TCG on all architectures
+%if 0%{?rhel}
+    %define with_qemu_tcg 0
+%endif
+
+%if ! %{with_qemu_tcg} && ! %{with_qemu_kvm}
+    %define with_qemu 0
+%endif
+
+# Then the hypervisor drivers that run outside libvirtd, in libvirt.so
+%define with_openvz        0%{!?_without_openvz:1}
+%define with_vmware        0%{!?_without_vmware:1}
+%define with_esx           0%{!?_without_esx:1}
+%define with_hyperv        0%{!?_without_hyperv:1}
+
+# Then the secondary host drivers, which run inside libvirtd
+%define with_storage_rbd      0%{!?_without_storage_rbd:1}
+%if 0%{?fedora}
+    %define with_storage_sheepdog 0%{!?_without_storage_sheepdog:1}
+%else
+    %define with_storage_sheepdog 0
+%endif
+
+%define with_storage_gluster 0%{!?_without_storage_gluster:1}
+%if 0%{?rhel}
+    # Glusterfs has been dropped in RHEL-9, and before that
+    # was only enabled on arches where KVM exists
+    %if 0%{?rhel} > 8
+        %define with_storage_gluster 0
+    %else
+        %ifnarch %{arches_qemu_kvm}
+            %define with_storage_gluster 0
+        %endif
+    %endif
+%endif
+
+# Fedora has zfs-fuse
+%if 0%{?fedora}
+    %define with_storage_zfs      0%{!?_without_storage_zfs:1}
+%else
+    %define with_storage_zfs      0
+%endif
+
+%define with_storage_iscsi_direct 0%{!?_without_storage_iscsi_direct:1}
+# libiscsi has been dropped in RHEL-9
+%if 0%{?rhel} > 8
+    %define with_storage_iscsi_direct 0
+%endif
+
+# Other optional features
+%define with_numactl          0%{!?_without_numactl:1}
+
+# A few optional bits off by default, we enable later
+%define with_fuse             0
+%define with_sanlock          0
+%define with_numad            0
+%define with_firewalld_zone   0
+%define with_netcf            0
+%define with_libssh2          0
+%define with_wireshark        0
+%define with_libssh           0
+%define with_dmidecode        0
+
+# Finally set the OS / architecture specific special cases
+
+# Architecture-dependent features
+%ifnarch %{arches_xen}
+    %define with_libxl 0
+%endif
+%ifnarch %{arches_vbox}
+    %define with_vbox 0
+%endif
+%ifnarch %{arches_numactl}
+    %define with_numactl 0
+%endif
+%ifnarch %{arches_zfs}
+    %define with_storage_zfs 0
+%endif
+%ifnarch %{arches_ceph}
+    %define with_storage_rbd 0
+%endif
+
+# RHEL doesn't ship many hypervisor drivers
+%if 0%{?rhel}
+    %define with_openvz 0
+    %define with_vbox 0
+    %define with_vmware 0
+    %define with_libxl 0
+    %define with_hyperv 0
+    %define with_vz 0
+    %define with_lxc 0
+%endif
+
+%define with_firewalld_zone 0%{!?_without_firewalld_zone:1}
+
+%if (0%{?fedora} && 0%{?fedora} < 34) || (0%{?rhel} && 0%{?rhel} < 9)
+    %define with_netcf 0%{!?_without_netcf:1}
+%endif
+
+
+# fuse is used to provide virtualized /proc for LXC
+%if %{with_lxc}
+    %define with_fuse      0%{!?_without_fuse:1}
+%endif
+
+# Enable sanlock library for lock management with QEMU
+# Sanlock is available only on arches where kvm is available for RHEL
+%if 0%{?fedora}
+    %define with_sanlock 0%{!?_without_sanlock:1}
+%endif
+%if 0%{?rhel}
+    %ifarch %{arches_qemu_kvm}
+        %define with_sanlock 0%{!?_without_sanlock:1}
+    %endif
+%endif
+
+# Enable libssh2 transport for new enough distros
+%if 0%{?fedora}
+    %define with_libssh2 0%{!?_without_libssh2:1}
+%endif
+
+# Enable wireshark plugins for all distros
+%define with_wireshark 0%{!?_without_wireshark:1}
+%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)/epan
+
+# Enable libssh transport for all distros
+%define with_libssh 0%{!?_without_libssh:1}
+
+%if %{with_qemu} || %{with_lxc}
+# numad is used to manage the CPU and memory placement dynamically,
+# it's not available on many non-x86 architectures.
+    %ifarch %{arches_numad}
+        %define with_numad    0%{!?_without_numad:1}
+    %endif
+%endif
+
+%ifarch %{arches_dmidecode}
+    %define with_dmidecode 0%{!?_without_dmidecode:1}
+%endif
+
+%define with_modular_daemons 0
+%if 0%{?fedora} >= 35 || 0%{?rhel} >= 9
+    %define with_modular_daemons 1
+%endif
+
+# Force QEMU to run as non-root
+%define qemu_user  qemu
+%define qemu_group  qemu
+
+# Locations for QEMU data
+%define qemu_moddir %{_libdir}/qemu
+%define qemu_datadir %{_datadir}/qemu
+
+
+# RHEL releases provide stable tool chains and so it is safe to turn
+# compiler warning into errors without being worried about frequent
+# changes in reported warnings
+%if 0%{?rhel}
+    %define enable_werror -Dwerror=true
+%else
+    %define enable_werror -Dwerror=false -Dgit_werror=disabled
+%endif
+
+%define tls_priority "@LIBVIRT,SYSTEM"
+
+# libvirt 8.1.0 stops distributing any sysconfig files.
+# If the user has customized their sysconfig file,
+# the RPM upgrade path will rename it to .rpmsave
+# because the file is no longer managed by RPM.
+# To prevent a regression we rename it back after the
+# transaction to preserve the user's modifications
+%define libvirt_sysconfig_pre() \
+    for sc in %{?*} ; do \
+        test -f "%{_sysconfdir}/sysconfig/${sc}.rpmsave" || continue ; \
+        mv -v "%{_sysconfdir}/sysconfig/${sc}.rpmsave" "%{_sysconfdir}/sysconfig/${sc}.rpmsave.old" ; \
+    done \
+    %{nil}
+%define libvirt_sysconfig_posttrans() \
+    for sc in %{?*} ; do \
+        test -f "%{_sysconfdir}/sysconfig/${sc}.rpmsave" || continue ; \
+        mv -v "%{_sysconfdir}/sysconfig/${sc}.rpmsave" "%{_sysconfdir}/sysconfig/${sc}" ; \
+    done \
+    %{nil}
+
+Summary: Library providing a simple virtualization API
+Name: libvirt
+Version: 8.0.0
+Release: 8%{?dist}%{?extra_release}
+License: LGPLv2+
+URL: https://libvirt.org/
+
+%if %(echo %{version} | grep -q "\.0$"; echo $?) == 1
+    %define mainturl stable_updates/
+%endif
+Source: https://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.xz
+Source1: symlinks
+
+Patch1: libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch
+Patch2: libvirt-build-Only-install-libvirt-guests-when-building-libvirtd.patch
+Patch3: libvirt-docs-Add-man-page-for-libvirt-guests.patch
+Patch4: libvirt-remove-sysconfig-files.patch
+Patch5: libvirt-qemu-fix-inactive-snapshot-revert.patch
+Patch6: libvirt-Revert-report-error-when-virProcessGetStatInfo-is-unable-to-parse-data.patch
+Patch7: libvirt-qemuDomainSetupDisk-Initialize-targetPaths.patch
+Patch8: libvirt-qemu_command-Generate-memory-only-after-controllers.patch
+Patch9: libvirt-qemu-Validate-domain-definition-even-on-migration.patch
+Patch10: libvirt-Make-systemd-unit-ordering-more-robust.patch
+Patch11: libvirt-util-Fix-machined-servicename.patch
+Patch12: libvirt-qemu-support-firmware-descriptor-flash-mode-for-optional-NVRAM.patch
+Patch13: libvirt-nwfilter-hold-filter-update-lock-when-creating-deleting-bindings.patch
+Patch14: libvirt-qemu-lxc-remove-use-to-nwfilter-update-lock.patch
+Patch15: libvirt-qemu-support-multiqueue-for-vdpa-net-device.patch
+Patch16: libvirt-qemu-fix-hotplug-for-multiqueue-vdpa-net-device.patch
+
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-daemon-config-network = %{version}-%{release}
+Requires: libvirt-daemon-config-nwfilter = %{version}-%{release}
+%if %{with_libxl}
+Requires: libvirt-daemon-driver-libxl = %{version}-%{release}
+%endif
+%if %{with_lxc}
+Requires: libvirt-daemon-driver-lxc = %{version}-%{release}
+%endif
+%if %{with_qemu}
+Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
+%endif
+# We had UML driver, but we've removed it.
+Obsoletes: libvirt-daemon-driver-uml <= 5.0.0
+Obsoletes: libvirt-daemon-uml <= 5.0.0
+%if %{with_vbox}
+Requires: libvirt-daemon-driver-vbox = %{version}-%{release}
+%endif
+Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
+
+Requires: libvirt-daemon-driver-interface = %{version}-%{release}
+Requires: libvirt-daemon-driver-secret = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage = %{version}-%{release}
+Requires: libvirt-daemon-driver-network = %{version}-%{release}
+Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
+Requires: libvirt-client = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+
+# All build-time requirements. Run-time requirements are
+# listed against each sub-RPM
+BuildRequires: python3-docutils
+BuildRequires: gcc
+BuildRequires: meson >= 0.54.0
+BuildRequires: ninja-build
+BuildRequires: git
+BuildRequires: perl-interpreter
+BuildRequires: python3
+%if %{with_libxl}
+BuildRequires: xen-devel
+%endif
+BuildRequires: glib2-devel >= 2.56
+BuildRequires: libxml2-devel
+BuildRequires: libxslt
+BuildRequires: readline-devel
+BuildRequires: bash-completion >= 2.0
+BuildRequires: gettext
+BuildRequires: libtasn1-devel
+BuildRequires: gnutls-devel
+BuildRequires: libattr-devel
+# For pool-build probing for existing pools
+BuildRequires: libblkid-devel >= 2.17
+# for augparse, optionally used in testing
+BuildRequires: augeas
+BuildRequires: systemd-devel >= 185
+BuildRequires: libpciaccess-devel >= 0.10.9
+BuildRequires: yajl-devel
+%if %{with_sanlock}
+BuildRequires: sanlock-devel >= 2.4
+%endif
+BuildRequires: libpcap-devel >= 1.5.0
+BuildRequires: libnl3-devel
+BuildRequires: libselinux-devel
+BuildRequires: dnsmasq >= 2.41
+BuildRequires: iptables
+BuildRequires: ebtables
+BuildRequires: module-init-tools
+BuildRequires: cyrus-sasl-devel
+BuildRequires: polkit >= 0.112
+# For mount/umount in FS driver
+BuildRequires: util-linux
+%if %{with_qemu}
+# For managing ACLs
+BuildRequires: libacl-devel
+# From QEMU RPMs
+BuildRequires: /usr/bin/qemu-img
+%endif
+# For LVM drivers
+BuildRequires: lvm2
+# For pool type=iscsi
+BuildRequires: iscsi-initiator-utils
+%if %{with_storage_iscsi_direct}
+# For pool type=iscsi-direct
+BuildRequires: libiscsi-devel
+%endif
+# For disk driver
+BuildRequires: parted-devel
+# For Multipath support
+BuildRequires: device-mapper-devel
+%if %{with_storage_rbd}
+BuildRequires: librados-devel
+BuildRequires: librbd-devel
+%endif
+%if %{with_storage_gluster}
+BuildRequires: glusterfs-api-devel >= 3.4.1
+BuildRequires: glusterfs-devel >= 3.4.1
+%endif
+%if %{with_storage_sheepdog}
+BuildRequires: sheepdog
+%endif
+%if %{with_numactl}
+# For QEMU/LXC numa info
+BuildRequires: numactl-devel
+%endif
+BuildRequires: libcap-ng-devel >= 0.5.0
+%if %{with_fuse}
+BuildRequires: fuse-devel >= 2.8.6
+%endif
+%if %{with_libssh2}
+BuildRequires: libssh2-devel >= 1.3.0
+%endif
+%if %{with_netcf}
+BuildRequires: netcf-devel >= 0.2.2
+%endif
+%if %{with_esx}
+BuildRequires: libcurl-devel
+%endif
+%if %{with_hyperv}
+BuildRequires: libwsman-devel >= 2.6.3
+%endif
+BuildRequires: audit-libs-devel
+# we need /usr/sbin/dtrace
+BuildRequires: systemtap-sdt-devel
+
+# For mount/umount in FS driver
+BuildRequires: util-linux
+# For showmount in FS driver (netfs discovery)
+BuildRequires: nfs-utils
+
+# Fedora build root suckage
+BuildRequires: gawk
+
+# For storage wiping with different algorithms
+BuildRequires: scrub
+
+%if %{with_numad}
+BuildRequires: numad
+%endif
+
+%if %{with_wireshark}
+BuildRequires: wireshark-devel
+%endif
+
+%if %{with_libssh}
+BuildRequires: libssh-devel >= 0.7.0
+%endif
+
+BuildRequires: rpcgen
+BuildRequires: libtirpc-devel
+
+# Needed for the firewalld_reload macro
+%if %{with_firewalld_zone}
+BuildRequires: firewalld-filesystem
+%endif
+
+%description
+Libvirt is a C toolkit to interact with the virtualization capabilities
+of recent versions of Linux (and other OSes). The main package includes
+the libvirtd server exporting the virtualization support.
+
+%package docs
+Summary: API reference and website documentation
+
+%description docs
+Includes the API reference for the libvirt C library, and a complete
+copy of the libvirt.org website documentation.
+
+%package daemon
+Summary: Server side daemon and supporting files for libvirt library
+
+# All runtime requirements for the libvirt package (runtime requrements
+# for subpackages are listed later in those subpackages)
+
+# The client side, i.e. shared libs are in a subpackage
+Requires: %{name}-libs = %{version}-%{release}
+
+# netcat is needed on the server side so that clients that have
+# libvirt < 6.9.0 can connect, but newer versions will prefer
+# virt-ssh-helper. Making this a Recommends means that it gets
+# installed by default, but can still be removed if compatibility
+# with old clients is not required
+Recommends: /usr/bin/nc
+
+# for modprobe of pci devices
+Requires: module-init-tools
+
+# for /sbin/ip
+Requires: iproute
+# for /sbin/tc
+Requires: iproute-tc
+
+Requires: polkit >= 0.112
+%if %{with_dmidecode}
+# For virConnectGetSysinfo
+Requires: dmidecode
+%endif
+# For service management
+Requires(post): /usr/bin/systemctl
+%if %{with_numad}
+Requires: numad
+%endif
+# libvirtd depends on 'messagebus' service
+Requires: dbus
+# For uid creation during pre
+Requires(pre): shadow-utils
+# Needed by /usr/libexec/libvirt-guests.sh script.
+Requires: gettext
+
+# Ensure smooth upgrades
+Obsoletes: libvirt-admin < 7.3.0
+Provides: libvirt-admin = %{version}-%{release}
+Obsoletes: libvirt-bash-completion < 7.3.0
+
+%description daemon
+Server side daemon required to manage the virtualization capabilities
+of recent versions of Linux. Requires a hypervisor specific sub-RPM
+for specific drivers.
+
+%package daemon-config-network
+Summary: Default configuration files for the libvirtd daemon
+
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-daemon-driver-network = %{version}-%{release}
+
+%description daemon-config-network
+Default configuration files for setting up NAT based networking
+
+%package daemon-config-nwfilter
+Summary: Network filter configuration files for the libvirtd daemon
+
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
+
+%description daemon-config-nwfilter
+Network filter configuration files for cleaning guest traffic
+
+%package daemon-driver-network
+Summary: Network driver plugin for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Requires: dnsmasq >= 2.41
+Requires: iptables
+
+%description daemon-driver-network
+The network driver plugin for the libvirtd daemon, providing
+an implementation of the virtual network APIs using the Linux
+bridge capabilities.
+
+
+%package daemon-driver-nwfilter
+Summary: Nwfilter driver plugin for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Requires: iptables
+Requires: ebtables
+
+%description daemon-driver-nwfilter
+The nwfilter driver plugin for the libvirtd daemon, providing
+an implementation of the firewall APIs using the ebtables,
+iptables and ip6tables capabilities
+
+
+%package daemon-driver-nodedev
+Summary: Nodedev driver plugin for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+# needed for device enumeration
+Requires: systemd >= 185
+# For managing persistent mediated devices
+Requires: mdevctl
+
+%description daemon-driver-nodedev
+The nodedev driver plugin for the libvirtd daemon, providing
+an implementation of the node device APIs using the udev
+capabilities.
+
+
+%package daemon-driver-interface
+Summary: Interface driver plugin for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+%if %{with_netcf}
+Requires: netcf-libs >= 0.2.2
+%endif
+
+%description daemon-driver-interface
+The interface driver plugin for the libvirtd daemon, providing
+an implementation of the host network interface APIs.
+
+%package daemon-driver-secret
+Summary: Secret driver plugin for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+
+%description daemon-driver-secret
+The secret driver plugin for the libvirtd daemon, providing
+an implementation of the secret key APIs.
+
+%package daemon-driver-storage-core
+Summary: Storage driver plugin including base backends for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Requires: nfs-utils
+# For mkfs
+Requires: util-linux
+%if %{with_qemu}
+# From QEMU RPMs
+Requires: /usr/bin/qemu-img
+%endif
+%if !%{with_storage_rbd}
+Obsoletes: libvirt-daemon-driver-storage-rbd < %{version}-%{release}
+%endif
+
+%description daemon-driver-storage-core
+The storage driver plugin for the libvirtd daemon, providing
+an implementation of the storage APIs using files, local disks, LVM, SCSI,
+iSCSI, and multipath storage.
+
+%package daemon-driver-storage-logical
+Summary: Storage driver plugin for lvm volumes
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Requires: lvm2
+
+%description daemon-driver-storage-logical
+The storage driver backend adding implementation of the storage APIs for block
+volumes using lvm.
+
+
+%package daemon-driver-storage-disk
+Summary: Storage driver plugin for disk
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Requires: parted
+Requires: device-mapper
+
+%description daemon-driver-storage-disk
+The storage driver backend adding implementation of the storage APIs for block
+volumes using the host disks.
+
+
+%package daemon-driver-storage-scsi
+Summary: Storage driver plugin for local scsi devices
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+
+%description daemon-driver-storage-scsi
+The storage driver backend adding implementation of the storage APIs for scsi
+host devices.
+
+
+%package daemon-driver-storage-iscsi
+Summary: Storage driver plugin for iscsi
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Requires: iscsi-initiator-utils
+
+%description daemon-driver-storage-iscsi
+The storage driver backend adding implementation of the storage APIs for iscsi
+volumes using the host iscsi stack.
+
+
+%if %{with_storage_iscsi_direct}
+%package daemon-driver-storage-iscsi-direct
+Summary: Storage driver plugin for iscsi-direct
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+
+%description daemon-driver-storage-iscsi-direct
+The storage driver backend adding implementation of the storage APIs for iscsi
+volumes using libiscsi direct connection.
+%endif
+
+
+%package daemon-driver-storage-mpath
+Summary: Storage driver plugin for multipath volumes
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Requires: device-mapper
+
+%description daemon-driver-storage-mpath
+The storage driver backend adding implementation of the storage APIs for
+multipath storage using device mapper.
+
+
+%if %{with_storage_gluster}
+%package daemon-driver-storage-gluster
+Summary: Storage driver plugin for gluster
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+    %if 0%{?fedora}
+Requires: glusterfs-client >= 2.0.1
+    %endif
+    %if (0%{?fedora} || 0%{?with_storage_gluster})
+Requires: /usr/sbin/gluster
+    %endif
+
+%description daemon-driver-storage-gluster
+The storage driver backend adding implementation of the storage APIs for gluster
+volumes using libgfapi.
+%endif
+
+
+%if %{with_storage_rbd}
+%package daemon-driver-storage-rbd
+Summary: Storage driver plugin for rbd
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+
+%description daemon-driver-storage-rbd
+The storage driver backend adding implementation of the storage APIs for rbd
+volumes using the ceph protocol.
+%endif
+
+
+%if %{with_storage_sheepdog}
+%package daemon-driver-storage-sheepdog
+Summary: Storage driver plugin for sheepdog
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Requires: sheepdog
+
+%description daemon-driver-storage-sheepdog
+The storage driver backend adding implementation of the storage APIs for
+sheepdog volumes using.
+%endif
+
+
+%if %{with_storage_zfs}
+%package daemon-driver-storage-zfs
+Summary: Storage driver plugin for ZFS
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+# Support any conforming implementation of zfs
+Requires: /sbin/zfs
+Requires: /sbin/zpool
+
+%description daemon-driver-storage-zfs
+The storage driver backend adding implementation of the storage APIs for
+ZFS volumes.
+%endif
+
+
+%package daemon-driver-storage
+Summary: Storage driver plugin including all backends for the libvirtd daemon
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage-disk = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage-logical = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage-scsi = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage-iscsi = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage-mpath = %{version}-%{release}
+%if %{with_storage_iscsi_direct}
+Requires: libvirt-daemon-driver-storage-iscsi-direct = %{version}-%{release}
+%endif
+%if %{with_storage_gluster}
+Requires: libvirt-daemon-driver-storage-gluster = %{version}-%{release}
+%endif
+%if %{with_storage_rbd}
+Requires: libvirt-daemon-driver-storage-rbd = %{version}-%{release}
+%endif
+%if %{with_storage_sheepdog}
+Requires: libvirt-daemon-driver-storage-sheepdog = %{version}-%{release}
+%endif
+%if %{with_storage_zfs}
+Requires: libvirt-daemon-driver-storage-zfs = %{version}-%{release}
+%endif
+
+%description daemon-driver-storage
+The storage driver plugin for the libvirtd daemon, providing
+an implementation of the storage APIs using LVM, iSCSI,
+parted and more.
+
+
+%if %{with_qemu}
+%package daemon-driver-qemu
+Summary: QEMU driver plugin for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Requires: /usr/bin/qemu-img
+# For image compression
+Requires: gzip
+Requires: bzip2
+Requires: lzop
+Requires: xz
+Requires: systemd-container
+Requires: swtpm-tools
+
+%description daemon-driver-qemu
+The qemu driver plugin for the libvirtd daemon, providing
+an implementation of the hypervisor driver APIs using
+QEMU
+%endif
+
+
+%if %{with_lxc}
+%package daemon-driver-lxc
+Summary: LXC driver plugin for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+# There really is a hard cross-driver dependency here
+Requires: libvirt-daemon-driver-network = %{version}-%{release}
+Requires: systemd-container
+
+%description daemon-driver-lxc
+The LXC driver plugin for the libvirtd daemon, providing
+an implementation of the hypervisor driver APIs using
+the Linux kernel
+%endif
+
+
+%if %{with_vbox}
+%package daemon-driver-vbox
+Summary: VirtualBox driver plugin for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+
+%description daemon-driver-vbox
+The vbox driver plugin for the libvirtd daemon, providing
+an implementation of the hypervisor driver APIs using
+VirtualBox
+%endif
+
+
+%if %{with_libxl}
+%package daemon-driver-libxl
+Summary: Libxl driver plugin for the libvirtd daemon
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
+Obsoletes: libvirt-daemon-driver-xen < 4.3.0
+
+%description daemon-driver-libxl
+The Libxl driver plugin for the libvirtd daemon, providing
+an implementation of the hypervisor driver APIs using
+Libxl
+%endif
+
+
+
+%if %{with_qemu_tcg}
+%package daemon-qemu
+Summary: Server side daemon & driver required to run QEMU guests
+
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
+Requires: libvirt-daemon-driver-interface = %{version}-%{release}
+Requires: libvirt-daemon-driver-network = %{version}-%{release}
+Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
+Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
+Requires: libvirt-daemon-driver-secret = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage = %{version}-%{release}
+Requires: qemu
+
+%description daemon-qemu
+Server side daemon and driver required to manage the virtualization
+capabilities of the QEMU TCG emulators
+%endif
+
+
+%if %{with_qemu_kvm}
+%package daemon-kvm
+Summary: Server side daemon & driver required to run KVM guests
+
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
+Requires: libvirt-daemon-driver-interface = %{version}-%{release}
+Requires: libvirt-daemon-driver-network = %{version}-%{release}
+Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
+Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
+Requires: libvirt-daemon-driver-secret = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage = %{version}-%{release}
+Requires: qemu-kvm
+
+%description daemon-kvm
+Server side daemon and driver required to manage the virtualization
+capabilities of the KVM hypervisor
+%endif
+
+
+%if %{with_lxc}
+%package daemon-lxc
+Summary: Server side daemon & driver required to run LXC guests
+
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-daemon-driver-lxc = %{version}-%{release}
+Requires: libvirt-daemon-driver-interface = %{version}-%{release}
+Requires: libvirt-daemon-driver-network = %{version}-%{release}
+Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
+Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
+Requires: libvirt-daemon-driver-secret = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage = %{version}-%{release}
+
+%description daemon-lxc
+Server side daemon and driver required to manage the virtualization
+capabilities of LXC
+%endif
+
+
+%if %{with_libxl}
+%package daemon-xen
+Summary: Server side daemon & driver required to run XEN guests
+
+Requires: libvirt-daemon = %{version}-%{release}
+    %if %{with_libxl}
+Requires: libvirt-daemon-driver-libxl = %{version}-%{release}
+    %endif
+Requires: libvirt-daemon-driver-interface = %{version}-%{release}
+Requires: libvirt-daemon-driver-network = %{version}-%{release}
+Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
+Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
+Requires: libvirt-daemon-driver-secret = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage = %{version}-%{release}
+Requires: xen
+
+%description daemon-xen
+Server side daemon and driver required to manage the virtualization
+capabilities of XEN
+%endif
+
+%if %{with_vbox}
+%package daemon-vbox
+Summary: Server side daemon & driver required to run VirtualBox guests
+
+Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-daemon-driver-vbox = %{version}-%{release}
+Requires: libvirt-daemon-driver-interface = %{version}-%{release}
+Requires: libvirt-daemon-driver-network = %{version}-%{release}
+Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
+Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
+Requires: libvirt-daemon-driver-secret = %{version}-%{release}
+Requires: libvirt-daemon-driver-storage = %{version}-%{release}
+
+%description daemon-vbox
+Server side daemon and driver required to manage the virtualization
+capabilities of VirtualBox
+%endif
+
+%package client
+Summary: Client side utilities of the libvirt library
+Requires: %{name}-libs = %{version}-%{release}
+# Needed by virt-pki-validate script.
+Requires: gnutls-utils
+
+# Ensure smooth upgrades
+Obsoletes: libvirt-bash-completion < 7.3.0
+
+%description client
+The client binaries needed to access the virtualization
+capabilities of recent versions of Linux (and other OSes).
+
+%package libs
+Summary: Client side libraries
+# So remote clients can access libvirt over SSH tunnel
+Requires: cyrus-sasl
+# Needed by default sasl.conf - no onerous extra deps, since
+# 100's of other things on a system already pull in krb5-libs
+Requires: cyrus-sasl-gssapi
+
+%description libs
+Shared libraries for accessing the libvirt daemon.
+
+%if %{with_wireshark}
+%package wireshark
+Summary: Wireshark dissector plugin for libvirt RPC transactions
+Requires: wireshark
+Requires: %{name}-libs = %{version}-%{release}
+
+%description wireshark
+Wireshark dissector plugin for better analysis of libvirt RPC traffic.
+%endif
+
+%if %{with_lxc}
+%package login-shell
+Summary: Login shell for connecting users to an LXC container
+Requires: %{name}-libs = %{version}-%{release}
+
+%description login-shell
+Provides the set-uid virt-login-shell binary that is used to
+connect a user to an LXC container when they login, by switching
+namespaces.
+%endif
+
+%package devel
+Summary: Libraries, includes, etc. to compile with the libvirt library
+Requires: %{name}-libs = %{version}-%{release}
+Requires: pkgconfig
+
+%description devel
+Include header files & development libraries for the libvirt C library.
+
+%if %{with_sanlock}
+%package lock-sanlock
+Summary: Sanlock lock manager plugin for QEMU driver
+Requires: sanlock >= 2.4
+#for virt-sanlock-cleanup require augeas
+Requires: augeas
+Requires: %{name}-daemon = %{version}-%{release}
+Requires: %{name}-libs = %{version}-%{release}
+
+%description lock-sanlock
+Includes the Sanlock lock manager plugin for the QEMU
+driver
+%endif
+
+%package nss
+Summary: Libvirt plugin for Name Service Switch
+Requires: libvirt-daemon-driver-network = %{version}-%{release}
+
+%description nss
+Libvirt plugin for NSS for translating domain names into IP addresses.
+
+
+%prep
+
+%autosetup -S git_am -N
+
+# "make dist" replaces all symlinks with a copy of the linked files;
+# we need to replace all of them with the original symlinks
+echo "Restoring symlinks"
+while read lnk target; do
+    if [ -e $lnk ]; then
+        rm -rf $lnk
+        ln -s $target $lnk
+    fi
+done <%{_sourcedir}/symlinks || exit 1
+git add .
+git commit -q -a --allow-empty --author 'rpm-build <rpm-build>' -m symlinks
+
+
+git config gc.auto 0
+
+%autopatch
+
+%build
+%if 0%{?fedora} >= %{min_fedora} || 0%{?rhel} >= %{min_rhel}
+    %define supported_platform 1
+%else
+    %define supported_platform 0
+%endif
+
+%if ! %{supported_platform}
+echo "This RPM requires either Fedora >= %{min_fedora} or RHEL >= %{min_rhel}"
+exit 1
+%endif
+
+%if %{with_qemu}
+    %define arg_qemu -Ddriver_qemu=enabled
+%else
+    %define arg_qemu -Ddriver_qemu=disabled
+%endif
+
+%if %{with_openvz}
+    %define arg_openvz -Ddriver_openvz=enabled
+%else
+    %define arg_openvz -Ddriver_openvz=disabled
+%endif
+
+%if %{with_lxc}
+    %define arg_lxc -Ddriver_lxc=enabled
+    %define arg_login_shell -Dlogin_shell=enabled
+%else
+    %define arg_lxc -Ddriver_lxc=disabled
+    %define arg_login_shell -Dlogin_shell=disabled
+%endif
+
+%if %{with_vbox}
+    %define arg_vbox -Ddriver_vbox=enabled
+%else
+    %define arg_vbox -Ddriver_vbox=disabled
+%endif
+
+%if %{with_libxl}
+    %define arg_libxl -Ddriver_libxl=enabled
+%else
+    %define arg_libxl -Ddriver_libxl=disabled
+%endif
+
+%if %{with_esx}
+    %define arg_esx -Ddriver_esx=enabled -Dcurl=enabled
+%else
+    %define arg_esx -Ddriver_esx=disabled -Dcurl=disabled
+%endif
+
+%if %{with_hyperv}
+    %define arg_hyperv -Ddriver_hyperv=enabled -Dopenwsman=enabled
+%else
+    %define arg_hyperv -Ddriver_hyperv=disabled -Dopenwsman=disabled
+%endif
+
+%if %{with_vmware}
+    %define arg_vmware -Ddriver_vmware=enabled
+%else
+    %define arg_vmware -Ddriver_vmware=disabled
+%endif
+
+%if %{with_storage_rbd}
+    %define arg_storage_rbd -Dstorage_rbd=enabled
+%else
+    %define arg_storage_rbd -Dstorage_rbd=disabled
+%endif
+
+%if %{with_storage_sheepdog}
+    %define arg_storage_sheepdog -Dstorage_sheepdog=enabled
+%else
+    %define arg_storage_sheepdog -Dstorage_sheepdog=disabled
+%endif
+
+%if %{with_storage_gluster}
+    %define arg_storage_gluster -Dstorage_gluster=enabled -Dglusterfs=enabled
+%else
+    %define arg_storage_gluster -Dstorage_gluster=disabled -Dglusterfs=disabled
+%endif
+
+%if %{with_storage_zfs}
+    %define arg_storage_zfs -Dstorage_zfs=enabled
+%else
+    %define arg_storage_zfs -Dstorage_zfs=disabled
+%endif
+
+%if %{with_numactl}
+    %define arg_numactl -Dnumactl=enabled
+%else
+    %define arg_numactl -Dnumactl=disabled
+%endif
+
+%if %{with_numad}
+    %define arg_numad -Dnumad=enabled
+%else
+    %define arg_numad -Dnumad=disabled
+%endif
+
+%if %{with_fuse}
+    %define arg_fuse -Dfuse=enabled
+%else
+    %define arg_fuse -Dfuse=disabled
+%endif
+
+%if %{with_sanlock}
+    %define arg_sanlock -Dsanlock=enabled
+%else
+    %define arg_sanlock -Dsanlock=disabled
+%endif
+
+%if %{with_firewalld_zone}
+    %define arg_firewalld_zone -Dfirewalld_zone=enabled
+%else
+    %define arg_firewalld_zone -Dfirewalld_zone=disabled
+%endif
+
+%if %{with_netcf}
+    %define arg_netcf -Dnetcf=enabled
+%else
+    %define arg_netcf -Dnetcf=disabled
+%endif
+
+%if %{with_wireshark}
+    %define arg_wireshark -Dwireshark_dissector=enabled
+%else
+    %define arg_wireshark -Dwireshark_dissector=disabled
+%endif
+
+%if %{with_storage_iscsi_direct}
+    %define arg_storage_iscsi_direct -Dstorage_iscsi_direct=enabled -Dlibiscsi=enabled
+%else
+    %define arg_storage_iscsi_direct -Dstorage_iscsi_direct=disabled -Dlibiscsi=disabled
+%endif
+
+%if %{with_libssh}
+    %define arg_libssh -Dlibssh=enabled
+%else
+    %define arg_libssh -Dlibssh=disabled
+%endif
+
+%if %{with_libssh2}
+    %define arg_libssh2 -Dlibssh2=enabled
+%else
+    %define arg_libssh2 -Dlibssh2=disabled
+%endif
+
+%if %{with_modular_daemons}
+    %define arg_remote_mode -Dremote_default_mode=direct
+%else
+    %define arg_remote_mode -Dremote_default_mode=legacy
+%endif
+
+%define when  %(date +"%%F-%%T")
+%define where %(hostname)
+%define who   %{?packager}%{!?packager:Unknown}
+%define arg_packager -Dpackager="%{who}, %{when}, %{where}"
+%define arg_packager_version -Dpackager_version="%{release}"
+
+%define arg_selinux_mount -Dselinux_mount="/sys/fs/selinux"
+
+# place macros above and build commands below this comment
+
+export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/%{name}.spec)
+
+%meson \
+           -Drunstatedir=%{_rundir} \
+           %{?arg_qemu} \
+           %{?arg_openvz} \
+           %{?arg_lxc} \
+           %{?arg_vbox} \
+           %{?arg_libxl} \
+           -Dsasl=enabled \
+           -Dpolkit=enabled \
+           -Ddriver_libvirtd=enabled \
+           -Ddriver_remote=enabled \
+           -Ddriver_test=enabled \
+           %{?arg_esx} \
+           %{?arg_hyperv} \
+           %{?arg_vmware} \
+           -Ddriver_vz=disabled \
+           -Ddriver_bhyve=disabled \
+           -Ddriver_ch=disabled \
+           %{?arg_remote_mode} \
+           -Ddriver_interface=enabled \
+           -Ddriver_network=enabled \
+           -Dstorage_fs=enabled \
+           -Dstorage_lvm=enabled \
+           -Dstorage_iscsi=enabled \
+           %{?arg_storage_iscsi_direct} \
+           -Dstorage_scsi=enabled \
+           -Dstorage_disk=enabled \
+           -Dstorage_mpath=enabled \
+           %{?arg_storage_rbd} \
+           %{?arg_storage_sheepdog} \
+           %{?arg_storage_gluster} \
+           %{?arg_storage_zfs} \
+           -Dstorage_vstorage=disabled \
+           %{?arg_numactl} \
+           %{?arg_numad} \
+           -Dcapng=enabled \
+           %{?arg_fuse} \
+           %{?arg_netcf} \
+           -Dselinux=enabled \
+           %{?arg_selinux_mount} \
+           -Dapparmor=disabled \
+           -Dapparmor_profiles=disabled \
+           -Dsecdriver_apparmor=disabled \
+           -Dudev=enabled \
+           -Dyajl=enabled \
+           %{?arg_sanlock} \
+           -Dlibpcap=enabled \
+           -Dlibnl=enabled \
+           -Daudit=enabled \
+           -Ddtrace=enabled \
+           -Dfirewalld=enabled \
+           %{?arg_firewalld_zone} \
+           %{?arg_wireshark} \
+           %{?arg_libssh} \
+           %{?arg_libssh2} \
+           -Dpm_utils=disabled \
+           -Dnss=enabled \
+           %{arg_packager} \
+           %{arg_packager_version} \
+           -Dqemu_user=%{qemu_user} \
+           -Dqemu_group=%{qemu_group} \
+           -Dqemu_moddir=%{qemu_moddir} \
+           -Dqemu_datadir=%{qemu_datadir} \
+           -Dtls_priority=%{tls_priority} \
+           %{?enable_werror} \
+           -Dexpensive_tests=enabled \
+           -Dinit_script=systemd \
+           -Ddocs=enabled \
+           -Dtests=enabled \
+           -Drpath=disabled \
+           %{?arg_login_shell}
+
+%meson_build
+
+%install
+rm -fr %{buildroot}
+
+export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/%{name}.spec)
+
+%meson_install
+
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/lock-driver/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/lock-driver/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-backend/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-backend/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-file/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-file/*.a
+%if %{with_wireshark}
+rm -f $RPM_BUILD_ROOT%{wireshark_plugindir}/libvirt.la
+%endif
+
+# We don't want to install /etc/libvirt/qemu/networks in the main %%files list
+# because if the admin wants to delete the default network completely, we don't
+# want to end up re-incarnating it on every RPM upgrade.
+install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/
+cp $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml \
+   $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml
+# libvirt saves this file with mode 0600
+chmod 0600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml
+
+# nwfilter files are installed in /usr/share/libvirt and copied to /etc in %%post
+# to avoid verification errors on changed files in /etc
+install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/
+cp -a $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml \
+    $RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/
+# libvirt saves these files with mode 600
+chmod 600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml
+
+%if ! %{with_qemu}
+rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_qemu.aug
+rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
+%endif
+%find_lang %{name}
+
+%if ! %{with_sanlock}
+rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirt_sanlock.aug
+rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
+%endif
+
+%if ! %{with_lxc}
+rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_lxc.aug
+rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug
+%endif
+
+%if ! %{with_qemu}
+rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf
+rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.qemu
+%endif
+%if ! %{with_lxc}
+rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf
+rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc
+%endif
+%if ! %{with_libxl}
+rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/libxl.conf
+rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.libxl
+rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_libxl.aug
+rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug
+%endif
+
+# Copied into libvirt-docs subpackage eventually
+mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt libvirt-docs
+
+%ifarch %{arches_systemtap_64bit}
+mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes.stp \
+   $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes-64.stp
+
+    %if %{with_qemu}
+mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \
+   $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes-64.stp
+    %endif
+%endif
+
+%check
+# Building on slow archs, like emulated s390x in Fedora copr, requires
+# raising the test timeout
+VIR_TEST_DEBUG=1 %meson_test --no-suite syntax-check --timeout-multiplier 10
+
+%define libvirt_daemon_schedule_restart() mkdir -p %{_localstatedir}/lib/rpm-state/libvirt || : \
+/bin/systemctl is-active %1.service 1>/dev/null 2>&1 && \
+  touch %{_localstatedir}/lib/rpm-state/libvirt/restart-%1 || :
+
+%define libvirt_daemon_finish_restart() rm -f %{_localstatedir}/lib/rpm-state/libvirt/restart-%1 \
+rmdir %{_localstatedir}/lib/rpm-state/libvirt 2>/dev/null || :
+
+%define libvirt_daemon_needs_restart() -f %{_localstatedir}/lib/rpm-state/libvirt/restart-%1
+
+%define libvirt_daemon_perform_restart() if test %libvirt_daemon_needs_restart %1 \
+then \
+  /bin/systemctl try-restart %1.service >/dev/null 2>&1 || : \
+fi \
+%libvirt_daemon_finish_restart %1
+
+# For daemons with only UNIX sockets
+%define libvirt_daemon_systemd_post() %systemd_post %1.socket %1-ro.socket %1-admin.socket %1.service
+%define libvirt_daemon_systemd_preun() %systemd_preun %1.service %1-ro.socket %1-admin.socket %1.socket
+
+# For daemons with UNIX and INET sockets
+%define libvirt_daemon_systemd_post_inet() %systemd_post %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket %1.service
+%define libvirt_daemon_systemd_preun_inet() %systemd_preun %1.service %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket %1.socket
+
+# For daemons with only UNIX sockets and no unprivileged read-only access
+%define libvirt_daemon_systemd_post_priv() %systemd_post %1.socket %1-admin.socket %1.service
+%define libvirt_daemon_systemd_preun_priv() %systemd_preun %1.service %1-admin.socket %1.socket
+
+%pre daemon
+%libvirt_sysconfig_pre libvirtd virtproxyd virtlogd virtlockd libvirt-guests
+# 'libvirt' group is just to allow password-less polkit access to
+# libvirtd. The uid number is irrelevant, so we use dynamic allocation
+# described at the above link.
+getent group libvirt >/dev/null || groupadd -r libvirt
+
+exit 0
+
+%post daemon
+%libvirt_daemon_systemd_post_priv virtlogd
+%libvirt_daemon_systemd_post_priv virtlockd
+%if %{with_modular_daemons}
+%libvirt_daemon_systemd_post_inet virtproxyd
+%else
+%libvirt_daemon_systemd_post_inet libvirtd
+%endif
+
+%systemd_post libvirt-guests.service
+
+%libvirt_daemon_schedule_restart libvirtd
+
+%preun daemon
+%systemd_preun libvirt-guests.service
+
+%libvirt_daemon_systemd_preun_inet libvirtd
+%libvirt_daemon_systemd_preun_inet virtproxyd
+%libvirt_daemon_systemd_preun_priv virtlogd
+%libvirt_daemon_systemd_preun_priv virtlockd
+
+%postun daemon
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+    /bin/systemctl reload-or-try-restart virtlockd.service virtlogd.service >/dev/null 2>&1 || :
+fi
+%systemd_postun libvirt-guests.service
+
+# In upgrade scenario we must explicitly enable virtlockd/virtlogd
+# sockets, if libvirtd is already enabled and start them if
+# libvirtd is running, otherwise you'll get failures to start
+# guests
+%triggerpostun daemon -- libvirt-daemon < 1.3.0
+if [ $1 -ge 1 ] ; then
+    /bin/systemctl is-enabled libvirtd.service 1>/dev/null 2>&1 &&
+        /bin/systemctl enable virtlogd.socket virtlogd-admin.socket || :
+    /bin/systemctl is-active libvirtd.service 1>/dev/null 2>&1 &&
+        /bin/systemctl start virtlogd.socket virtlogd-admin.socket || :
+fi
+
+%posttrans daemon
+%libvirt_sysconfig_posttrans libvirtd virtproxyd virtlogd virtlockd libvirt-guests
+if test %libvirt_daemon_needs_restart libvirtd
+then
+    # See if user has previously modified their install to
+    # tell libvirtd to use --listen
+    grep -E '^LIBVIRTD_ARGS=.*--listen' /etc/sysconfig/libvirtd 1>/dev/null 2>&1
+    if test $? = 0
+    then
+        # Then lets keep honouring --listen and *not* use
+        # systemd socket activation, because switching things
+        # might confuse mgmt tool like puppet/ansible that
+        # expect the old style libvirtd
+        /bin/systemctl mask \
+                libvirtd.socket \
+                libvirtd-ro.socket \
+                libvirtd-admin.socket \
+                libvirtd-tls.socket \
+                libvirtd-tcp.socket >/dev/null 2>&1 || :
+    else
+        # Old libvirtd owns the sockets and will delete them on
+        # shutdown. Can't use a try-restart as libvirtd will simply
+        # own the sockets again when it comes back up. Thus we must
+        # do this particular ordering, so that we get libvirtd
+        # running with socket activation in use
+        /bin/systemctl is-active libvirtd.service 1>/dev/null 2>&1
+        if test $? = 0
+        then
+            /bin/systemctl stop libvirtd.service >/dev/null 2>&1 || :
+
+            /bin/systemctl try-restart \
+                    libvirtd.socket \
+                    libvirtd-ro.socket \
+                    libvirtd-admin.socket >/dev/null 2>&1 || :
+
+            /bin/systemctl start libvirtd.service >/dev/null 2>&1 || :
+        fi
+    fi
+fi
+
+%libvirt_daemon_finish_restart libvirtd
+
+%pre daemon-driver-network
+%libvirt_sysconfig_pre virtnetworkd
+
+%post daemon-driver-network
+%if %{with_firewalld_zone}
+    %firewalld_reload
+%endif
+
+%if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtnetworkd
+%endif
+%libvirt_daemon_schedule_restart virtnetworkd
+
+%preun daemon-driver-network
+%libvirt_daemon_systemd_preun virtnetworkd
+
+%postun daemon-driver-network
+%if %{with_firewalld_zone}
+    %firewalld_reload
+%endif
+
+%posttrans daemon-driver-network
+%libvirt_sysconfig_posttrans virtnetworkd
+%libvirt_daemon_perform_restart virtnetworkd
+
+%pre daemon-driver-nwfilter
+%libvirt_sysconfig_pre virtnwfilterd
+
+%post daemon-driver-nwfilter
+%if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtnwfilterd
+%endif
+%libvirt_daemon_schedule_restart virtnwfilterd
+
+%preun daemon-driver-nwfilter
+%libvirt_daemon_systemd_preun virtnwfilterd
+
+%posttrans daemon-driver-nwfilter
+%libvirt_sysconfig_posttrans virtnwfilterd
+%libvirt_daemon_perform_restart virtnwfilterd
+
+%pre daemon-driver-nodedev
+%libvirt_sysconfig_pre virtnodedevd
+
+%post daemon-driver-nodedev
+%if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtnodedevd
+%endif
+%libvirt_daemon_schedule_restart virtnodedevd
+
+%preun daemon-driver-nodedev
+%libvirt_daemon_systemd_preun virtnodedevd
+
+%posttrans daemon-driver-nodedev
+%libvirt_sysconfig_posttrans virtnodedevd
+%libvirt_daemon_perform_restart virtnodedevd
+
+%pre daemon-driver-interface
+%libvirt_sysconfig_pre virtinterfaced
+
+%post daemon-driver-interface
+%if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtinterfaced
+%endif
+%libvirt_daemon_schedule_restart virtinterfaced
+
+%preun daemon-driver-interface
+%libvirt_daemon_systemd_preun virtinterfaced
+
+%posttrans daemon-driver-interface
+%libvirt_sysconfig_posttrans virtinterfaced
+%libvirt_daemon_perform_restart virtinterfaced
+
+%pre daemon-driver-secret
+%libvirt_sysconfig_pre virtsecretd
+
+%post daemon-driver-secret
+%if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtsecretd
+%endif
+%libvirt_daemon_schedule_restart virtsecretd
+
+%preun daemon-driver-secret
+%libvirt_daemon_systemd_preun virtsecretd
+
+%posttrans daemon-driver-secret
+%libvirt_sysconfig_posttrans virtsecretd
+%libvirt_daemon_perform_restart virtsecretd
+
+
+%pre daemon-driver-storage-core
+%libvirt_sysconfig_pre virtstoraged
+
+%post daemon-driver-storage-core
+%if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtstoraged
+%endif
+%libvirt_daemon_schedule_restart virtstoraged
+
+%preun daemon-driver-storage-core
+%libvirt_daemon_systemd_preun virtstoraged
+
+%posttrans daemon-driver-storage-core
+%libvirt_sysconfig_posttrans virtstoraged
+%libvirt_daemon_perform_restart virtstoraged
+
+
+%if %{with_qemu}
+%pre daemon-driver-qemu
+%libvirt_sysconfig_pre virtqemud
+# We want soft static allocation of well-known ids, as disk images
+# are commonly shared across NFS mounts by id rather than name; see
+# https://fedoraproject.org/wiki/Packaging:UsersAndGroups
+getent group kvm >/dev/null || groupadd -f -g 36 -r kvm
+getent group qemu >/dev/null || groupadd -f -g 107 -r qemu
+if ! getent passwd qemu >/dev/null; then
+  if ! getent passwd 107 >/dev/null; then
+    useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu
+  else
+    useradd -r -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu
+  fi
+fi
+exit 0
+
+%post daemon-driver-qemu
+    %if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtqemud
+    %endif
+%libvirt_daemon_schedule_restart virtqemud
+
+%preun daemon-driver-qemu
+%libvirt_daemon_systemd_preun virtqemud
+
+%posttrans daemon-driver-qemu
+%libvirt_sysconfig_posttrans virtqemud
+%libvirt_daemon_perform_restart virtqemud
+%endif
+
+
+%if %{with_lxc}
+%pre daemon-driver-lxc
+%libvirt_sysconfig_pre virtlxcd
+
+%post daemon-driver-lxc
+    %if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtlxcd
+    %endif
+%libvirt_daemon_schedule_restart virtlxcd
+
+%preun daemon-driver-lxc
+%libvirt_daemon_systemd_preun virtlxcd
+
+%posttrans daemon-driver-lxc
+%libvirt_sysconfig_posttrans virtlxcd
+%libvirt_daemon_perform_restart virtlxcd
+%endif
+
+
+%if %{with_vbox}
+%post daemon-driver-vbox
+    %if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtvboxd
+    %endif
+%libvirt_daemon_schedule_restart virtvboxd
+
+%pre daemon-driver-vbox
+%libvirt_sysconfig_pre virtvboxd
+
+%preun daemon-driver-vbox
+%libvirt_daemon_systemd_preun virtvboxd
+
+%posttrans daemon-driver-vbox
+%libvirt_sysconfig_posttrans virtvboxd
+%libvirt_daemon_perform_restart virtvboxd
+%endif
+
+
+%if %{with_libxl}
+%post daemon-driver-libxl
+    %if %{with_modular_daemons}
+%libvirt_daemon_systemd_post virtxend
+    %endif
+%libvirt_daemon_schedule_restart virtxend
+
+%pre daemon-driver-libxl
+%libvirt_sysconfig_pre virtxend
+
+%preun daemon-driver-libxl
+%libvirt_daemon_systemd_preun virtxend
+
+%posttrans daemon-driver-libxl
+%libvirt_sysconfig_posttrans virtxend
+%libvirt_daemon_perform_restart virtxend
+%endif
+
+
+%post daemon-config-network
+if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; then
+    # see if the network used by default network creates a conflict,
+    # and try to resolve it
+    # NB: 192.168.122.0/24 is used in the default.xml template file;
+    # do not modify any of those values here without also modifying
+    # them in the template.
+    orig_sub=122
+    sub=${orig_sub}
+    nl='
+'
+    routes="${nl}$(ip route show | cut -d' ' -f1)${nl}"
+    case ${routes} in
+      *"${nl}192.168.${orig_sub}.0/24${nl}"*)
+        # there was a match, so we need to look for an unused subnet
+        for new_sub in $(seq 124 254); do
+          case ${routes} in
+          *"${nl}192.168.${new_sub}.0/24${nl}"*)
+            ;;
+          *)
+            sub=$new_sub
+            break;
+            ;;
+          esac
+        done
+        ;;
+      *)
+        ;;
+    esac
+
+    sed -e "s/${orig_sub}/${sub}/g" \
+         < %{_datadir}/libvirt/networks/default.xml \
+         > %{_sysconfdir}/libvirt/qemu/networks/default.xml
+    ln -s ../default.xml %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml
+    # libvirt saves this file with mode 0600
+    chmod 0600 %{_sysconfdir}/libvirt/qemu/networks/default.xml
+
+    # Make sure libvirt picks up the new network defininiton
+    %libvirt_daemon_schedule_restart libvirtd
+    %libvirt_daemon_schedule_restart virtnetworkd
+fi
+
+%posttrans daemon-config-network
+%libvirt_daemon_perform_restart libvirtd
+%libvirt_daemon_perform_restart virtnetworkd
+
+%post daemon-config-nwfilter
+for datadir_file in %{_datadir}/libvirt/nwfilter/*.xml; do
+  sysconfdir_file=%{_sysconfdir}/libvirt/nwfilter/$(basename "$datadir_file")
+  if [ ! -f "$sysconfdir_file" ]; then
+    # libvirt saves these files with mode 600
+    install -m 0600 "$datadir_file" "$sysconfdir_file"
+  fi
+done
+# Make sure libvirt picks up the new nwfilter defininitons
+%libvirt_daemon_schedule_restart libvirtd
+%libvirt_daemon_schedule_restart virtnwfilterd
+
+%posttrans daemon-config-nwfilter
+%libvirt_daemon_perform_restart libvirtd
+%libvirt_daemon_perform_restart virtnwfilterd
+
+%if %{with_lxc}
+%pre login-shell
+getent group virtlogin >/dev/null || groupadd -r virtlogin
+exit 0
+%endif
+
+%files
+
+%files docs
+%doc AUTHORS.rst NEWS.rst README.rst
+%doc libvirt-docs/*
+
+%files daemon
+
+%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/
+
+%{_unitdir}/libvirtd.service
+%{_unitdir}/libvirtd.socket
+%{_unitdir}/libvirtd-ro.socket
+%{_unitdir}/libvirtd-admin.socket
+%{_unitdir}/libvirtd-tcp.socket
+%{_unitdir}/libvirtd-tls.socket
+%{_unitdir}/virtproxyd.service
+%{_unitdir}/virtproxyd.socket
+%{_unitdir}/virtproxyd-ro.socket
+%{_unitdir}/virtproxyd-admin.socket
+%{_unitdir}/virtproxyd-tcp.socket
+%{_unitdir}/virtproxyd-tls.socket
+%{_unitdir}/virt-guest-shutdown.target
+%{_unitdir}/virtlogd.service
+%{_unitdir}/virtlogd.socket
+%{_unitdir}/virtlogd-admin.socket
+%{_unitdir}/virtlockd.service
+%{_unitdir}/virtlockd.socket
+%{_unitdir}/virtlockd-admin.socket
+%{_unitdir}/libvirt-guests.service
+%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf
+%config(noreplace) %{_sysconfdir}/libvirt/virtproxyd.conf
+%config(noreplace) %{_sysconfdir}/libvirt/virtlogd.conf
+%config(noreplace) %{_sysconfdir}/libvirt/virtlockd.conf
+%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
+%config(noreplace) %{_prefix}/lib/sysctl.d/60-libvirtd.conf
+
+%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd
+%dir %{_datadir}/libvirt/
+
+%ghost %dir %{_rundir}/libvirt/
+
+%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/
+%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/
+%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/
+%dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/
+
+
+%dir %attr(0755, root, root) %{_libdir}/libvirt/
+%dir %attr(0755, root, root) %{_libdir}/libvirt/connection-driver/
+%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver
+%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/lockd.so
+
+%{_datadir}/augeas/lenses/libvirtd.aug
+%{_datadir}/augeas/lenses/tests/test_libvirtd.aug
+%{_datadir}/augeas/lenses/virtlogd.aug
+%{_datadir}/augeas/lenses/tests/test_virtlogd.aug
+%{_datadir}/augeas/lenses/virtlockd.aug
+%{_datadir}/augeas/lenses/tests/test_virtlockd.aug
+%{_datadir}/augeas/lenses/virtproxyd.aug
+%{_datadir}/augeas/lenses/tests/test_virtproxyd.aug
+%{_datadir}/augeas/lenses/libvirt_lockd.aug
+%if %{with_qemu}
+%{_datadir}/augeas/lenses/tests/test_libvirt_lockd.aug
+%endif
+
+%{_datadir}/polkit-1/actions/org.libvirt.unix.policy
+%{_datadir}/polkit-1/actions/org.libvirt.api.policy
+%{_datadir}/polkit-1/rules.d/50-libvirt.rules
+
+%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/
+
+%attr(0755, root, root) %{_libexecdir}/libvirt_iohelper
+
+%attr(0755, root, root) %{_bindir}/virt-ssh-helper
+
+%attr(0755, root, root) %{_sbindir}/libvirtd
+%attr(0755, root, root) %{_sbindir}/virtproxyd
+%attr(0755, root, root) %{_sbindir}/virtlogd
+%attr(0755, root, root) %{_sbindir}/virtlockd
+%attr(0755, root, root) %{_libexecdir}/libvirt-guests.sh
+
+%{_mandir}/man1/virt-admin.1*
+%{_mandir}/man1/virt-host-validate.1*
+%{_mandir}/man8/virt-ssh-helper.8*
+%{_mandir}/man8/libvirt-guests.8*
+%{_mandir}/man8/libvirtd.8*
+%{_mandir}/man8/virtlogd.8*
+%{_mandir}/man8/virtlockd.8*
+%{_mandir}/man8/virtproxyd.8*
+%{_mandir}/man7/virkey*.7*
+
+%{_bindir}/virt-host-validate
+%{_bindir}/virt-admin
+%{_datadir}/bash-completion/completions/virt-admin
+
+%files daemon-config-network
+%dir %{_datadir}/libvirt/networks/
+%{_datadir}/libvirt/networks/default.xml
+%ghost %{_sysconfdir}/libvirt/qemu/networks/default.xml
+%ghost %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml
+
+%files daemon-config-nwfilter
+%dir %{_datadir}/libvirt/nwfilter/
+%{_datadir}/libvirt/nwfilter/*.xml
+%ghost %{_sysconfdir}/libvirt/nwfilter/*.xml
+
+%files daemon-driver-interface
+%config(noreplace) %{_sysconfdir}/libvirt/virtinterfaced.conf
+%{_datadir}/augeas/lenses/virtinterfaced.aug
+%{_datadir}/augeas/lenses/tests/test_virtinterfaced.aug
+%{_unitdir}/virtinterfaced.service
+%{_unitdir}/virtinterfaced.socket
+%{_unitdir}/virtinterfaced-ro.socket
+%{_unitdir}/virtinterfaced-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtinterfaced
+%{_libdir}/%{name}/connection-driver/libvirt_driver_interface.so
+%{_mandir}/man8/virtinterfaced.8*
+
+%files daemon-driver-network
+%config(noreplace) %{_sysconfdir}/libvirt/virtnetworkd.conf
+%{_datadir}/augeas/lenses/virtnetworkd.aug
+%{_datadir}/augeas/lenses/tests/test_virtnetworkd.aug
+%{_unitdir}/virtnetworkd.service
+%{_unitdir}/virtnetworkd.socket
+%{_unitdir}/virtnetworkd-ro.socket
+%{_unitdir}/virtnetworkd-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtnetworkd
+%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/
+%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/
+%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart
+%ghost %dir %{_rundir}/libvirt/network/
+%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/
+%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/dnsmasq/
+%attr(0755, root, root) %{_libexecdir}/libvirt_leaseshelper
+%{_libdir}/%{name}/connection-driver/libvirt_driver_network.so
+%{_mandir}/man8/virtnetworkd.8*
+
+%if %{with_firewalld_zone}
+%{_prefix}/lib/firewalld/zones/libvirt.xml
+%endif
+
+%files daemon-driver-nodedev
+%config(noreplace) %{_sysconfdir}/libvirt/virtnodedevd.conf
+%{_datadir}/augeas/lenses/virtnodedevd.aug
+%{_datadir}/augeas/lenses/tests/test_virtnodedevd.aug
+%{_unitdir}/virtnodedevd.service
+%{_unitdir}/virtnodedevd.socket
+%{_unitdir}/virtnodedevd-ro.socket
+%{_unitdir}/virtnodedevd-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtnodedevd
+%{_libdir}/%{name}/connection-driver/libvirt_driver_nodedev.so
+%{_mandir}/man8/virtnodedevd.8*
+
+%files daemon-driver-nwfilter
+%config(noreplace) %{_sysconfdir}/libvirt/virtnwfilterd.conf
+%{_datadir}/augeas/lenses/virtnwfilterd.aug
+%{_datadir}/augeas/lenses/tests/test_virtnwfilterd.aug
+%{_unitdir}/virtnwfilterd.service
+%{_unitdir}/virtnwfilterd.socket
+%{_unitdir}/virtnwfilterd-ro.socket
+%{_unitdir}/virtnwfilterd-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtnwfilterd
+%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/
+%ghost %dir %{_rundir}/libvirt/network/
+%{_libdir}/%{name}/connection-driver/libvirt_driver_nwfilter.so
+%{_mandir}/man8/virtnwfilterd.8*
+
+%files daemon-driver-secret
+%config(noreplace) %{_sysconfdir}/libvirt/virtsecretd.conf
+%{_datadir}/augeas/lenses/virtsecretd.aug
+%{_datadir}/augeas/lenses/tests/test_virtsecretd.aug
+%{_unitdir}/virtsecretd.service
+%{_unitdir}/virtsecretd.socket
+%{_unitdir}/virtsecretd-ro.socket
+%{_unitdir}/virtsecretd-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtsecretd
+%{_libdir}/%{name}/connection-driver/libvirt_driver_secret.so
+%{_mandir}/man8/virtsecretd.8*
+
+%files daemon-driver-storage
+
+%files daemon-driver-storage-core
+%config(noreplace) %{_sysconfdir}/libvirt/virtstoraged.conf
+%{_datadir}/augeas/lenses/virtstoraged.aug
+%{_datadir}/augeas/lenses/tests/test_virtstoraged.aug
+%{_unitdir}/virtstoraged.service
+%{_unitdir}/virtstoraged.socket
+%{_unitdir}/virtstoraged-ro.socket
+%{_unitdir}/virtstoraged-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtstoraged
+%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper
+%{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_fs.so
+%{_libdir}/%{name}/storage-file/libvirt_storage_file_fs.so
+%{_mandir}/man8/virtstoraged.8*
+
+%files daemon-driver-storage-disk
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_disk.so
+
+%files daemon-driver-storage-logical
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_logical.so
+
+%files daemon-driver-storage-scsi
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_scsi.so
+
+%files daemon-driver-storage-iscsi
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_iscsi.so
+
+%if %{with_storage_iscsi_direct}
+%files daemon-driver-storage-iscsi-direct
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_iscsi-direct.so
+%endif
+
+%files daemon-driver-storage-mpath
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_mpath.so
+
+%if %{with_storage_gluster}
+%files daemon-driver-storage-gluster
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_gluster.so
+%{_libdir}/%{name}/storage-file/libvirt_storage_file_gluster.so
+%endif
+
+%if %{with_storage_rbd}
+%files daemon-driver-storage-rbd
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_rbd.so
+%endif
+
+%if %{with_storage_sheepdog}
+%files daemon-driver-storage-sheepdog
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_sheepdog.so
+%endif
+
+%if %{with_storage_zfs}
+%files daemon-driver-storage-zfs
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_zfs.so
+%endif
+
+%if %{with_qemu}
+%files daemon-driver-qemu
+%config(noreplace) %{_sysconfdir}/libvirt/virtqemud.conf
+%config(noreplace) %{_prefix}/lib/sysctl.d/60-qemu-postcopy-migration.conf
+%{_datadir}/augeas/lenses/virtqemud.aug
+%{_datadir}/augeas/lenses/tests/test_virtqemud.aug
+%{_unitdir}/virtqemud.service
+%{_unitdir}/virtqemud.socket
+%{_unitdir}/virtqemud-ro.socket
+%{_unitdir}/virtqemud-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtqemud
+%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/
+%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/
+%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf
+%config(noreplace) %{_sysconfdir}/libvirt/qemu-lockd.conf
+%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.qemu
+%ghost %dir %{_rundir}/libvirt/qemu/
+%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/
+%dir %attr(0750, root, root) %{_localstatedir}/cache/libvirt/qemu/
+%{_datadir}/augeas/lenses/libvirtd_qemu.aug
+%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
+%{_libdir}/%{name}/connection-driver/libvirt_driver_qemu.so
+%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/swtpm/
+%dir %attr(0730, tss, tss) %{_localstatedir}/log/swtpm/libvirt/qemu/
+%{_bindir}/virt-qemu-run
+%{_mandir}/man1/virt-qemu-run.1*
+%{_mandir}/man8/virtqemud.8*
+%endif
+
+%if %{with_lxc}
+%files daemon-driver-lxc
+%config(noreplace) %{_sysconfdir}/libvirt/virtlxcd.conf
+%{_datadir}/augeas/lenses/virtlxcd.aug
+%{_datadir}/augeas/lenses/tests/test_virtlxcd.aug
+%{_unitdir}/virtlxcd.service
+%{_unitdir}/virtlxcd.socket
+%{_unitdir}/virtlxcd-ro.socket
+%{_unitdir}/virtlxcd-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtlxcd
+%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/lxc/
+%config(noreplace) %{_sysconfdir}/libvirt/lxc.conf
+%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.lxc
+%ghost %dir %{_rundir}/libvirt/lxc/
+%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/
+%{_datadir}/augeas/lenses/libvirtd_lxc.aug
+%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug
+%attr(0755, root, root) %{_libexecdir}/libvirt_lxc
+%{_libdir}/%{name}/connection-driver/libvirt_driver_lxc.so
+%{_mandir}/man8/virtlxcd.8*
+%endif
+
+%if %{with_libxl}
+%files daemon-driver-libxl
+%config(noreplace) %{_sysconfdir}/libvirt/virtxend.conf
+%{_datadir}/augeas/lenses/virtxend.aug
+%{_datadir}/augeas/lenses/tests/test_virtxend.aug
+%{_unitdir}/virtxend.service
+%{_unitdir}/virtxend.socket
+%{_unitdir}/virtxend-ro.socket
+%{_unitdir}/virtxend-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtxend
+%config(noreplace) %{_sysconfdir}/libvirt/libxl.conf
+%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.libxl
+%config(noreplace) %{_sysconfdir}/libvirt/libxl-lockd.conf
+%{_datadir}/augeas/lenses/libvirtd_libxl.aug
+%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug
+%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/libxl/
+%ghost %dir %{_rundir}/libvirt/libxl/
+%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/
+%{_libdir}/%{name}/connection-driver/libvirt_driver_libxl.so
+%{_mandir}/man8/virtxend.8*
+%endif
+
+%if %{with_vbox}
+%files daemon-driver-vbox
+%config(noreplace) %{_sysconfdir}/libvirt/virtvboxd.conf
+%{_datadir}/augeas/lenses/virtvboxd.aug
+%{_datadir}/augeas/lenses/tests/test_virtvboxd.aug
+%{_unitdir}/virtvboxd.service
+%{_unitdir}/virtvboxd.socket
+%{_unitdir}/virtvboxd-ro.socket
+%{_unitdir}/virtvboxd-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtvboxd
+%{_libdir}/%{name}/connection-driver/libvirt_driver_vbox.so
+%{_mandir}/man8/virtvboxd.8*
+%endif
+
+%if %{with_qemu_tcg}
+%files daemon-qemu
+%endif
+
+%if %{with_qemu_kvm}
+%files daemon-kvm
+%endif
+
+%if %{with_lxc}
+%files daemon-lxc
+%endif
+
+%if %{with_libxl}
+%files daemon-xen
+%endif
+
+%if %{with_vbox}
+%files daemon-vbox
+%endif
+
+%if %{with_sanlock}
+%files lock-sanlock
+    %if %{with_qemu}
+%config(noreplace) %{_sysconfdir}/libvirt/qemu-sanlock.conf
+    %endif
+    %if %{with_libxl}
+%config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf
+    %endif
+%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/sanlock.so
+%{_datadir}/augeas/lenses/libvirt_sanlock.aug
+%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
+%dir %attr(0770, root, sanlock) %{_localstatedir}/lib/libvirt/sanlock
+%{_sbindir}/virt-sanlock-cleanup
+%{_mandir}/man8/virt-sanlock-cleanup.8*
+%attr(0755, root, root) %{_libexecdir}/libvirt_sanlock_helper
+%endif
+
+%files client
+%{_mandir}/man1/virsh.1*
+%{_mandir}/man1/virt-xml-validate.1*
+%{_mandir}/man1/virt-pki-query-dn.1*
+%{_mandir}/man1/virt-pki-validate.1*
+%{_bindir}/virsh
+%{_bindir}/virt-xml-validate
+%{_bindir}/virt-pki-query-dn
+%{_bindir}/virt-pki-validate
+
+%{_datadir}/bash-completion/completions/virsh
+
+%files libs -f %{name}.lang
+%license COPYING COPYING.LESSER
+%config(noreplace) %{_sysconfdir}/libvirt/libvirt.conf
+%config(noreplace) %{_sysconfdir}/libvirt/libvirt-admin.conf
+%{_libdir}/libvirt.so.*
+%{_libdir}/libvirt-qemu.so.*
+%{_libdir}/libvirt-lxc.so.*
+%{_libdir}/libvirt-admin.so.*
+%dir %{_datadir}/libvirt/
+%dir %{_datadir}/libvirt/schemas/
+%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/
+
+%{_datadir}/systemtap/tapset/libvirt_probes*.stp
+%{_datadir}/systemtap/tapset/libvirt_functions.stp
+%if %{with_qemu}
+%{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp
+%endif
+
+%{_datadir}/libvirt/schemas/*.rng
+
+%{_datadir}/libvirt/cpu_map/*.xml
+
+%{_datadir}/libvirt/test-screenshot.png
+
+%if %{with_wireshark}
+%files wireshark
+%{wireshark_plugindir}/libvirt.so
+%endif
+
+%files nss
+%{_libdir}/libnss_libvirt.so.2
+%{_libdir}/libnss_libvirt_guest.so.2
+
+%if %{with_lxc}
+%files login-shell
+%attr(4750, root, virtlogin) %{_bindir}/virt-login-shell
+%{_libexecdir}/virt-login-shell-helper
+%config(noreplace) %{_sysconfdir}/libvirt/virt-login-shell.conf
+%{_mandir}/man1/virt-login-shell.1*
+%endif
+
+%files devel
+%{_libdir}/libvirt.so
+%{_libdir}/libvirt-admin.so
+%{_libdir}/libvirt-qemu.so
+%{_libdir}/libvirt-lxc.so
+%dir %{_includedir}/libvirt
+%{_includedir}/libvirt/virterror.h
+%{_includedir}/libvirt/libvirt.h
+%{_includedir}/libvirt/libvirt-admin.h
+%{_includedir}/libvirt/libvirt-common.h
+%{_includedir}/libvirt/libvirt-domain.h
+%{_includedir}/libvirt/libvirt-domain-checkpoint.h
+%{_includedir}/libvirt/libvirt-domain-snapshot.h
+%{_includedir}/libvirt/libvirt-event.h
+%{_includedir}/libvirt/libvirt-host.h
+%{_includedir}/libvirt/libvirt-interface.h
+%{_includedir}/libvirt/libvirt-network.h
+%{_includedir}/libvirt/libvirt-nodedev.h
+%{_includedir}/libvirt/libvirt-nwfilter.h
+%{_includedir}/libvirt/libvirt-secret.h
+%{_includedir}/libvirt/libvirt-storage.h
+%{_includedir}/libvirt/libvirt-stream.h
+%{_includedir}/libvirt/libvirt-qemu.h
+%{_includedir}/libvirt/libvirt-lxc.h
+%{_libdir}/pkgconfig/libvirt.pc
+%{_libdir}/pkgconfig/libvirt-admin.pc
+%{_libdir}/pkgconfig/libvirt-qemu.pc
+%{_libdir}/pkgconfig/libvirt-lxc.pc
+
+%dir %{_datadir}/libvirt/api/
+%{_datadir}/libvirt/api/libvirt-api.xml
+%{_datadir}/libvirt/api/libvirt-admin-api.xml
+%{_datadir}/libvirt/api/libvirt-qemu-api.xml
+%{_datadir}/libvirt/api/libvirt-lxc-api.xml
+
+
+%changelog
+* Thu Mar 31 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-8
+- qemu: fix hotplug for multiqueue vdpa net device (rhbz#2024406)
+
+* Fri Mar 18 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-7
+- nwfilter: hold filter update lock when creating/deleting bindings (rhbz#2044379)
+- qemu,lxc: remove use to nwfilter update lock (rhbz#2044379)
+- qemu: support multiqueue for vdpa net device (rhbz#2024406)
+
+* Thu Mar  3 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-6
+- qemu: support firmware descriptor flash 'mode' for optional NVRAM (rhbz#2057769)
+
+* Thu Feb 24 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-5
+- Make systemd unit ordering more robust (rhbz#1868537)
+- util: Fix machined servicename (rhbz#1868537)
+
+* Thu Feb 10 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-4
+- qemu_command: Generate memory only after controllers (rhbz#2047271)
+- qemu: Validate domain definition even on migration (rhbz#2048435)
+
+* Wed Feb  2 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-3
+- qemuDomainSetupDisk: Initialize 'targetPaths' (rhbz#2046170)
+
+* Tue Jan 25 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-2
+- build: Only install libvirt-guests when building libvirtd (rhbz#2042529)
+- docs: Add man page for libvirt-guests (rhbz#2042529)
+- remove sysconfig files (rhbz#2042529)
+- spec: Run pre/post-install stuff on 'daemon-driver-storage-core' (rhbz#2025644)
+- qemu: fix inactive snapshot revert (rhbz#2039136)
+- Revert "report error when virProcessGetStatInfo() is unable to parse data" (rhbz#2043579)
+
+* Fri Jan 14 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-1
+- Rebased to libvirt-8.0.0 (rhbz#2001507)
+- The rebase also fixes the following bugs:
+    rhbz#2039246, rhbz#2039652, rhbz#2039651, rhbz#2039131
+
+* Mon Jan 10 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-0rc1.1
+- Rebased to libvirt-8.0.0-rc1 (rhbz#2001507)
+- The rebase also fixes the following bugs:
+    rhbz#2034539, rhbz#2027400, rhbz#1945420, rhbz#1851249, rhbz#2032410
+    rhbz#2026812, rhbz#2032365, rhbz#2035888, rhbz#2036895, rhbz#2026537
+
+* Wed Dec  1 2021 Jiri Denemark <jdenemar@redhat.com> - 7.10.0-1
+- Rebased to libvirt-7.10.0 (rhbz#2001507)
+- The rebase also fixes the following bugs:
+    rhbz#2024098, rhbz#1964223, rhbz#2018488, rhbz#2021437, rhbz#2022589
+    rhbz#2023605, rhbz#1431589, rhbz#2024435, rhbz#2016599, rhbz#1945501
+    rhbz#2023674
+
+* Fri Nov  5 2021 Jiri Denemark <jdenemar@redhat.com> - 7.9.0-1
+- Rebased to libvirt-7.9.0 (rhbz#2001507)
+- The rebase also fixes the following bugs:
+    rhbz#2007659, rhbz#2014487, rhbz#1806856, rhbz#2014139, rhbz#1964223
+    rhbz#2007168, rhbz#2012386, rhbz#2013573, rhbz#1897708
+
+* Tue Oct  5 2021 Jiri Denemark <jdenemar@redhat.com> - 7.8.0-1
+- Rebased to libvirt-7.8.0 (rhbz#2001507)
+- The rebase also fixes the following bugs:
+    rhbz#1999420, rhbz#2002761, rhbz#1998920, rhbz#1986066, rhbz#1822891
+    rhbz#2001627, rhbz#1819160, rhbz#2000861, rhbz#2003092
+
+* Wed Sep 22 2021 Jiri Denemark <jdenemar@redhat.com> - 7.7.0-3
+- virshDomainGetVcpuBitmap: Return bitmap when taking the fallback path (rhbz#2004429)
+
+* Tue Sep 21 2021 Jiri Denemark <jdenemar@redhat.com> - 7.7.0-2
+- Update gating.yaml by adding subject_type
+- Revert "RHEL: spec: Do not enable modular daemons yet" (rhbz#1920012)
+
+* Fri Sep 10 2021 Jiri Denemark <jdenemar@redhat.com> - 7.7.0-1
+- Rebased to libvirt-7.7.0 (rhbz#2001507)
+- The rebase also fixes the following bugs:
+    rhbz#2001326, rhbz#2001391, rhbz#2001322, rhbz#2001389, rhbz#1967187
+    rhbz#2001327, rhbz#1977155, rhbz#2001997, rhbz#2001323
+- RHEL: spec: Do not enable modular daemons yet (rhbz#2001507)
+
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 7.6.0-2
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Wed Aug  4 2021 Jiri Denemark <jdenemar@redhat.com> - 7.6.0-1
+- Rebased to libvirt-7.6.0 (rhbz#1950948)
+- The rebase also fixes the following bugs:
+    rhbz#1986509, rhbz#1984318, rhbz#1810661, rhbz#1977776, rhbz#1948433
+    rhbz#1978526, rhbz#1976690
+
+* Wed Jul 14 2021 Jiri Denemark <jdenemar@redhat.com> - 7.5.0-1
+- Rebased to libvirt-7.5.0 (rhbz#1950948)
+- The rebase also fixes the following bugs:
+    rhbz#1949388, rhbz#1969354, rhbz#1970277, rhbz#1972145, rhbz#1973094
+    rhbz#1975071, rhbz#1972468, rhbz#1975677
+
+* Mon Jun  7 2021 Jiri Denemark <jdenemar@redhat.com> - 7.4.0-1
+- Rebased to libvirt-7.4.0 (rhbz#1950948)
+- The rebase also fixes the following bugs:
+    rhbz#1960993
+
+* Mon May 24 2021 Jiri Denemark <jdenemar@redhat.com> - 7.3.0-1
+- Rebased to libvirt-7.3.0 (rhbz#1950948)
+- The rebase also fixes the following bugs:
+    rhbz#1898526, rhbz#1910617, rhbz#1910618, rhbz#1943392, rhbz#1946918
+    rhbz#1947718, rhbz#1947720, rhbz#1947824, rhbz#1949342, rhbz#1950228
+    rhbz#1950301, rhbz#1950601, rhbz#1950948, rhbz#1953939, rhbz#1958302
+    rhbz#1962053
+- RHEL: Enable usage of x-blockdev-reopen (rhbz#1953939)
+- RHEL: Add gating.yaml for RHEL9 (rhbz#1950601)
+
+* Thu Apr 22 2021 Jiri Denemark <jdenemar@redhat.com> - 7.0.0-6
+- spec: Do not build qemu driver for Power on RHEL-9 (rhbz#1946529)
+
+* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 7.0.0-5
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Wed Feb 03 2021 Cole Robinson <aintdiscole@gmail.com> - 7.0.0-4
+- Increase meson test timeout to fix builds on s390x copr
+
+* Tue Feb 02 2021 Laine Stump <laine@redhat.com> - 7.0.0-3
+- disable netcf in build
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Fri Jan 15 2021 Daniel P. Berrangé <berrange@redhat.com> - 7.0.0-1
+- Rebase to 7.0.0 release
+
+* Fri Dec 04 2020 Cole Robinson <aintdiscole@gmail.com> - 6.10.0-2.1
+- Rebuild for wireshark soname bump
+
+* Fri Dec 04 2020 Richard W.M. Jones <rjones@redhat.com> - 6.10.0-2
+- Build libvirt-daemon-kvm for riscv64.
+
+* Tue Dec 01 2020 Cole Robinson <crobinso@redhat.com> - 6.10.0-1
+- Update to version 6.10.0
+
+* Wed Nov  4 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.9.0-2
+- Re-apply reverted fix for disabling glusterfs, curl, openswman and libiscsi
+
+* Tue Nov 03 2020 Cole Robinson <crobinso@redhat.com> - 6.9.0-1
+- Update to version 6.9.0
+
+* Mon Nov  2 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.8.0-4
+- Really fix meson option for disabling glusterfs
+- Fix disabling curl, openswman and libiscsi
+
+* Mon Nov  2 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.8.0-4
+- Fix name of meson option for disabling glusterfs
+
+* Fri Oct 30 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.8.0-3
+- Fix stat() mocking for new glibc
+
+* Wed Oct 28 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.8.0-2
+- Remove obsolete bash_completion conditional
+- Pass args to meson based on with_libssh/with_libssh2
+
+* Thu Oct 01 2020 Cole Robinson <crobinso@redhat.com> - 6.8.0-1
+- Update to version 6.8.0
+
+* Fri Sep  4 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.7.0-2
+- Fix QEMU start when KVM is not loaded (rhbz#1875327)
+
+* Tue Sep 01 2020 Cole Robinson <crobinso@redhat.com> - 6.7.0-1
+- Update to version 6.7.0
+
+* Fri Aug 21 2020 Merlin Mathesius <mmathesi@redhat.com> - 6.6.0-3
+- Fix so no platforms depend upon ceph for 32-bit architectures
+- Include upstream patches to fix GCC 10 warnings
+
+* Fri Aug 21 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.6.0-2
+- Fix creation of pools on non-btrfs (rhbz#1870197)
+
+* Tue Aug 04 2020 Cole Robinson <crobinso@redhat.com> - 6.6.0-1
+- Update to version 6.6.0
+
+* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 6.5.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Fri Jul 03 2020 Cole Robinson <crobinso@redhat.com> - 6.5.0-1
+- Update to version 6.5.0
+
+* Tue Jun 02 2020 Cole Robinson <crobinso@redhat.com> - 6.4.0-1
+- Update to version 6.4.0
+
+* Tue May 05 2020 Cole Robinson <crobinso@redhat.com> - 6.3.0-1
+- Update to version 6.3.0
+
+* Thu Apr 02 2020 Cole Robinson <crobinso@redhat.com> - 6.2.0-1
+- Update to version 6.2.0
+
+* Tue Mar 24 2020 Felipe Borges <feborges@redhat.com> - 6.1.0-2
+- Check for disk type correctly in virDomainDiskTranslateSourcePool
+
+* Wed Mar 04 2020 Cole Robinson <crobinso@redhat.com> - 6.1.0-1
+- Update to version 6.1.0
+
+* Tue Feb 25 2020 Cole Robinson <crobinso@redhat.com> - 6.0.0-3
+- Rebuild for libiscsi soname bump
+
+* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 6.0.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Wed Jan 15 2020 Cole Robinson <crobinso@redhat.com> - 6.0.0-1
+- Update to version 6.0.0