diff --git a/0001-target-i386-the-sgx_epc_get_section-stub-is-reachabl.patch b/0001-target-i386-the-sgx_epc_get_section-stub-is-reachabl.patch
deleted file mode 100644
index 5245b0f..0000000
--- a/0001-target-i386-the-sgx_epc_get_section-stub-is-reachabl.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e54512fe75f85640c0c73e53e6f8bd0b9d193529 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini@redhat.com>
-Date: Tue, 1 Feb 2022 20:09:37 +0100
-Subject: [PATCH 1/7] target/i386: the sgx_epc_get_section stub is reachable
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The sgx_epc_get_section stub is reachable from cpu_x86_cpuid.  It
-should not assert, instead it should just return true just like
-the "real" sgx_epc_get_section does when SGX is disabled.
-
-Reported-by: Vladimír Beneš <vbenes@redhat.com>
-Cc: qemu-stable@nongnu.org
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
----
- hw/i386/sgx-stub.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/hw/i386/sgx-stub.c b/hw/i386/sgx-stub.c
-index 26833eb233..16b1dfd90b 100644
---- a/hw/i386/sgx-stub.c
-+++ b/hw/i386/sgx-stub.c
-@@ -34,5 +34,5 @@ void pc_machine_init_sgx_epc(PCMachineState *pcms)
- 
- bool sgx_epc_get_section(int section_nr, uint64_t *addr, uint64_t *size)
- {
--    g_assert_not_reached();
-+    return true;
- }
--- 
-2.37.3
-
diff --git a/0001-tests-Disable-iotests-like-RHEL-does.patch b/0001-tests-Disable-iotests-like-RHEL-does.patch
new file mode 100644
index 0000000..09706e5
--- /dev/null
+++ b/0001-tests-Disable-iotests-like-RHEL-does.patch
@@ -0,0 +1,58 @@
+From e4a112c75a02a789e7710e805f66211426087d55 Mon Sep 17 00:00:00 2001
+Message-ID: <e4a112c75a02a789e7710e805f66211426087d55.1692544104.git.crobinso@redhat.com>
+From: Cole Robinson <crobinso@redhat.com>
+Date: Sun, 20 Aug 2023 10:49:12 -0400
+Subject: [PATCH] tests: Disable iotests, like RHEL does
+Content-type: text/plain
+
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
+---
+ tests/qemu-iotests/meson.build | 34 +++++++++++++++++-----------------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build
+index 44761e1e4d..78c5836325 100644
+--- a/tests/qemu-iotests/meson.build
++++ b/tests/qemu-iotests/meson.build
+@@ -51,21 +51,21 @@ foreach format, speed: qemu_iotests_formats
+       check: true,
+   )
+ 
+-  foreach item: rc.stdout().strip().split()
+-      args = [qemu_iotests_check_cmd,
+-              '-tap', '-' + format, item,
+-              '--source-dir', meson.current_source_dir(),
+-              '--build-dir', meson.current_build_dir()]
+-      # Some individual tests take as long as 45 seconds
+-      # Bump the timeout to 3 minutes for some headroom
+-      # on slow machines to minimize spurious failures
+-      test('io-' + format + '-' + item,
+-           python,
+-           args: args,
+-           depends: qemu_iotests_binaries,
+-           env: qemu_iotests_env,
+-           protocol: 'tap',
+-           timeout: 180,
+-           suite: suites)
+-  endforeach
++#   foreach item: rc.stdout().strip().split()
++#       args = [qemu_iotests_check_cmd,
++#               '-tap', '-' + format, item,
++#               '--source-dir', meson.current_source_dir(),
++#               '--build-dir', meson.current_build_dir()]
++#       # Some individual tests take as long as 45 seconds
++#       # Bump the timeout to 3 minutes for some headroom
++#       # on slow machines to minimize spurious failures
++#       test('io-' + format + '-' + item,
++#            python,
++#            args: args,
++#            depends: qemu_iotests_binaries,
++#            env: qemu_iotests_env,
++#            protocol: 'tap',
++#            timeout: 180,
++#            suite: suites)
++#   endforeach
+ endforeach
+-- 
+2.41.0
+
diff --git a/0002-hw-pci-bridge-Make-PCIe-and-CXL-PXB-Devices-inherit-.patch b/0002-hw-pci-bridge-Make-PCIe-and-CXL-PXB-Devices-inherit-.patch
deleted file mode 100644
index 514bc75..0000000
--- a/0002-hw-pci-bridge-Make-PCIe-and-CXL-PXB-Devices-inherit-.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From 736ef0dcc04348bd478cc69d772a6b44fe660831 Mon Sep 17 00:00:00 2001
-From: Jonathan Cameron via <qemu-devel@nongnu.org>
-Date: Thu, 20 Apr 2023 15:27:50 +0100
-Subject: [PATCH 2/2] hw/pci-bridge: Make PCIe and CXL PXB Devices inherit from
- TYPE_PXB_DEV
-
-Previously, PXB_CXL_DEVICE, PXB_PCIE_DEVICE and PXB_DEVICE all
-have PCI_DEVICE as their direct parent but share a common state
-struct PXBDev. convert_to_pxb() is used to get the PXBDev
-instance from which ever of these types it is called on.
-
-This patch switches to an explicit heirarchy based on shared
-functionality.  To allow use of OBJECT_DECLARE_SIMPLE_TYPE()
-whilst minimizing code changes, all types are renamed to have
-the postfix _DEV rather than _DEVICE.  The new heirarchy
-has PXB_CXL_DEV with parent PXB_PCIE_DEV which in turn
-has parent PXB_DEV which continues to have parent PCI_DEVICE.
-
-This allows simple use of PXB_DEV() etc rather than a custom function
-+ removal of duplicated properties and moving the CXL specific
-elements out of struct PXBDev.
-
-Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
----
- hw/acpi/cxl.c                       | 11 +++---
- hw/cxl/cxl-host.c                   |  4 +-
- hw/pci-bridge/pci_expander_bridge.c | 59 ++++++++++-------------------
- include/hw/cxl/cxl.h                |  4 +-
- include/hw/pci/pci_bridge.h         | 28 ++++++++++----
- 5 files changed, 49 insertions(+), 57 deletions(-)
-
-diff --git a/hw/acpi/cxl.c b/hw/acpi/cxl.c
-index 2bf8c07993..92b46bc932 100644
---- a/hw/acpi/cxl.c
-+++ b/hw/acpi/cxl.c
-@@ -30,9 +30,10 @@
- #include "qapi/error.h"
- #include "qemu/uuid.h"
- 
--static void cedt_build_chbs(GArray *table_data, PXBDev *cxl)
-+static void cedt_build_chbs(GArray *table_data, PXBCXLDev *cxl)
- {
--    SysBusDevice *sbd = SYS_BUS_DEVICE(cxl->cxl.cxl_host_bridge);
-+    PXBDev *pxb = PXB_DEV(cxl);
-+    SysBusDevice *sbd = SYS_BUS_DEVICE(cxl->cxl_host_bridge);
-     struct MemoryRegion *mr = sbd->mmio[0].memory;
- 
-     /* Type */
-@@ -45,7 +46,7 @@ static void cedt_build_chbs(GArray *table_data, PXBDev *cxl)
-     build_append_int_noprefix(table_data, 32, 2);
- 
-     /* UID - currently equal to bus number */
--    build_append_int_noprefix(table_data, cxl->bus_nr, 4);
-+    build_append_int_noprefix(table_data, pxb->bus_nr, 4);
- 
-     /* Version */
-     build_append_int_noprefix(table_data, 1, 4);
-@@ -112,7 +113,7 @@ static void cedt_build_cfmws(GArray *table_data, CXLState *cxls)
-         /* Host Bridge List (list of UIDs - currently bus_nr) */
-         for (i = 0; i < fw->num_targets; i++) {
-             g_assert(fw->target_hbs[i]);
--            build_append_int_noprefix(table_data, fw->target_hbs[i]->bus_nr, 4);
-+            build_append_int_noprefix(table_data, PXB_DEV(fw->target_hbs[i])->bus_nr, 4);
-         }
-     }
- }
-@@ -121,7 +122,7 @@ static int cxl_foreach_pxb_hb(Object *obj, void *opaque)
- {
-     Aml *cedt = opaque;
- 
--    if (object_dynamic_cast(obj, TYPE_PXB_CXL_DEVICE)) {
-+    if (object_dynamic_cast(obj, TYPE_PXB_CXL_DEV)) {
-         cedt_build_chbs(cedt->buf, PXB_CXL_DEV(obj));
-     }
- 
-diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c
-index 6e923ceeaf..034c7805b3 100644
---- a/hw/cxl/cxl-host.c
-+++ b/hw/cxl/cxl-host.c
-@@ -84,7 +84,7 @@ void cxl_fmws_link_targets(CXLState *cxl_state, Error **errp)
-                 bool ambig;
- 
-                 o = object_resolve_path_type(fw->targets[i],
--                                             TYPE_PXB_CXL_DEVICE,
-+                                             TYPE_PXB_CXL_DEV,
-                                              &ambig);
-                 if (!o) {
-                     error_setg(errp, "Could not resolve CXLFM target %s",
-@@ -141,7 +141,7 @@ static PCIDevice *cxl_cfmws_find_device(CXLFixedWindow *fw, hwaddr addr)
-     addr += fw->base;
- 
-     rb_index = (addr / cxl_decode_ig(fw->enc_int_gran)) % fw->num_targets;
--    hb = PCI_HOST_BRIDGE(fw->target_hbs[rb_index]->cxl.cxl_host_bridge);
-+    hb = PCI_HOST_BRIDGE(fw->target_hbs[rb_index]->cxl_host_bridge);
-     if (!hb || !hb->bus || !pci_bus_is_cxl(hb->bus)) {
-         return NULL;
-     }
-diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expander_bridge.c
-index a78327b5f2..613857b601 100644
---- a/hw/pci-bridge/pci_expander_bridge.c
-+++ b/hw/pci-bridge/pci_expander_bridge.c
-@@ -50,24 +50,8 @@ struct PXBBus {
-     char bus_path[8];
- };
- 
--#define TYPE_PXB_DEVICE "pxb"
--DECLARE_INSTANCE_CHECKER(PXBDev, PXB_DEV,
--                         TYPE_PXB_DEVICE)
--
--#define TYPE_PXB_PCIE_DEVICE "pxb-pcie"
--DECLARE_INSTANCE_CHECKER(PXBDev, PXB_PCIE_DEV,
--                         TYPE_PXB_PCIE_DEVICE)
--
--static PXBDev *convert_to_pxb(PCIDevice *dev)
--{
--    /* A CXL PXB's parent bus is PCIe, so the normal check won't work */
--    if (object_dynamic_cast(OBJECT(dev), TYPE_PXB_CXL_DEVICE)) {
--        return PXB_CXL_DEV(dev);
--    }
--
--    return pci_bus_is_express(pci_get_bus(dev))
--        ? PXB_PCIE_DEV(dev) : PXB_DEV(dev);
--}
-+#define TYPE_PXB_PCIE_DEV "pxb-pcie"
-+OBJECT_DECLARE_SIMPLE_TYPE(PXBPCIEDev, PXB_PCIE_DEV)
- 
- static GList *pxb_dev_list;
- 
-@@ -89,14 +73,14 @@ bool cxl_get_hb_passthrough(PCIHostState *hb)
- 
- static int pxb_bus_num(PCIBus *bus)
- {
--    PXBDev *pxb = convert_to_pxb(bus->parent_dev);
-+    PXBDev *pxb = PXB_DEV(bus->parent_dev);
- 
-     return pxb->bus_nr;
- }
- 
- static uint16_t pxb_bus_numa_node(PCIBus *bus)
- {
--    PXBDev *pxb = convert_to_pxb(bus->parent_dev);
-+    PXBDev *pxb = PXB_DEV(bus->parent_dev);
- 
-     return pxb->numa_node;
- }
-@@ -154,7 +138,7 @@ static char *pxb_host_ofw_unit_address(const SysBusDevice *dev)
- 
-     pxb_host = PCI_HOST_BRIDGE(dev);
-     pxb_bus = pxb_host->bus;
--    pxb_dev = convert_to_pxb(pxb_bus->parent_dev);
-+    pxb_dev = PXB_DEV(pxb_bus->parent_dev);
-     position = g_list_index(pxb_dev_list, pxb_dev);
-     assert(position >= 0);
- 
-@@ -212,8 +196,8 @@ static void pxb_cxl_realize(DeviceState *dev, Error **errp)
-  */
- void pxb_cxl_hook_up_registers(CXLState *cxl_state, PCIBus *bus, Error **errp)
- {
--    PXBDev *pxb =  PXB_CXL_DEV(pci_bridge_get_device(bus));
--    CXLHost *cxl = pxb->cxl.cxl_host_bridge;
-+    PXBCXLDev *pxb =  PXB_CXL_DEV(pci_bridge_get_device(bus));
-+    CXLHost *cxl = pxb->cxl_host_bridge;
-     CXLComponentState *cxl_cstate = &cxl->cxl_cstate;
-     struct MemoryRegion *mr = &cxl_cstate->crb.component_registers;
-     hwaddr offset;
-@@ -299,7 +283,7 @@ static int pxb_map_irq_fn(PCIDevice *pci_dev, int pin)
- 
- static void pxb_cxl_dev_reset(DeviceState *dev)
- {
--    CXLHost *cxl = PXB_CXL_DEV(dev)->cxl.cxl_host_bridge;
-+    CXLHost *cxl = PXB_CXL_DEV(dev)->cxl_host_bridge;
-     CXLComponentState *cxl_cstate = &cxl->cxl_cstate;
-     PCIHostState *hb = PCI_HOST_BRIDGE(cxl);
-     uint32_t *reg_state = cxl_cstate->crb.cache_mem_registers;
-@@ -337,7 +321,7 @@ static gint pxb_compare(gconstpointer a, gconstpointer b)
- static void pxb_dev_realize_common(PCIDevice *dev, enum BusType type,
-                                    Error **errp)
- {
--    PXBDev *pxb = convert_to_pxb(dev);
-+    PXBDev *pxb = PXB_DEV(dev);
-     DeviceState *ds, *bds = NULL;
-     PCIBus *bus;
-     const char *dev_name = NULL;
-@@ -365,7 +349,7 @@ static void pxb_dev_realize_common(PCIDevice *dev, enum BusType type,
-     } else if (type == CXL) {
-         bus = pci_root_bus_new(ds, dev_name, NULL, NULL, 0, TYPE_PXB_CXL_BUS);
-         bus->flags |= PCI_BUS_CXL;
--        PXB_CXL_DEV(dev)->cxl.cxl_host_bridge = PXB_CXL_HOST(ds);
-+        PXB_CXL_DEV(dev)->cxl_host_bridge = PXB_CXL_HOST(ds);
-     } else {
-         bus = pci_root_bus_new(ds, "pxb-internal", NULL, NULL, 0, TYPE_PXB_BUS);
-         bds = qdev_new("pci-bridge");
-@@ -418,7 +402,7 @@ static void pxb_dev_realize(PCIDevice *dev, Error **errp)
- 
- static void pxb_dev_exitfn(PCIDevice *pci_dev)
- {
--    PXBDev *pxb = convert_to_pxb(pci_dev);
-+    PXBDev *pxb = PXB_DEV(pci_dev);
- 
-     pxb_dev_list = g_list_remove(pxb_dev_list, pxb);
- }
-@@ -449,7 +433,7 @@ static void pxb_dev_class_init(ObjectClass *klass, void *data)
- }
- 
- static const TypeInfo pxb_dev_info = {
--    .name          = TYPE_PXB_DEVICE,
-+    .name          = TYPE_PXB_DEV,
-     .parent        = TYPE_PCI_DEVICE,
-     .instance_size = sizeof(PXBDev),
-     .class_init    = pxb_dev_class_init,
-@@ -481,15 +465,14 @@ static void pxb_pcie_dev_class_init(ObjectClass *klass, void *data)
-     k->class_id = PCI_CLASS_BRIDGE_HOST;
- 
-     dc->desc = "PCI Express Expander Bridge";
--    device_class_set_props(dc, pxb_dev_properties);
-     dc->hotpluggable = false;
-     set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
- }
- 
- static const TypeInfo pxb_pcie_dev_info = {
--    .name          = TYPE_PXB_PCIE_DEVICE,
--    .parent        = TYPE_PCI_DEVICE,
--    .instance_size = sizeof(PXBDev),
-+    .name          = TYPE_PXB_PCIE_DEV,
-+    .parent        = TYPE_PXB_DEV,
-+    .instance_size = sizeof(PXBPCIEDev),
-     .class_init    = pxb_pcie_dev_class_init,
-     .interfaces = (InterfaceInfo[]) {
-         { INTERFACE_CONVENTIONAL_PCI_DEVICE },
-@@ -510,11 +493,7 @@ static void pxb_cxl_dev_realize(PCIDevice *dev, Error **errp)
- }
- 
- static Property pxb_cxl_dev_properties[] = {
--    /* Note: 0 is not a legal PXB bus number. */
--    DEFINE_PROP_UINT8("bus_nr", PXBDev, bus_nr, 0),
--    DEFINE_PROP_UINT16("numa_node", PXBDev, numa_node, NUMA_NODE_UNASSIGNED),
--    DEFINE_PROP_BOOL("bypass_iommu", PXBDev, bypass_iommu, false),
--    DEFINE_PROP_BOOL("hdm_for_passthrough", PXBDev, hdm_for_passthrough, false),
-+    DEFINE_PROP_BOOL("hdm_for_passthrough", PXBCXLDev, hdm_for_passthrough, false),
-     DEFINE_PROP_END_OF_LIST(),
- };
- 
-@@ -540,9 +519,9 @@ static void pxb_cxl_dev_class_init(ObjectClass *klass, void *data)
- }
- 
- static const TypeInfo pxb_cxl_dev_info = {
--    .name          = TYPE_PXB_CXL_DEVICE,
--    .parent        = TYPE_PCI_DEVICE,
--    .instance_size = sizeof(PXBDev),
-+    .name          = TYPE_PXB_CXL_DEV,
-+    .parent        = TYPE_PXB_PCIE_DEV,
-+    .instance_size = sizeof(PXBCXLDev),
-     .class_init    = pxb_cxl_dev_class_init,
-     .interfaces =
-         (InterfaceInfo[]){
-diff --git a/include/hw/cxl/cxl.h b/include/hw/cxl/cxl.h
-index b2cffbb364..c453983e83 100644
---- a/include/hw/cxl/cxl.h
-+++ b/include/hw/cxl/cxl.h
-@@ -23,12 +23,12 @@
- 
- #define CXL_WINDOW_MAX 10
- 
--typedef struct PXBDev PXBDev;
-+typedef struct PXBCXLDev PXBCXLDev;
- 
- typedef struct CXLFixedWindow {
-     uint64_t size;
-     char **targets;
--    PXBDev *target_hbs[8];
-+    PXBCXLDev *target_hbs[8];
-     uint8_t num_targets;
-     uint8_t enc_int_ways;
-     uint8_t enc_int_gran;
-diff --git a/include/hw/pci/pci_bridge.h b/include/hw/pci/pci_bridge.h
-index 1677176b2a..01670e9e65 100644
---- a/include/hw/pci/pci_bridge.h
-+++ b/include/hw/pci/pci_bridge.h
-@@ -84,7 +84,7 @@ struct PCIBridge {
- #define PCI_BRIDGE_DEV_PROP_SHPC       "shpc"
- typedef struct CXLHost CXLHost;
- 
--struct PXBDev {
-+typedef struct PXBDev {
-     /*< private >*/
-     PCIDevice parent_obj;
-     /*< public >*/
-@@ -92,15 +92,27 @@ struct PXBDev {
-     uint8_t bus_nr;
-     uint16_t numa_node;
-     bool bypass_iommu;
-+} PXBDev;
-+
-+typedef struct PXBPCIEDev {
-+    /*< private >*/
-+    PXBDev parent_obj;
-+} PXBPCIEDev;
-+
-+#define TYPE_PXB_DEV "pxb"
-+OBJECT_DECLARE_SIMPLE_TYPE(PXBDev, PXB_DEV)
-+
-+typedef struct PXBCXLDev {
-+    /*< private >*/
-+    PXBPCIEDev parent_obj;
-+    /*< public >*/
-+
-     bool hdm_for_passthrough;
--    struct cxl_dev {
--        CXLHost *cxl_host_bridge; /* Pointer to a CXLHost */
--    } cxl;
--};
-+    CXLHost *cxl_host_bridge; /* Pointer to a CXLHost */
-+} PXBCXLDev;
- 
--#define TYPE_PXB_CXL_DEVICE "pxb-cxl"
--DECLARE_INSTANCE_CHECKER(PXBDev, PXB_CXL_DEV,
--                         TYPE_PXB_CXL_DEVICE)
-+#define TYPE_PXB_CXL_DEV "pxb-cxl"
-+OBJECT_DECLARE_SIMPLE_TYPE(PXBCXLDev, PXB_CXL_DEV)
- 
- int pci_bridge_ssvid_init(PCIDevice *dev, uint8_t offset,
-                           uint16_t svid, uint16_t ssid,
--- 
-2.40.0
-
diff --git a/qemu.spec b/qemu.spec
index 69bd473..97db249 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -202,6 +202,7 @@
 %define requires_audio_alsa Requires: %{name}-audio-alsa = %{evr}
 %define requires_audio_oss Requires: %{name}-audio-oss = %{evr}
 %define requires_audio_pa Requires: %{name}-audio-pa = %{evr}
+%define requires_audio_pipewire Requires: %{name}-audio-pipewire = %{evr}
 %define requires_audio_sdl Requires: %{name}-audio-sdl = %{evr}
 %define requires_char_baum Requires: %{name}-char-baum = %{evr}
 %define requires_device_usb_host Requires: %{name}-device-usb-host = %{evr}
@@ -283,6 +284,7 @@
 %{requires_audio_dbus} \
 %{requires_audio_oss} \
 %{requires_audio_pa} \
+%{requires_audio_pipewire} \
 %{requires_audio_sdl} \
 %{requires_audio_jack} \
 %{requires_audio_spice} \
@@ -324,18 +326,18 @@ Obsoletes: %{name}-system-unicore32-core <= %{epoch}:%{version}-%{release} \
 Obsoletes: sgabios-bin <= 1:0.20180715git-10.fc38
 
 # Release candidate version tracking
-# global rcver rc4
+%global rcver rc4
 %if 0%{?rcver:1}
 %global rcrel .%{rcver}
 %global rcstr -%{rcver}
 %endif
 
 # To prevent rpmdev-bumpspec breakage
-%global baserelease 4
+%global baserelease 0.1
 
 Summary: QEMU is a FAST! processor emulator
 Name: qemu
-Version: 8.0.3
+Version: 8.1.0
 Release: %{baserelease}%{?rcrel}%{?dist}
 Epoch: 2
 License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND FSFAP AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-2.0-or-later with GCC-exception-2.0 exception AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only and LGPL-2.1-or-later AND MIT and public-domain and CC-BY-3.0
@@ -354,9 +356,7 @@ Source30: kvm-s390x.conf
 Source31: kvm-x86.conf
 Source36: README.tests
 
-# Fix SGX assert
-Patch: 0001-target-i386-the-sgx_epc_get_section-stub-is-reachabl.patch
-Patch: 0002-hw-pci-bridge-Make-PCIe-and-CXL-PXB-Devices-inherit-.patch
+Patch0001: 0001-tests-Disable-iotests-like-RHEL-does.patch
 
 BuildRequires: meson >= %{meson_version}
 BuildRequires: bison
@@ -512,6 +512,7 @@ BuildRequires: SDL2_image-devel
 # Used by vnc-display-test
 BuildRequires: pkgconfig(gvnc-1.0)
 %endif
+BuildRequires: pipewire-devel
 
 %if %{user_static}
 BuildRequires: glibc-static glib2-static zlib-static
@@ -750,6 +751,12 @@ Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release}
 %description audio-pa
 This package provides the additional PulseAudio audio driver for QEMU.
 
+%package  audio-pipewire
+Summary: QEMU Pipewire audio driver
+Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release}
+%description audio-pipewire
+This package provides the additional Pipewire audio driver for QEMU.
+
 %package  audio-sdl
 Summary: QEMU SDL audio driver
 Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release}
@@ -1457,17 +1464,20 @@ mkdir -p %{static_builddir}
   --disable-cfi-debug              \\\
   --disable-cloop                  \\\
   --disable-cocoa                  \\\
+  --disable-colo-proxy             \\\
   --disable-coreaudio              \\\
   --disable-coroutine-pool         \\\
   --disable-crypto-afalg           \\\
   --disable-curl                   \\\
   --disable-curses                 \\\
   --disable-dbus-display           \\\
+  --disable-debug-graph-lock       \\\
   --disable-debug-info             \\\
   --disable-debug-mutex            \\\
   --disable-debug-tcg              \\\
   --disable-dmg                    \\\
   --disable-docs                   \\\
+  --disable-download               \\\
   --disable-dsound                 \\\
   --disable-fdt                    \\\
   --disable-fuse                   \\\
@@ -1517,6 +1527,7 @@ mkdir -p %{static_builddir}
   --disable-pa                     \\\
   --disable-parallels              \\\
   --disable-pie                    \\\
+  --disable-pipewire               \\\
   --disable-pvrdma                 \\\
   --disable-qcow1                  \\\
   --disable-qed                    \\\
@@ -1544,12 +1555,15 @@ mkdir -p %{static_builddir}
   --disable-tcg                    \\\
   --disable-tools                  \\\
   --disable-tpm                    \\\
+  --disable-tsan                   \\\
   --disable-u2f                    \\\
   --disable-usb-redir              \\\
   --disable-user                   \\\
+  --disable-vpc                    \\\
   --disable-vde                    \\\
   --disable-vdi                    \\\
   --disable-vfio-user-server       \\\
+  --disable-vhdx                   \\\
   --disable-vhost-crypto           \\\
   --disable-vhost-kernel           \\\
   --disable-vhost-net              \\\
@@ -1570,9 +1584,9 @@ mkdir -p %{static_builddir}
   --disable-xen-pci-passthrough    \\\
   --disable-xkbcommon              \\\
   --disable-zstd                   \\\
-  --with-git-submodules=ignore     \\\
   --without-default-devices
 
+
 run_configure() {
     ../configure  \
         --cc=%{__cc} \
@@ -1594,10 +1608,8 @@ run_configure() {
         --with-pkgversion="%{name}-%{version}-%{release}" \
         --with-suffix="%{name}" \
         --firmwarepath="%firmwaredirs" \
-        --meson="%{__meson}" \
         --enable-trace-backends=dtrace \
         --with-coroutine=ucontext \
-        --with-git=git \
         --tls-priority=@QEMU,SYSTEM \
         %{disable_everything} \
         "$@" \
@@ -1677,6 +1689,7 @@ run_configure \
   --enable-oss \
   --enable-pa \
   --enable-pie \
+  --enable-pipewire \
 %if %{have_block_rbd}
   --enable-rbd \
 %endif
@@ -1709,7 +1722,7 @@ run_configure \
   --enable-xkbcommon \
   \
   \
-  --audio-drv-list=pa,sdl,alsa,%{?jack_drv}oss \
+  --audio-drv-list=pipewire,pa,sdl,alsa,%{?jack_drv}oss \
   --target-list-exclude=moxie-softmmu \
   --with-default-devices \
   --enable-auth-pam \
@@ -1760,14 +1773,19 @@ run_configure \
 %if %{have_virgl}
   --enable-virglrenderer \
 %endif
+  --enable-vhdx \
   --enable-virtfs \
+  --enable-virtfs-proxy-helper \
+  --enable-vpc \
   --enable-vnc-jpeg \
   --enable-vte \
   --enable-vvfat \
 %if %{have_xen}
   --enable-xen \
+%ifarch x86_64
   --enable-xen-pci-passthrough \
 %endif
+%endif
   --enable-zstd
 
 %if %{tools_only}
@@ -1865,7 +1883,7 @@ install -D -p -m 0644 %{modprobe_kvm_conf} %{buildroot}%{_sysconfdir}/modprobe.d
 %endif
 
 # Copy some static data into place
-install -D -p -m 0644 -t %{buildroot}%{qemudocdir} README.rst COPYING COPYING.LIB LICENSE docs/interop/qmp-spec.txt
+install -D -p -m 0644 -t %{buildroot}%{qemudocdir} README.rst COPYING COPYING.LIB LICENSE docs/interop/qmp-spec.rst
 install -D -p -m 0644 qemu.sasl %{buildroot}%{_sysconfdir}/sasl2/%{name}.conf
 
 install -m 0644 scripts/dump-guest-memory.py %{buildroot}%{_datadir}/%{name}
@@ -2278,6 +2296,8 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
 %{_libdir}/%{name}/audio-oss.so
 %files audio-pa
 %{_libdir}/%{name}/audio-pa.so
+%files audio-pipewire
+%{_libdir}/%{name}/audio-pipewire.so
 %files audio-sdl
 %{_libdir}/%{name}/audio-sdl.so
 %if %{have_jack}
@@ -2783,6 +2803,9 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
 
 
 %changelog
+* Sun Aug 20 2023 Cole Robinson <crobinso@redhat.com> - 8.1.0-0.1-rc4
+- Rebase to qemu 8.1.0-rc4
+
 * Thu Jul 20 2023 Camilla Conte <cconte@redhat.com> - 2:8.0.3-1
 - New upstream release 8.0.3
 
diff --git a/sources b/sources
index d8621aa..8a6f596 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qemu-8.0.3.tar.xz) = 18b2ccb65f7ec2ae92f0e04406539620c881e2b75f63816588c86043a07464bb99d16a83e792ed9508de393f4b694c46d52f4d07edf52741e85224c8b8d5d5c3
+SHA512 (qemu-8.1.0-rc4.tar.xz) = 26b8d1516436fd49b513dda41822888d3d9a15ea03f0470db7f4509a235d71397fd296af0dcb629cba1b9042ab5077628b20046e559a96f18cff67bb0d354bcf