summaryrefslogtreecommitdiff
path: root/poky/meta/recipes-devtools/qemu
diff options
context:
space:
mode:
Diffstat (limited to 'poky/meta/recipes-devtools/qemu')
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu-native_8.1.0.bb (renamed from poky/meta/recipes-devtools/qemu/qemu-native_8.0.3.bb)0
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu-system-native_8.1.0.bb (renamed from poky/meta/recipes-devtools/qemu/qemu-system-native_8.0.3.bb)2
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu.inc48
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu/0001-CVE-2023-40360-hw-nvme-fix-null-pointer-access-in-di.patch39
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu/0001-softmmu-Assert-data-in-bounds-in-iotlb_to_section.patch42
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu/0001-softmmu-Use-async_run_on_cpu-in-tcg_commit.patch157
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu/0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch84
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu/0004-configure-Add-pkg-config-handling-for-libgcrypt.patch12
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu/fixedmeson.patch20
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu/fixmips.patch18
-rw-r--r--poky/meta/recipes-devtools/qemu/qemu_8.1.0.bb (renamed from poky/meta/recipes-devtools/qemu/qemu_8.0.3.bb)4
11 files changed, 315 insertions, 111 deletions
diff --git a/poky/meta/recipes-devtools/qemu/qemu-native_8.0.3.bb b/poky/meta/recipes-devtools/qemu/qemu-native_8.1.0.bb
index 73a0f63f2b..73a0f63f2b 100644
--- a/poky/meta/recipes-devtools/qemu/qemu-native_8.0.3.bb
+++ b/poky/meta/recipes-devtools/qemu/qemu-native_8.1.0.bb
diff --git a/poky/meta/recipes-devtools/qemu/qemu-system-native_8.0.3.bb b/poky/meta/recipes-devtools/qemu/qemu-system-native_8.1.0.bb
index 04c7c2a6ac..558a416f7b 100644
--- a/poky/meta/recipes-devtools/qemu/qemu-system-native_8.0.3.bb
+++ b/poky/meta/recipes-devtools/qemu/qemu-system-native_8.1.0.bb
@@ -11,7 +11,7 @@ DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native bison-native me
EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}"
-PACKAGECONFIG ??= "fdt alsa kvm pie slirp \
+PACKAGECONFIG ??= "fdt alsa kvm pie slirp png \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer epoxy', '', d)} \
"
diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc
index 64bade86aa..15b963d448 100644
--- a/poky/meta/recipes-devtools/qemu/qemu.inc
+++ b/poky/meta/recipes-devtools/qemu/qemu.inc
@@ -9,7 +9,9 @@ LICENSE = "GPL-2.0-only & LGPL-2.1-only"
RDEPENDS:${PN}-ptest = "bash"
require qemu-targets.inc
-inherit pkgconfig ptest update-rc.d systemd
+# https://gitlab.com/qemu-project/qemu/-/commit/81e2b198a8cb4ee5fdf108bd438f44b193ee3a36 means
+# we need a full python3-native setup
+inherit pkgconfig ptest update-rc.d systemd python3native
LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
file://COPYING.LIB;endline=24;md5=8c5efda6cf1e1b03dcfd0e6c0d271c7f"
@@ -27,13 +29,17 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
file://0009-Define-MAP_SYNC-and-MAP_SHARED_VALIDATE-on-needed-li.patch \
file://0010-hw-pvrdma-Protect-against-buggy-or-malicious-guest-d.patch \
file://0002-linux-user-Replace-use-of-lfs64-related-functions-an.patch \
- file://0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch \
+ file://0001-softmmu-Assert-data-in-bounds-in-iotlb_to_section.patch \
+ file://0001-softmmu-Use-async_run_on_cpu-in-tcg_commit.patch \
+ file://fixedmeson.patch \
+ file://fixmips.patch \
file://qemu-guest-agent.init \
file://qemu-guest-agent.udev \
"
UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
-SRC_URI[sha256sum] = "ecf4d32cbef9d397bfc8cc50e4d1e92a1b30253bf32e8ee73c7a8dcf9a232b09"
+
+SRC_URI[sha256sum] = "710c101198e334d4762eef65f649bc43fa8a5dd75303554b8acfec3eb25f0e55"
SRC_URI:append:class-target = " file://cross.patch"
SRC_URI:append:class-nativesdk = " file://cross.patch"
@@ -104,9 +110,8 @@ EXTRA_OECONF = " \
--disable-werror \
--extra-cflags='${CFLAGS}' \
--extra-ldflags='${LDFLAGS}' \
- --with-git=/bin/false \
- --with-git-submodules=ignore \
- --meson=meson \
+ --disable-download \
+ --disable-docs \
${PACKAGECONFIG_CONFARGS} \
"
@@ -144,6 +149,10 @@ do_install () {
install -m 0644 ${S}/contrib/systemd/qemu-guest-agent.service ${D}${systemd_unitdir}/system
sed -i -e 's,-/usr/bin/,-${bindir}/,g' ${D}${systemd_unitdir}/system/qemu-guest-agent.service
fi
+ # ELF binary /usr/share/qemu/s390-netboot.img has relocations in .text
+ rm ${D}${datadir}/qemu/s390-netboot.img -f
+ # ELF binary /usr/share/qemu/s390-ccw.img has relocations in .text [textrel]
+ rm ${D}${datadir}/qemu/s390-ccw.img -f
}
# The following fragment will create a wrapper for qemu-mips user emulation
@@ -195,11 +204,12 @@ PACKAGECONFIG[virglrenderer] = "--enable-virglrenderer,--disable-virglrenderer,v
# spice will be in meta-networking layer
PACKAGECONFIG[spice] = "--enable-spice,--disable-spice,spice"
# usbredir will be in meta-networking layer
+PACKAGECONFIG[dbus-display] = "--enable-dbus-display,--disable-dbus-display,glib-2.0-native,dbus"
PACKAGECONFIG[usb-redir] = "--enable-usb-redir,--disable-usb-redir,usbredir"
PACKAGECONFIG[snappy] = "--enable-snappy,--disable-snappy,snappy"
PACKAGECONFIG[glusterfs] = "--enable-glusterfs,--disable-glusterfs,glusterfs"
PACKAGECONFIG[xkbcommon] = "--enable-xkbcommon,--disable-xkbcommon,libxkbcommon"
-PACKAGECONFIG[libudev] = "--enable-libudev,--disable-libudev,eudev"
+PACKAGECONFIG[libudev] = "--enable-libudev,--disable-libudev,udev"
PACKAGECONFIG[attr] = "--enable-attr,--disable-attr,attr,"
PACKAGECONFIG[rbd] = "--enable-rbd,--disable-rbd,ceph,ceph"
PACKAGECONFIG[vhost] = "--enable-vhost-net,--disable-vhost-net,,"
@@ -215,20 +225,24 @@ PACKAGECONFIG[bpf] = "--enable-bpf,--disable-bpf,libbpf"
PACKAGECONFIG[capstone] = "--enable-capstone,--disable-capstone"
PACKAGECONFIG[rdma] = "--enable-rdma,--disable-rdma"
PACKAGECONFIG[vde] = "--enable-vde,--disable-vde"
+PACKAGECONFIG[fuse] = "--enable-fuse --enable-fuse-lseek,--disable-fuse --disable-fuse-lseek,fuse3"
PACKAGECONFIG[slirp] = "--enable-slirp,--disable-slirp,libslirp"
PACKAGECONFIG[brlapi] = "--enable-brlapi,--disable-brlapi"
PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack,"
PACKAGECONFIG[debuginfo] = "--enable-libdw,--disable-libdw,elfutils"
-INSANE_SKIP:${PN} = "arch"
+INSANE_SKIP:${PN}-common = "arch"
FILES:${PN} += "${datadir}/icons"
# For user who want to install all arch packages
-PACKAGES =+ "${PN}-system-all ${PN}-user-all"
+PACKAGES =+ "${PN}-common"
+RDEPENDS:${PN} += "${PN}-common"
+
+ALLOW_EMPTY:${PN} = "1"
+FILES:${PN} = ""
-ALLOW_EMPTY:${PN}-system-all = "1"
-ALLOW_EMPTY:${PN}-user-all = "1"
+FILES:${PN}-common = "${bindir}/* ${includedir}/* ${libexecdir}/* ${datadir}/* ${localstatedir}"
PACKAGES_DYNAMIC += "^${PN}-user-.* ^${PN}-system-.*"
@@ -236,15 +250,13 @@ PACKAGESPLITFUNCS =+ "split_qemu_packages"
python split_qemu_packages () {
archdir = d.expand('${bindir}/')
- syspackages = do_split_packages(d, archdir, r'^qemu-system-(.*)$', '${PN}-system-%s', 'QEMU full system emulation binaries(%s)' , prepend=True)
- if syspackages:
- d.setVar('RDEPENDS:' + d.getVar('PN') + '-system-all', ' '.join(syspackages))
+ subpackages = do_split_packages(d, archdir, r'^qemu-system-(.*)$', '${PN}-system-%s', 'QEMU full system emulation binaries(%s)' , prepend=True, extra_depends='${PN}-common')
- userpackages = do_split_packages(d, archdir, r'^qemu-((?!system|edid|ga|img|io|nbd|pr-helper|storage-daemon).*)$', '${PN}-user-%s', 'QEMU full user emulation binaries(%s)' , prepend=True)
- if userpackages:
- d.setVar('RDEPENDS:' + d.getVar('PN') + '-user-all', ' '.join(userpackages))
+ subpackages += do_split_packages(d, archdir, r'^qemu-((?!system|edid|ga|img|io|nbd|pr-helper|storage-daemon).*)$', '${PN}-user-%s', 'QEMU full user emulation binaries(%s)' , prepend=True, extra_depends='${PN}-common')
+ if subpackages:
+ d.appendVar('RDEPENDS:' + d.getVar('PN'), ' ' + ' '.join(subpackages))
mipspackage = d.getVar('PN') + "-user-mips"
- if mipspackage in ' '.join(userpackages):
+ if mipspackage in ' '.join(subpackages):
d.appendVar('RDEPENDS:' + mipspackage, ' ' + d.getVar("MLPREFIX") + 'bash')
}
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-CVE-2023-40360-hw-nvme-fix-null-pointer-access-in-di.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-CVE-2023-40360-hw-nvme-fix-null-pointer-access-in-di.patch
new file mode 100644
index 0000000000..731b0281f4
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu/0001-CVE-2023-40360-hw-nvme-fix-null-pointer-access-in-di.patch
@@ -0,0 +1,39 @@
+From 83dd3da9fac872fac9739b9dcb96232c93675824 Mon Sep 17 00:00:00 2001
+From: Klaus Jensen <k.jensen@samsung.com>
+Date: Tue, 8 Aug 2023 17:16:13 +0200
+Subject: [PATCH] CVE-2023-40360 hw/nvme: fix null pointer access in directive
+ receive
+
+nvme_directive_receive() does not check if an endurance group has been
+configured (set) prior to testing if flexible data placement is enabled
+or not.
+
+Fix this.
+
+CVE: CVE-2023-40360
+Upstream-Status: Backport [https://gitlab.com/birkelund/qemu/-/commit/6c8f8456cb0b239812dee5211881426496da7b98]
+Cc: qemu-stable@nongnu.org
+Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1815
+Fixes: 73064edfb864 ("hw/nvme: flexible data placement emulation")
+Reviewed-by: Jesper Wendel Devantier <j.devantier@samsung.com>
+Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
+---
+ hw/nvme/ctrl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
+index 2097fb131..36a2846c3 100644
+--- a/hw/nvme/ctrl.c
++++ b/hw/nvme/ctrl.c
+@@ -6862,7 +6862,7 @@ static uint16_t nvme_directive_receive(NvmeCtrl *n, NvmeRequest *req)
+ case NVME_DIRECTIVE_IDENTIFY:
+ switch (doper) {
+ case NVME_DIRECTIVE_RETURN_PARAMS:
+- if (ns->endgrp->fdp.enabled) {
++ if (ns->endgrp && ns->endgrp->fdp.enabled) {
+ id.supported |= 1 << NVME_DIRECTIVE_DATA_PLACEMENT;
+ id.enabled |= 1 << NVME_DIRECTIVE_DATA_PLACEMENT;
+ id.persistent |= 1 << NVME_DIRECTIVE_DATA_PLACEMENT;
+--
+2.42.0
+
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-softmmu-Assert-data-in-bounds-in-iotlb_to_section.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-softmmu-Assert-data-in-bounds-in-iotlb_to_section.patch
new file mode 100644
index 0000000000..7380e16ab3
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu/0001-softmmu-Assert-data-in-bounds-in-iotlb_to_section.patch
@@ -0,0 +1,42 @@
+From 86e4f93d827d3c1efd00cd8a906e38a2c0f2b5bc Mon Sep 17 00:00:00 2001
+From: Richard Henderson <richard.henderson@linaro.org>
+Date: Fri, 25 Aug 2023 14:06:58 -0700
+Subject: [PATCH] softmmu: Assert data in bounds in iotlb_to_section
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Acked-by: Alex Bennée <alex.bennee@linaro.org>
+Suggested-by: Alex Bennée <alex.bennee@linaro.org>
+Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
+
+Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/86e4f93d827d3c1efd00cd8a906e38a2c0f2b5bc]
+---
+ softmmu/physmem.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/softmmu/physmem.c b/softmmu/physmem.c
+index 3df73542e1..7597dc1c39 100644
+--- a/softmmu/physmem.c
++++ b/softmmu/physmem.c
+@@ -2413,9 +2413,15 @@ MemoryRegionSection *iotlb_to_section(CPUState *cpu,
+ int asidx = cpu_asidx_from_attrs(cpu, attrs);
+ CPUAddressSpace *cpuas = &cpu->cpu_ases[asidx];
+ AddressSpaceDispatch *d = qatomic_rcu_read(&cpuas->memory_dispatch);
+- MemoryRegionSection *sections = d->map.sections;
++ int section_index = index & ~TARGET_PAGE_MASK;
++ MemoryRegionSection *ret;
++
++ assert(section_index < d->map.sections_nb);
++ ret = d->map.sections + section_index;
++ assert(ret->mr);
++ assert(ret->mr->ops);
+
+- return &sections[index & ~TARGET_PAGE_MASK];
++ return ret;
+ }
+
+ static void io_mem_init(void)
+--
+2.34.1
+
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-softmmu-Use-async_run_on_cpu-in-tcg_commit.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-softmmu-Use-async_run_on_cpu-in-tcg_commit.patch
new file mode 100644
index 0000000000..8289b45991
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu/0001-softmmu-Use-async_run_on_cpu-in-tcg_commit.patch
@@ -0,0 +1,157 @@
+From 0d58c660689f6da1e3feff8a997014003d928b3b Mon Sep 17 00:00:00 2001
+From: Richard Henderson <richard.henderson@linaro.org>
+Date: Fri, 25 Aug 2023 16:13:17 -0700
+Subject: [PATCH] softmmu: Use async_run_on_cpu in tcg_commit
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+After system startup, run the update to memory_dispatch
+and the tlb_flush on the cpu. This eliminates a race,
+wherein a running cpu sees the memory_dispatch change
+but has not yet seen the tlb_flush.
+
+Since the update now happens on the cpu, we need not use
+qatomic_rcu_read to protect the read of memory_dispatch.
+
+Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1826
+Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1834
+Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1846
+Tested-by: Alex Bennée <alex.bennee@linaro.org>
+Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
+Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
+
+Upstream-Status: Backport [0d58c660689f6da1e3feff8a997014003d928b3b]
+---
+ accel/tcg/cpu-exec-common.c | 30 ----------------------------
+ include/exec/cpu-common.h | 1 -
+ softmmu/physmem.c | 40 +++++++++++++++++++++++++++----------
+ 3 files changed, 29 insertions(+), 42 deletions(-)
+
+Index: qemu-8.1.0/accel/tcg/cpu-exec-common.c
+===================================================================
+--- qemu-8.1.0.orig/accel/tcg/cpu-exec-common.c
++++ qemu-8.1.0/accel/tcg/cpu-exec-common.c
+@@ -33,36 +33,6 @@ void cpu_loop_exit_noexc(CPUState *cpu)
+ cpu_loop_exit(cpu);
+ }
+
+-#if defined(CONFIG_SOFTMMU)
+-void cpu_reloading_memory_map(void)
+-{
+- if (qemu_in_vcpu_thread() && current_cpu->running) {
+- /* The guest can in theory prolong the RCU critical section as long
+- * as it feels like. The major problem with this is that because it
+- * can do multiple reconfigurations of the memory map within the
+- * critical section, we could potentially accumulate an unbounded
+- * collection of memory data structures awaiting reclamation.
+- *
+- * Because the only thing we're currently protecting with RCU is the
+- * memory data structures, it's sufficient to break the critical section
+- * in this callback, which we know will get called every time the
+- * memory map is rearranged.
+- *
+- * (If we add anything else in the system that uses RCU to protect
+- * its data structures, we will need to implement some other mechanism
+- * to force TCG CPUs to exit the critical section, at which point this
+- * part of this callback might become unnecessary.)
+- *
+- * This pair matches cpu_exec's rcu_read_lock()/rcu_read_unlock(), which
+- * only protects cpu->as->dispatch. Since we know our caller is about
+- * to reload it, it's safe to split the critical section.
+- */
+- rcu_read_unlock();
+- rcu_read_lock();
+- }
+-}
+-#endif
+-
+ void cpu_loop_exit(CPUState *cpu)
+ {
+ /* Undo the setting in cpu_tb_exec. */
+Index: qemu-8.1.0/include/exec/cpu-common.h
+===================================================================
+--- qemu-8.1.0.orig/include/exec/cpu-common.h
++++ qemu-8.1.0/include/exec/cpu-common.h
+@@ -133,7 +133,6 @@ static inline void cpu_physical_memory_w
+ {
+ cpu_physical_memory_rw(addr, (void *)buf, len, true);
+ }
+-void cpu_reloading_memory_map(void);
+ void *cpu_physical_memory_map(hwaddr addr,
+ hwaddr *plen,
+ bool is_write);
+Index: qemu-8.1.0/softmmu/physmem.c
+===================================================================
+--- qemu-8.1.0.orig/softmmu/physmem.c
++++ qemu-8.1.0/softmmu/physmem.c
+@@ -680,8 +680,7 @@ address_space_translate_for_iotlb(CPUSta
+ IOMMUTLBEntry iotlb;
+ int iommu_idx;
+ hwaddr addr = orig_addr;
+- AddressSpaceDispatch *d =
+- qatomic_rcu_read(&cpu->cpu_ases[asidx].memory_dispatch);
++ AddressSpaceDispatch *d = cpu->cpu_ases[asidx].memory_dispatch;
+
+ for (;;) {
+ section = address_space_translate_internal(d, addr, &addr, plen, false);
+@@ -2412,7 +2411,7 @@ MemoryRegionSection *iotlb_to_section(CP
+ {
+ int asidx = cpu_asidx_from_attrs(cpu, attrs);
+ CPUAddressSpace *cpuas = &cpu->cpu_ases[asidx];
+- AddressSpaceDispatch *d = qatomic_rcu_read(&cpuas->memory_dispatch);
++ AddressSpaceDispatch *d = cpuas->memory_dispatch;
+ int section_index = index & ~TARGET_PAGE_MASK;
+ MemoryRegionSection *ret;
+
+@@ -2487,23 +2486,42 @@ static void tcg_log_global_after_sync(Me
+ }
+ }
+
++static void tcg_commit_cpu(CPUState *cpu, run_on_cpu_data data)
++{
++ CPUAddressSpace *cpuas = data.host_ptr;
++
++ cpuas->memory_dispatch = address_space_to_dispatch(cpuas->as);
++ tlb_flush(cpu);
++}
++
+ static void tcg_commit(MemoryListener *listener)
+ {
+ CPUAddressSpace *cpuas;
+- AddressSpaceDispatch *d;
++ CPUState *cpu;
+
+ assert(tcg_enabled());
+ /* since each CPU stores ram addresses in its TLB cache, we must
+ reset the modified entries */
+ cpuas = container_of(listener, CPUAddressSpace, tcg_as_listener);
+- cpu_reloading_memory_map();
+- /* The CPU and TLB are protected by the iothread lock.
+- * We reload the dispatch pointer now because cpu_reloading_memory_map()
+- * may have split the RCU critical section.
++ cpu = cpuas->cpu;
++
++ /*
++ * Defer changes to as->memory_dispatch until the cpu is quiescent.
++ * Otherwise we race between (1) other cpu threads and (2) ongoing
++ * i/o for the current cpu thread, with data cached by mmu_lookup().
++ *
++ * In addition, queueing the work function will kick the cpu back to
++ * the main loop, which will end the RCU critical section and reclaim
++ * the memory data structures.
++ *
++ * That said, the listener is also called during realize, before
++ * all of the tcg machinery for run-on is initialized: thus halt_cond.
+ */
+- d = address_space_to_dispatch(cpuas->as);
+- qatomic_rcu_set(&cpuas->memory_dispatch, d);
+- tlb_flush(cpuas->cpu);
++ if (cpu->halt_cond) {
++ async_run_on_cpu(cpu, tcg_commit_cpu, RUN_ON_CPU_HOST_PTR(cpuas));
++ } else {
++ tcg_commit_cpu(cpu, RUN_ON_CPU_HOST_PTR(cpuas));
++ }
+ }
+
+ static void memory_map_init(void)
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch
deleted file mode 100644
index 049b9a5105..0000000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 348ea441db84a211d4fca7ef5544b5cd06a8a872 Mon Sep 17 00:00:00 2001
-From: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
-Date: Tue, 4 Apr 2023 15:26:07 +0200
-Subject: [PATCH] tracetool: use relative paths for '#line' preprocessor
- directives
-
-The event filename is an absolute path. Convert it to a relative path when
-writing '#line' directives, to preserve reproducibility of the generated
-output when different base paths are used.
-
-Upstream-Status: Accepted [https://gitlab.com/qemu-project/qemu/-/commit/9d672e290475001fcecdcc9dc79ad088ff89d17f]
-
----
- scripts/tracetool/backend/ftrace.py | 4 +++-
- scripts/tracetool/backend/log.py | 4 +++-
- scripts/tracetool/backend/syslog.py | 4 +++-
- 3 files changed, 9 insertions(+), 3 deletions(-)
-
-Index: qemu-8.0.0/scripts/tracetool/backend/ftrace.py
-===================================================================
---- qemu-8.0.0.orig/scripts/tracetool/backend/ftrace.py
-+++ qemu-8.0.0/scripts/tracetool/backend/ftrace.py
-@@ -12,6 +12,8 @@ __maintainer__ = "Stefan Hajnoczi"
- __email__ = "stefanha@redhat.com"
-
-
-+import os.path
-+
- from tracetool import out
-
-
-@@ -45,7 +47,7 @@ def generate_h(event, group):
- args=event.args,
- event_id="TRACE_" + event.name.upper(),
- event_lineno=event.lineno,
-- event_filename=event.filename,
-+ event_filename=os.path.relpath(event.filename),
- fmt=event.fmt.rstrip("\n"),
- argnames=argnames)
-
-Index: qemu-8.0.0/scripts/tracetool/backend/log.py
-===================================================================
---- qemu-8.0.0.orig/scripts/tracetool/backend/log.py
-+++ qemu-8.0.0/scripts/tracetool/backend/log.py
-@@ -12,6 +12,8 @@ __maintainer__ = "Stefan Hajnoczi"
- __email__ = "stefanha@redhat.com"
-
-
-+import os.path
-+
- from tracetool import out
-
-
-@@ -53,7 +55,7 @@ def generate_h(event, group):
- ' }',
- cond=cond,
- event_lineno=event.lineno,
-- event_filename=event.filename,
-+ event_filename=os.path.relpath(event.filename),
- name=event.name,
- fmt=event.fmt.rstrip("\n"),
- argnames=argnames)
-Index: qemu-8.0.0/scripts/tracetool/backend/syslog.py
-===================================================================
---- qemu-8.0.0.orig/scripts/tracetool/backend/syslog.py
-+++ qemu-8.0.0/scripts/tracetool/backend/syslog.py
-@@ -12,6 +12,8 @@ __maintainer__ = "Stefan Hajnoczi"
- __email__ = "stefanha@redhat.com"
-
-
-+import os.path
-+
- from tracetool import out
-
-
-@@ -41,7 +43,7 @@ def generate_h(event, group):
- ' }',
- cond=cond,
- event_lineno=event.lineno,
-- event_filename=event.filename,
-+ event_filename=os.path.relpath(event.filename),
- name=event.name,
- fmt=event.fmt.rstrip("\n"),
- argnames=argnames)
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0004-configure-Add-pkg-config-handling-for-libgcrypt.patch b/poky/meta/recipes-devtools/qemu/qemu/0004-configure-Add-pkg-config-handling-for-libgcrypt.patch
index 02f22143c1..f981a64a54 100644
--- a/poky/meta/recipes-devtools/qemu/qemu/0004-configure-Add-pkg-config-handling-for-libgcrypt.patch
+++ b/poky/meta/recipes-devtools/qemu/qemu/0004-configure-Add-pkg-config-handling-for-libgcrypt.patch
@@ -14,16 +14,16 @@ Signed-off-by: He Zhe <zhe.he@windriver.com>
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: qemu-8.0.0/meson.build
+Index: qemu-8.1.0/meson.build
===================================================================
---- qemu-8.0.0.orig/meson.build
-+++ qemu-8.0.0/meson.build
-@@ -1213,7 +1213,7 @@ endif
+--- qemu-8.1.0.orig/meson.build
++++ qemu-8.1.0/meson.build
+@@ -1481,7 +1481,7 @@ endif
if not gnutls_crypto.found()
if (not get_option('gcrypt').auto() or have_system) and not get_option('nettle').enabled()
gcrypt = dependency('libgcrypt', version: '>=1.8',
- method: 'config-tool',
+ method: 'pkg-config',
- required: get_option('gcrypt'),
- kwargs: static_kwargs)
+ required: get_option('gcrypt'))
# Debian has removed -lgpg-error from libgcrypt-config
+ # as it "spreads unnecessary dependencies" which in
diff --git a/poky/meta/recipes-devtools/qemu/qemu/fixedmeson.patch b/poky/meta/recipes-devtools/qemu/qemu/fixedmeson.patch
new file mode 100644
index 0000000000..0cbaea07ca
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu/fixedmeson.patch
@@ -0,0 +1,20 @@
+Upstream-Status: Inappropriate [workaround, would need a real fix for upstream]
+
+Index: qemu-8.1.0/configure
+===================================================================
+--- qemu-8.1.0.orig/configure
++++ qemu-8.1.0/configure
+@@ -1032,12 +1032,7 @@ then
+ exit 1
+ fi
+
+-# At this point, we expect Meson to be installed and available.
+-# We expect mkvenv or pip to have created pyvenv/bin/meson for us.
+-# We ignore PATH completely here: we want to use the venv's Meson
+-# *exclusively*.
+-
+-meson="$(cd pyvenv/bin; pwd)/meson"
++meson=`which meson`
+
+ # Conditionally ensure Sphinx is installed.
+
diff --git a/poky/meta/recipes-devtools/qemu/qemu/fixmips.patch b/poky/meta/recipes-devtools/qemu/qemu/fixmips.patch
new file mode 100644
index 0000000000..01546d1030
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu/fixmips.patch
@@ -0,0 +1,18 @@
+Patch to fix mips boot hangs where virtio appears broken. Patch under discussion upstream.
+Regression is introduced by other fixes to 8.1.0 to get x86 boots working.
+
+Upstream-Status: Pending [https://lore.kernel.org/qemu-devel/6c956b90-5a13-db96-9c02-9834a512fe6f@linaro.org/]
+
+Index: qemu-8.1.0/softmmu/physmem.c
+===================================================================
+--- qemu-8.1.0.orig/softmmu/physmem.c
++++ qemu-8.1.0/softmmu/physmem.c
+@@ -2517,7 +2517,7 @@ static void tcg_commit(MemoryListener *l
+ * That said, the listener is also called during realize, before
+ * all of the tcg machinery for run-on is initialized: thus halt_cond.
+ */
+- if (cpu->halt_cond) {
++ if (cpu->halt_cond && !qemu_cpu_is_self(cpu)) {
+ async_run_on_cpu(cpu, tcg_commit_cpu, RUN_ON_CPU_HOST_PTR(cpuas));
+ } else {
+ tcg_commit_cpu(cpu, RUN_ON_CPU_HOST_PTR(cpuas));
diff --git a/poky/meta/recipes-devtools/qemu/qemu_8.0.3.bb b/poky/meta/recipes-devtools/qemu/qemu_8.1.0.bb
index 42e133967e..84ee0bcc49 100644
--- a/poky/meta/recipes-devtools/qemu/qemu_8.0.3.bb
+++ b/poky/meta/recipes-devtools/qemu/qemu_8.1.0.bb
@@ -8,7 +8,7 @@ DEPENDS:append:libc-musl = " libucontext"
CFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
-RDEPENDS:${PN}:class-target += "bash"
+RDEPENDS:${PN}-common:class-target += "bash"
EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}"
EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}"
@@ -16,7 +16,7 @@ EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)
PACKAGECONFIG ??= " \
fdt sdl kvm pie slirp \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa pulseaudio xen', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer epoxy', '', d)} \
${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \
"