diff --git a/0001-tests-Fix-libxlxml2domconfigtest-with-latest-xen.patch b/0001-tests-Fix-libxlxml2domconfigtest-with-latest-xen.patch
deleted file mode 100644
index c6d1836..0000000
--- a/0001-tests-Fix-libxlxml2domconfigtest-with-latest-xen.patch
+++ /dev/null
@@ -1,239 +0,0 @@
-From 99b40587e8cd83a136d94e208d32a80be76dc22a Mon Sep 17 00:00:00 2001
-Message-Id: <99b40587e8cd83a136d94e208d32a80be76dc22a.1666875466.git.crobinso@redhat.com>
-From: Cole Robinson <crobinso@redhat.com>
-Date: Thu, 27 Oct 2022 08:51:25 -0400
-Subject: [PATCH] tests: Fix libxlxml2domconfigtest with latest xen
-Content-type: text/plain
-
-shadow_memkb is populated from a libxl API call, and the value can
-change. For example:
-https://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=2c992810854a15b41be920519ce83a4a328d5168
-
-Mock libxl_get_required_shadow_memory to give consistent output
-
-Signed-off-by: Cole Robinson <crobinso@redhat.com>
----
- tests/libxlmock.c                                     | 11 +++++++++++
- tests/libxlxml2domconfigdata/basic-hvm.json           |  2 +-
- tests/libxlxml2domconfigdata/basic-pv.json            |  2 +-
- tests/libxlxml2domconfigdata/basic-pvh.json           |  2 +-
- tests/libxlxml2domconfigdata/cpu-shares-hvm.json      |  2 +-
- tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json  |  2 +-
- .../fullvirt-cpuid-legacy-nest.json                   |  2 +-
- tests/libxlxml2domconfigdata/fullvirt-cpuid.json      |  2 +-
- .../libxlxml2domconfigdata/max-eventchannels-hvm.json |  2 +-
- tests/libxlxml2domconfigdata/max-gntframes-hvm.json   |  2 +-
- tests/libxlxml2domconfigdata/moredevs-hvm.json        |  2 +-
- tests/libxlxml2domconfigdata/multiple-ip.json         |  2 +-
- tests/libxlxml2domconfigdata/variable-clock-hvm.json  |  2 +-
- .../libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json |  2 +-
- tests/libxlxml2domconfigdata/vnuma-hvm.json           |  2 +-
- 15 files changed, 25 insertions(+), 14 deletions(-)
-
-diff --git a/tests/libxlmock.c b/tests/libxlmock.c
-index 0e4bf7df52..4754597e5b 100644
---- a/tests/libxlmock.c
-+++ b/tests/libxlmock.c
-@@ -109,6 +109,17 @@ VIR_MOCK_STUB_RET_ARGS(bind,
-                        const struct sockaddr *, addr,
-                        socklen_t, addrlen)
- 
-+VIR_MOCK_IMPL_RET_ARGS(libxl_get_required_shadow_memory,
-+                       unsigned long,
-+                       unsigned long, maxmem_kb,
-+                       unsigned int, smp_cpus)
-+{
-+    /* silence gcc warning about unused function */
-+    if (0)
-+        real_libxl_get_required_shadow_memory(maxmem_kb, smp_cpus);
-+    return 1234;
-+}
-+
- VIR_MOCK_IMPL_RET_ARGS(__xstat, int,
-                        int, ver,
-                        const char *, path,
-diff --git a/tests/libxlxml2domconfigdata/basic-hvm.json b/tests/libxlxml2domconfigdata/basic-hvm.json
-index 87f8cb7d8a..d30875420d 100644
---- a/tests/libxlxml2domconfigdata/basic-hvm.json
-+++ b/tests/libxlxml2domconfigdata/basic-hvm.json
-@@ -15,7 +15,7 @@
-         "max_memkb": 1048576,
-         "target_memkb": 1048576,
-         "video_memkb": 8192,
--        "shadow_memkb": 12288,
-+        "shadow_memkb": 1234,
-         "device_model_version": "qemu_xen",
-         "device_model": "/bin/true",
-         "sched_params": {
-diff --git a/tests/libxlxml2domconfigdata/basic-pv.json b/tests/libxlxml2domconfigdata/basic-pv.json
-index b71c3b0f49..32d188fabd 100644
---- a/tests/libxlxml2domconfigdata/basic-pv.json
-+++ b/tests/libxlxml2domconfigdata/basic-pv.json
-@@ -14,7 +14,7 @@
-         ],
-         "max_memkb": 524288,
-         "target_memkb": 524288,
--        "shadow_memkb": 8192,
-+        "shadow_memkb": 1234,
-         "sched_params": {
- 
-         },
-diff --git a/tests/libxlxml2domconfigdata/basic-pvh.json b/tests/libxlxml2domconfigdata/basic-pvh.json
-index 48365c9026..f51957aa85 100644
---- a/tests/libxlxml2domconfigdata/basic-pvh.json
-+++ b/tests/libxlxml2domconfigdata/basic-pvh.json
-@@ -14,7 +14,7 @@
-         ],
-         "max_memkb": 524288,
-         "target_memkb": 524288,
--        "shadow_memkb": 8192,
-+        "shadow_memkb": 1234,
-         "sched_params": {
- 
-         },
-diff --git a/tests/libxlxml2domconfigdata/cpu-shares-hvm.json b/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
-index 2aa97e88c5..15105c83ad 100644
---- a/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
-+++ b/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
-@@ -15,7 +15,7 @@
-         "max_memkb": 1048576,
-         "target_memkb": 1048576,
-         "video_memkb": 8192,
--        "shadow_memkb": 12288,
-+        "shadow_memkb": 1234,
-         "device_model_version": "qemu_xen",
-         "device_model": "/bin/true",
-         "sched_params": {
-diff --git a/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json b/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json
-index a2d46797aa..26f5abefee 100644
---- a/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json
-+++ b/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json
-@@ -11,7 +11,7 @@
-         ],
-         "max_memkb": 592896,
-         "target_memkb": 403456,
--        "shadow_memkb": 5656,
-+        "shadow_memkb": 1234,
-         "sched_params": {
-         },
-         "apic": "True",
-diff --git a/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json b/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json
-index 6290655c20..740b82d2e6 100644
---- a/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json
-+++ b/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json
-@@ -11,7 +11,7 @@
-         ],
-         "max_memkb": 592896,
-         "target_memkb": 403456,
--        "shadow_memkb": 5656,
-+        "shadow_memkb": 1234,
-         "cpuid": [
-             {
-                 "leaf": 1,
-diff --git a/tests/libxlxml2domconfigdata/fullvirt-cpuid.json b/tests/libxlxml2domconfigdata/fullvirt-cpuid.json
-index 811a4f0ac7..8bf41894a5 100644
---- a/tests/libxlxml2domconfigdata/fullvirt-cpuid.json
-+++ b/tests/libxlxml2domconfigdata/fullvirt-cpuid.json
-@@ -11,7 +11,7 @@
-         ],
-         "max_memkb": 592896,
-         "target_memkb": 403456,
--        "shadow_memkb": 5656,
-+        "shadow_memkb": 1234,
-         "cpuid": [
-             {
-                 "leaf": 1,
-diff --git a/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json b/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
-index 4a5b0ca65f..6f0daa065f 100644
---- a/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
-+++ b/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
-@@ -15,7 +15,7 @@
-         "max_memkb": 1048576,
-         "target_memkb": 1048576,
-         "video_memkb": 8192,
--        "shadow_memkb": 12288,
-+        "shadow_memkb": 1234,
-         "event_channels": 2047,
-         "device_model_version": "qemu_xen",
-         "device_model": "/bin/true",
-diff --git a/tests/libxlxml2domconfigdata/max-gntframes-hvm.json b/tests/libxlxml2domconfigdata/max-gntframes-hvm.json
-index 2883d057ff..35de588abc 100644
---- a/tests/libxlxml2domconfigdata/max-gntframes-hvm.json
-+++ b/tests/libxlxml2domconfigdata/max-gntframes-hvm.json
-@@ -15,7 +15,7 @@
-         "max_memkb": 1048576,
-         "target_memkb": 1048576,
-         "video_memkb": 8192,
--        "shadow_memkb": 12288,
-+        "shadow_memkb": 1234,
-         "max_grant_frames": 64,
-         "device_model_version": "qemu_xen",
-         "device_model": "/bin/true",
-diff --git a/tests/libxlxml2domconfigdata/moredevs-hvm.json b/tests/libxlxml2domconfigdata/moredevs-hvm.json
-index 58cf32a8d4..bdc9afc29b 100644
---- a/tests/libxlxml2domconfigdata/moredevs-hvm.json
-+++ b/tests/libxlxml2domconfigdata/moredevs-hvm.json
-@@ -17,7 +17,7 @@
-         "max_memkb": 1048576,
-         "target_memkb": 1048576,
-         "video_memkb": 8192,
--        "shadow_memkb": 12288,
-+        "shadow_memkb": 1234,
-         "device_model_version": "qemu_xen",
-         "device_model": "/bin/true",
-         "sched_params": {
-diff --git a/tests/libxlxml2domconfigdata/multiple-ip.json b/tests/libxlxml2domconfigdata/multiple-ip.json
-index 2db98b82f6..e0b37aa795 100644
---- a/tests/libxlxml2domconfigdata/multiple-ip.json
-+++ b/tests/libxlxml2domconfigdata/multiple-ip.json
-@@ -14,7 +14,7 @@
-         ],
-         "max_memkb": 524288,
-         "target_memkb": 524288,
--        "shadow_memkb": 8192,
-+        "shadow_memkb": 1234,
-         "sched_params": {
- 
-         },
-diff --git a/tests/libxlxml2domconfigdata/variable-clock-hvm.json b/tests/libxlxml2domconfigdata/variable-clock-hvm.json
-index 9a25d51da2..3c131c603c 100644
---- a/tests/libxlxml2domconfigdata/variable-clock-hvm.json
-+++ b/tests/libxlxml2domconfigdata/variable-clock-hvm.json
-@@ -15,7 +15,7 @@
-         "max_memkb": 1048576,
-         "target_memkb": 1048576,
-         "video_memkb": 8192,
--        "shadow_memkb": 12288,
-+        "shadow_memkb": 1234,
-         "rtc_timeoffset": 3600,
-         "localtime": "True",
-         "device_model_version": "qemu_xen",
-diff --git a/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json b/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json
-index 6cda8d0252..6725df9112 100644
---- a/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json
-+++ b/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json
-@@ -103,7 +103,7 @@
-         "max_memkb": 1048576,
-         "target_memkb": 1048576,
-         "video_memkb": 8192,
--        "shadow_memkb": 14336,
-+        "shadow_memkb": 1234,
-         "device_model_version": "qemu_xen",
-         "device_model": "/bin/true",
-         "sched_params": {
-diff --git a/tests/libxlxml2domconfigdata/vnuma-hvm.json b/tests/libxlxml2domconfigdata/vnuma-hvm.json
-index f578ccd3d3..2556c82d5f 100644
---- a/tests/libxlxml2domconfigdata/vnuma-hvm.json
-+++ b/tests/libxlxml2domconfigdata/vnuma-hvm.json
-@@ -103,7 +103,7 @@
-         "max_memkb": 1048576,
-         "target_memkb": 1048576,
-         "video_memkb": 8192,
--        "shadow_memkb": 14336,
-+        "shadow_memkb": 1234,
-         "device_model_version": "qemu_xen",
-         "device_model": "/bin/true",
-         "sched_params": {
--- 
-2.37.3
-
diff --git a/libvirt.spec b/libvirt.spec
index b43f9a9..bcdc188 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -229,8 +229,8 @@
 
 Summary: Library providing a simple virtualization API
 Name: libvirt
-Version: 8.8.0
-Release: 2%{?dist}
+Version: 8.9.0
+Release: 1%{?dist}
 License: LGPLv2+
 URL: https://libvirt.org/
 
@@ -238,7 +238,6 @@ URL: https://libvirt.org/
     %define mainturl stable_updates/
 %endif
 Source: https://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.xz
-Patch: 0001-tests-Fix-libxlxml2domconfigtest-with-latest-xen.patch
 
 Requires: libvirt-daemon = %{version}-%{release}
 Requires: libvirt-daemon-config-network = %{version}-%{release}
@@ -272,7 +271,7 @@ Requires: libvirt-libs = %{version}-%{release}
 # listed against each sub-RPM
 BuildRequires: python3-docutils
 BuildRequires: gcc
-BuildRequires: meson >= 0.54.0
+BuildRequires: meson >= 0.56.0
 BuildRequires: ninja-build
 BuildRequires: git
 BuildRequires: perl-interpreter
@@ -294,6 +293,7 @@ BuildRequires: libblkid-devel >= 2.17
 # for augparse, optionally used in testing
 BuildRequires: augeas
 BuildRequires: systemd-devel >= 185
+BuildRequires: systemd-rpm-macros
 BuildRequires: libpciaccess-devel >= 0.10.9
 BuildRequires: yajl-devel
 %if %{with_sanlock}
@@ -477,7 +477,6 @@ Requires: gettext-runtime
 Requires: gettext
 %endif
 
-
 # Ensure smooth upgrades
 Obsoletes: libvirt-admin < 7.3.0
 Provides: libvirt-admin = %{version}-%{release}
@@ -904,6 +903,15 @@ Obsoletes: libvirt-bash-completion < 7.3.0
 The client binaries needed to access the virtualization
 capabilities of recent versions of Linux (and other OSes).
 
+%package client-qemu
+Summary: Additional client side utilities for QEMU
+Requires: %{name}-libs = %{version}-%{release}
+Requires: python3-libvirt >= %{version}-%{release}
+
+%description client-qemu
+The additional client binaries are used to interact
+with some QEMU specific features of libvirt.
+
 %package libs
 Summary: Client side libraries
 # So remote clients can access libvirt over SSH tunnel
@@ -2164,6 +2172,12 @@ exit 0
 
 %{_datadir}/bash-completion/completions/virsh
 
+%if %{with_qemu}
+%files client-qemu
+%{_mandir}/man1/virt-qemu-qmp-proxy.1*
+%{_bindir}/virt-qemu-qmp-proxy
+%endif
+
 %files libs -f %{name}.lang
 %license COPYING COPYING.LESSER
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/
@@ -2379,6 +2393,9 @@ exit 0
 
 
 %changelog
+* Thu Nov 03 2022 Cole Robinson <crobinso@redhat.com> - 8.9.0-1
+- Update to version 8.9.0
+
 * Mon Oct 24 2022 Cole Robinson <crobinso@redhat.com> - 8.8.0-2
 - Rebuild for wireshark soname bump
 
diff --git a/sources b/sources
index 1a8f446..92a339a 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libvirt-8.8.0.tar.xz) = 868e49b369afe200c5af6e2cd0606de2eeebfa92523b5ad3c653203c8838d304bd0cdc5acfb3c4d4c33c0a87ab8e769b84cc62e3f06e055936c43573a23d7190
+SHA512 (libvirt-8.9.0.tar.xz) = 10426d45d55bb18e8e5d4327d698fbc6efd83c5f515ac40a0fcd72048a77936fe0b422ac14bce9966a65379d262df294c314f854a97861a223a0cbc6a8fd2382