diff options
Diffstat (limited to 'poky/meta/recipes-devtools/qemu')
22 files changed, 182 insertions, 624 deletions
diff --git a/poky/meta/recipes-devtools/qemu/qemu-native_7.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu-native_8.0.0.bb index a94dc0b61e..73a0f63f2b 100644 --- a/poky/meta/recipes-devtools/qemu/qemu-native_7.2.0.bb +++ b/poky/meta/recipes-devtools/qemu/qemu-native_8.0.0.bb @@ -4,6 +4,6 @@ DEPENDS = "glib-2.0-native zlib-native ninja-native meson-native" require qemu-native.inc -EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent" +EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-install-blobs --disable-guest-agent" PACKAGECONFIG ??= "pie" diff --git a/poky/meta/recipes-devtools/qemu/qemu-system-native_7.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu-system-native_8.0.0.bb index 04c7c2a6ac..04c7c2a6ac 100644 --- a/poky/meta/recipes-devtools/qemu/qemu-system-native_7.2.0.bb +++ b/poky/meta/recipes-devtools/qemu/qemu-system-native_8.0.0.bb diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc index e2453dd8bc..394fa2acab 100644 --- a/poky/meta/recipes-devtools/qemu/qemu.inc +++ b/poky/meta/recipes-devtools/qemu/qemu.inc @@ -18,7 +18,6 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ file://powerpc_rom.bin \ file://run-ptest \ file://0001-qemu-Add-addition-environment-space-to-boot-loader-q.patch \ - file://0002-chardev-connect-socket-to-a-spawned-command.patch \ file://0003-apic-fixup-fallthrough-to-PIC.patch \ file://0004-configure-Add-pkg-config-handling-for-libgcrypt.patch \ file://0005-qemu-Do-not-include-file-if-not-exists.patch \ @@ -27,18 +26,15 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ file://0008-tests-meson.build-use-relative-path-to-refer-to-file.patch \ 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://0001-contrib-vhost-user-blk-Replace-lseek64-with-lseek.patch \ file://0002-linux-user-Replace-use-of-lfs64-related-functions-an.patch \ - file://0001-configure-Fix-check-tcg-not-executing-any-tests.patch \ - file://0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch \ - file://0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch \ file://0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch \ file://qemu-guest-agent.init \ file://qemu-guest-agent.udev \ + file://ppc.patch \ " UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" -SRC_URI[sha256sum] = "5b49ce2687744dad494ae90a898c52204a3406e84d072482a1e1be854eeb2157" +SRC_URI[sha256sum] = "bb60f0341531181d6cc3969dd19a013d0427a87f918193970d9adb91131e56d0" SRC_URI:append:class-target = " file://cross.patch" SRC_URI:append:class-nativesdk = " file://cross.patch" @@ -54,6 +50,11 @@ CVE_CHECK_IGNORE += "CVE-2007-0998" # https://bugzilla.redhat.com/show_bug.cgi?id=1609015#c11 CVE_CHECK_IGNORE += "CVE-2018-18438" +# As per https://nvd.nist.gov/vuln/detail/CVE-2023-0664 +# https://bugzilla.redhat.com/show_bug.cgi?id=2167423 +# this bug related to windows specific. +CVE_CHECK_IGNORE += "CVE-2023-0664" + COMPATIBLE_HOST:mipsarchn32 = "null" COMPATIBLE_HOST:mipsarchn64 = "null" COMPATIBLE_HOST:riscv32 = "null" diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch deleted file mode 100644 index cd8121fed1..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch +++ /dev/null @@ -1,69 +0,0 @@ -From afa96c55f2c270405de8984e2466067bbb44c0e4 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com> -Date: Tue, 10 Jan 2023 12:49:00 -0500 -Subject: [PATCH] Revert "linux-user: add more compat ioctl definitions" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit c5495f4ecb0cdaaf2e9dddeb48f1689cdb520ca0. - -glibc has fixed (in 2.36.9000-40-g774058d729) the problem -that caused a clash when both sys/mount.h annd linux/mount.h -are included, and backported this to the 2.36 stable release -too: - - https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E - -It is saner for QEMU to remove the workaround it applied for -glibc 2.36 and expect distros to ship the 2.36 maint release -with the fix. This avoids needing to add a further workaround -to QEMU to deal with the fact that linux/brtfs.h now also pulls -in linux/mount.h via linux/fs.h since Linux 6.1 - -Upstream-Status: Backport from v8.0 (master) - -Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> -Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> -Link: https://lore.kernel.org/r/20230110174901.2580297-2-berrange@redhat.com -Signed-off-by: Joel Stanley <joel@jms.id.au> ---- - linux-user/syscall.c | 25 ------------------------- - 1 file changed, 25 deletions(-) - -diff --git a/linux-user/syscall.c b/linux-user/syscall.c -index f95a6161e..510de8edc 100644 ---- a/linux-user/syscall.c -+++ b/linux-user/syscall.c -@@ -111,31 +111,6 @@ - #define FS_IOC32_SETFLAGS _IOW('f', 2, int) - #define FS_IOC32_GETVERSION _IOR('v', 1, int) - #define FS_IOC32_SETVERSION _IOW('v', 2, int) -- --#define BLKGETSIZE64 _IOR(0x12,114,size_t) --#define BLKDISCARD _IO(0x12,119) --#define BLKIOMIN _IO(0x12,120) --#define BLKIOOPT _IO(0x12,121) --#define BLKALIGNOFF _IO(0x12,122) --#define BLKPBSZGET _IO(0x12,123) --#define BLKDISCARDZEROES _IO(0x12,124) --#define BLKSECDISCARD _IO(0x12,125) --#define BLKROTATIONAL _IO(0x12,126) --#define BLKZEROOUT _IO(0x12,127) -- --#define FIBMAP _IO(0x00,1) --#define FIGETBSZ _IO(0x00,2) -- --struct file_clone_range { -- __s64 src_fd; -- __u64 src_offset; -- __u64 src_length; -- __u64 dest_offset; --}; -- --#define FICLONE _IOW(0x94, 9, int) --#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range) -- - #else - #include <linux/fs.h> - #endif diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-configure-Fix-check-tcg-not-executing-any-tests.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-configure-Fix-check-tcg-not-executing-any-tests.patch deleted file mode 100644 index 66ae4deae1..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-configure-Fix-check-tcg-not-executing-any-tests.patch +++ /dev/null @@ -1,56 +0,0 @@ -From f295491361ed7fbe729ef6f029d83f68b8e2bee3 Mon Sep 17 00:00:00 2001 -From: Mukilan Thiyagarajan <quic_mthiyaga@quicinc.com> -Date: Wed, 21 Dec 2022 09:04:06 +0000 -Subject: [PATCH] configure: Fix check-tcg not executing any tests -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -After configuring with --target-list=hexagon-linux-user -running `make check-tcg` just prints the following: - -``` -make: Nothing to be done for 'check-tcg' -``` - -In the probe_target_compiler function, the 'break' -command is used incorrectly. There are no lexically -enclosing loops associated with that break command which -is an unspecfied behaviour in the POSIX standard. - -The dash shell implementation aborts the currently executing -loop, in this case, causing the rest of the logic for the loop -in line 2490 to be skipped, which means no Makefiles are -generated for the tcg target tests. - -Fixes: c3b570b5a9a24d25 (configure: don't enable -cross compilers unless in target_list) - -Signed-off-by: Mukilan Thiyagarajan <quic_mthiyaga@quicinc.com> -Reviewed-by: Richard Henderson <richard.henderson@linaro.org> -Link: https://patchew.org/QEMU/20221207082309.9966-1-quic._5Fmthiyaga@quicinc.com/ -Message-Id: <20221207082309.9966-1-quic_mthiyaga@quicinc.com> -Signed-off-by: Alex Bennée <alex.bennee@linaro.org> -Message-Id: <20221221090411.1995037-2-alex.bennee@linaro.org> - -Upstream-Status: Backport [https://github.com/qemu/qemu/commit/73acb87be536d23e42db73a306104d8fd316ff20] -Signed-off-by: Alexander Kanavin <alex@linutronix.de> ---- - configure | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/configure b/configure -index 0c1db72b8..6b4589273 100755 ---- a/configure -+++ b/configure -@@ -1881,9 +1881,7 @@ probe_target_compiler() { - # We shall skip configuring the target compiler if the user didn't - # bother enabling an appropriate guest. This avoids building - # extraneous firmware images and tests. -- if test "${target_list#*$1}" != "$1"; then -- break; -- else -+ if test "${target_list#*$1}" = "$1"; then - return 1 - fi - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-contrib-vhost-user-blk-Replace-lseek64-with-lseek.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-contrib-vhost-user-blk-Replace-lseek64-with-lseek.patch deleted file mode 100644 index 1838c88f0e..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-contrib-vhost-user-blk-Replace-lseek64-with-lseek.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 38f5c88bf296dbbc04dcd57f36d64695055a2d3f Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 16 Dec 2022 20:19:49 -0800 -Subject: [PATCH 1/2] contrib/vhost-user-blk: Replace lseek64 with lseek - -64bit off_t is already in use since build uses _FILE_OFFSET_BITS=64 -already. Using lseek/off_t also makes it work with latest must without -using _LARGEFILE64_SOURCE macro. This macro is implied with _GNU_SOURCE -when using glibc but not with musl. - -Upstream-Status: Submitted [https://lists.gnu.org/archive/html/qemu-devel/2022-12/msg02840.html] -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Cc: Michael S. Tsirkin <mst@redhat.com> -CC: Raphael Norwitz <raphael.norwitz@nutanix.com> ---- - contrib/vhost-user-blk/vhost-user-blk.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/contrib/vhost-user-blk/vhost-user-blk.c b/contrib/vhost-user-blk/vhost-user-blk.c -index aa99877fcd..7941694e53 100644 ---- a/contrib/vhost-user-blk/vhost-user-blk.c -+++ b/contrib/vhost-user-blk/vhost-user-blk.c -@@ -532,9 +532,9 @@ vub_get_blocksize(int fd) - static void - vub_initialize_config(int fd, struct virtio_blk_config *config) - { -- off64_t capacity; -+ off_t capacity; - -- capacity = lseek64(fd, 0, SEEK_END); -+ capacity = lseek(fd, 0, SEEK_END); - config->capacity = capacity >> 9; - config->blk_size = vub_get_blocksize(fd); - config->size_max = 65536; --- -2.39.0 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-addition-environment-space-to-boot-loader-q.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-addition-environment-space-to-boot-loader-q.patch index 6fb160e6d3..c65508017d 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-addition-environment-space-to-boot-loader-q.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-addition-environment-space-to-boot-loader-q.patch @@ -18,11 +18,11 @@ Signed-off-by: Roy Li <rongqing.li@windriver.com> hw/mips/malta.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/hw/mips/malta.c b/hw/mips/malta.c -index 628851172..12d37f35d 100644 ---- a/hw/mips/malta.c -+++ b/hw/mips/malta.c -@@ -61,7 +61,7 @@ +Index: qemu-8.0.0/hw/mips/malta.c +=================================================================== +--- qemu-8.0.0.orig/hw/mips/malta.c ++++ qemu-8.0.0/hw/mips/malta.c +@@ -64,7 +64,7 @@ #define ENVP_PADDR 0x2000 #define ENVP_VADDR cpu_mips_phys_to_kseg0(NULL, ENVP_PADDR) #define ENVP_NB_ENTRIES 16 @@ -31,6 +31,3 @@ index 628851172..12d37f35d 100644 /* Hardware addresses */ #define FLASH_ADDRESS 0x1e000000ULL --- -2.30.2 - 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 index 5ef1184e3c..a32ee57f8a 100644 --- 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 @@ -16,11 +16,11 @@ Upstream-Status: Pending scripts/tracetool/backend/syslog.py | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) -diff --git a/scripts/tracetool/backend/ftrace.py b/scripts/tracetool/backend/ftrace.py -index 5fa30ccc08..baed2ae61c 100644 ---- a/scripts/tracetool/backend/ftrace.py -+++ b/scripts/tracetool/backend/ftrace.py -@@ -12,6 +12,8 @@ +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" @@ -38,11 +38,11 @@ index 5fa30ccc08..baed2ae61c 100644 fmt=event.fmt.rstrip("\n"), argnames=argnames) -diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py -index 17ba1cd90e..de27b7e62e 100644 ---- a/scripts/tracetool/backend/log.py -+++ b/scripts/tracetool/backend/log.py -@@ -12,6 +12,8 @@ +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" @@ -60,11 +60,11 @@ index 17ba1cd90e..de27b7e62e 100644 name=event.name, fmt=event.fmt.rstrip("\n"), argnames=argnames) -diff --git a/scripts/tracetool/backend/syslog.py b/scripts/tracetool/backend/syslog.py -index 5a3a00fe31..012970f6cc 100644 ---- a/scripts/tracetool/backend/syslog.py -+++ b/scripts/tracetool/backend/syslog.py -@@ -12,6 +12,8 @@ +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" @@ -82,6 +82,3 @@ index 5a3a00fe31..012970f6cc 100644 name=event.name, fmt=event.fmt.rstrip("\n"), argnames=argnames) --- -2.39.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch b/poky/meta/recipes-devtools/qemu/qemu/0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch deleted file mode 100644 index d754f21ad4..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch +++ /dev/null @@ -1,78 +0,0 @@ -From e95c0a42940ca1cf763ca3374b36a9be030039d7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com> -Date: Tue, 10 Jan 2023 12:49:01 -0500 -Subject: [PATCH] Revert "linux-user: fix compat with glibc >= 2.36 - sys/mount.h" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit 3cd3df2a9584e6f753bb62a0028bd67124ab5532. - -glibc has fixed (in 2.36.9000-40-g774058d729) the problem -that caused a clash when both sys/mount.h annd linux/mount.h -are included, and backported this to the 2.36 stable release -too: - - https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E - -It is saner for QEMU to remove the workaround it applied for -glibc 2.36 and expect distros to ship the 2.36 maint release -with the fix. This avoids needing to add a further workaround -to QEMU to deal with the fact that linux/brtfs.h now also pulls -in linux/mount.h via linux/fs.h since Linux 6.1 - -Upstream-Status: Backport from v8.0 (master) - -Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> -Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> -Link: https://lore.kernel.org/r/20230110174901.2580297-3-berrange@redhat.com -Signed-off-by: Joel Stanley <joel@jms.id.au> ---- - linux-user/syscall.c | 18 ------------------ - meson.build | 2 -- - 2 files changed, 20 deletions(-) - -diff --git a/linux-user/syscall.c b/linux-user/syscall.c -index 510de8edc..13a67b84b 100644 ---- a/linux-user/syscall.c -+++ b/linux-user/syscall.c -@@ -95,25 +95,7 @@ - #include <linux/soundcard.h> - #include <linux/kd.h> - #include <linux/mtio.h> -- --#ifdef HAVE_SYS_MOUNT_FSCONFIG --/* -- * glibc >= 2.36 linux/mount.h conflicts with sys/mount.h, -- * which in turn prevents use of linux/fs.h. So we have to -- * define the constants ourselves for now. -- */ --#define FS_IOC_GETFLAGS _IOR('f', 1, long) --#define FS_IOC_SETFLAGS _IOW('f', 2, long) --#define FS_IOC_GETVERSION _IOR('v', 1, long) --#define FS_IOC_SETVERSION _IOW('v', 2, long) --#define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap) --#define FS_IOC32_GETFLAGS _IOR('f', 1, int) --#define FS_IOC32_SETFLAGS _IOW('f', 2, int) --#define FS_IOC32_GETVERSION _IOR('v', 1, int) --#define FS_IOC32_SETVERSION _IOW('v', 2, int) --#else - #include <linux/fs.h> --#endif - #include <linux/fd.h> - #if defined(CONFIG_FIEMAP) - #include <linux/fiemap.h> -diff --git a/meson.build b/meson.build -index e44432370..f37ba4114 100644 ---- a/meson.build -+++ b/meson.build -@@ -2032,8 +2032,6 @@ config_host_data.set('HAVE_OPTRESET', - cc.has_header_symbol('getopt.h', 'optreset')) - config_host_data.set('HAVE_IPPROTO_MPTCP', - cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP')) --config_host_data.set('HAVE_SYS_MOUNT_FSCONFIG', -- cc.has_header_symbol('sys/mount.h', 'FSCONFIG_SET_FLAG')) - - # has_member - config_host_data.set('HAVE_SIGEV_NOTIFY_THREAD_ID', diff --git a/poky/meta/recipes-devtools/qemu/qemu/0002-chardev-connect-socket-to-a-spawned-command.patch b/poky/meta/recipes-devtools/qemu/qemu/0002-chardev-connect-socket-to-a-spawned-command.patch deleted file mode 100644 index 63a99c9620..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/0002-chardev-connect-socket-to-a-spawned-command.patch +++ /dev/null @@ -1,246 +0,0 @@ -From 14cd62607c9de232edf0a9b8503bd02783e03411 Mon Sep 17 00:00:00 2001 -From: Alistair Francis <alistair.francis@xilinx.com> -Date: Thu, 21 Dec 2017 11:35:16 -0800 -Subject: [PATCH 02/12] chardev: connect socket to a spawned command - -The command is started in a shell (sh -c) with stdin connect to QEMU -via a Unix domain stream socket. QEMU then exchanges data via its own -end of the socket, just like it normally does. - -"-chardev socket" supports some ways of connecting via protocols like -telnet, but that is only a subset of the functionality supported by -tools socat. To use socat instead, for example to connect via a socks -proxy, use: - - -chardev 'socket,id=socat,cmd=exec socat FD:0 SOCKS4A:socks-proxy.localdomain:example.com:9999,,socksuser=nobody' \ - -device usb-serial,chardev=socat - -Beware that commas in the command must be escaped as double commas. - -Or interactively in the console: - (qemu) chardev-add socket,id=cat,cmd=cat - (qemu) device_add usb-serial,chardev=cat - ^ac - # cat >/dev/ttyUSB0 - hello - hello - -Another usage is starting swtpm from inside QEMU. swtpm will -automatically shut down once it looses the connection to the parent -QEMU, so there is no risk of lingering processes: - - -chardev 'socket,id=chrtpm0,cmd=exec swtpm socket --terminate --ctrl type=unixio,,clientfd=0 --tpmstate dir=... --log file=swtpm.log' \ - -tpmdev emulator,id=tpm0,chardev=chrtpm0 \ - -device tpm-tis,tpmdev=tpm0 - -The patch was discussed upstream, but QEMU developers believe that the -code calling QEMU should be responsible for managing additional -processes. In OE-core, that would imply enhancing runqemu and -oeqa. This patch is a simpler solution. - -Because it is not going upstream, the patch was written so that it is -as simple as possible. - -Upstream-Status: Inappropriate [embedded specific] - -Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> - ---- - chardev/char-socket.c | 100 ++++++++++++++++++++++++++++++++++++++++++ - chardev/char.c | 3 ++ - qapi/char.json | 5 +++ - 3 files changed, 108 insertions(+) - -diff --git a/chardev/char-socket.c b/chardev/char-socket.c -index fab2d791d..c79641f24 100644 ---- a/chardev/char-socket.c -+++ b/chardev/char-socket.c -@@ -1315,6 +1315,67 @@ static bool qmp_chardev_validate_socket(ChardevSocket *sock, - return true; - } - -+#ifndef _WIN32 -+static void chardev_open_socket_cmd(Chardev *chr, -+ const char *cmd, -+ Error **errp) -+{ -+ int fds[2] = { -1, -1 }; -+ QIOChannelSocket *sioc = NULL; -+ pid_t pid = -1; -+ const char *argv[] = { "/bin/sh", "-c", cmd, NULL }; -+ -+ /* -+ * We need a Unix domain socket for commands like swtpm and a single -+ * connection, therefore we cannot use qio_channel_command_new_spawn() -+ * without patching it first. Duplicating the functionality is easier. -+ */ -+ if (socketpair(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0, fds)) { -+ error_setg_errno(errp, errno, "Error creating socketpair(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC)"); -+ goto error; -+ } -+ -+ pid = qemu_fork(errp); -+ if (pid < 0) { -+ goto error; -+ } -+ -+ if (!pid) { -+ /* child */ -+ dup2(fds[1], STDIN_FILENO); -+ execv(argv[0], (char * const *)argv); -+ _exit(1); -+ } -+ -+ /* -+ * Hand over our end of the socket pair to the qio channel. -+ * -+ * We don't reap the child because it is expected to keep -+ * running. We also don't support the "reconnect" option for the -+ * same reason. -+ */ -+ sioc = qio_channel_socket_new_fd(fds[0], errp); -+ if (!sioc) { -+ goto error; -+ } -+ fds[0] = -1; -+ -+ g_free(chr->filename); -+ chr->filename = g_strdup_printf("cmd:%s", cmd); -+ tcp_chr_new_client(chr, sioc); -+ -+ error: -+ if (fds[0] >= 0) { -+ close(fds[0]); -+ } -+ if (fds[1] >= 0) { -+ close(fds[1]); -+ } -+ if (sioc) { -+ object_unref(OBJECT(sioc)); -+ } -+} -+#endif - - static void qmp_chardev_open_socket(Chardev *chr, - ChardevBackend *backend, -@@ -1323,6 +1384,9 @@ static void qmp_chardev_open_socket(Chardev *chr, - { - SocketChardev *s = SOCKET_CHARDEV(chr); - ChardevSocket *sock = backend->u.socket.data; -+#ifndef _WIN32 -+ const char *cmd = sock->cmd; -+#endif - bool do_nodelay = sock->has_nodelay ? sock->nodelay : false; - bool is_listen = sock->has_server ? sock->server : true; - bool is_telnet = sock->has_telnet ? sock->telnet : false; -@@ -1393,6 +1457,14 @@ static void qmp_chardev_open_socket(Chardev *chr, - - update_disconnected_filename(s); - -+#ifndef _WIN32 -+ if (cmd) { -+ chardev_open_socket_cmd(chr, cmd, errp); -+ -+ /* everything ready (or failed permanently) before we return */ -+ *be_opened = true; -+ } else -+#endif - if (s->is_listen) { - if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270, - is_waitconnect, errp) < 0) { -@@ -1412,6 +1484,9 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend, - const char *host = qemu_opt_get(opts, "host"); - const char *port = qemu_opt_get(opts, "port"); - const char *fd = qemu_opt_get(opts, "fd"); -+#ifndef _WIN32 -+ const char *cmd = qemu_opt_get(opts, "cmd"); -+#endif - #ifdef CONFIG_LINUX - bool tight = qemu_opt_get_bool(opts, "tight", true); - bool abstract = qemu_opt_get_bool(opts, "abstract", false); -@@ -1419,6 +1494,20 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend, - SocketAddressLegacy *addr; - ChardevSocket *sock; - -+#ifndef _WIN32 -+ if (cmd) { -+ /* -+ * Here we have to ensure that no options are set which are incompatible with -+ * spawning a command, otherwise unmodified code that doesn't know about -+ * command spawning (like socket_reconnect_timeout()) might get called. -+ */ -+ if (path || sock->server || sock->has_telnet || sock->has_tn3270 || sock->reconnect || host || port || sock->tls_creds) { -+ error_setg(errp, "chardev: socket: cmd does not support any additional options"); -+ return; -+ } -+ } else -+#endif -+ - if ((!!path + !!fd + !!host) > 1) { - error_setg(errp, - "None or one of 'path', 'fd' or 'host' option required."); -@@ -1469,13 +1558,24 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend, - sock->tls_creds = g_strdup(qemu_opt_get(opts, "tls-creds")); - sock->has_tls_authz = qemu_opt_get(opts, "tls-authz"); - sock->tls_authz = g_strdup(qemu_opt_get(opts, "tls-authz")); -+#ifndef _WIN32 -+ sock->cmd = g_strdup(cmd); -+#endif - - addr = g_new0(SocketAddressLegacy, 1); -+#ifndef _WIN32 -+ if (path || cmd) { -+#else - if (path) { -+#endif - UnixSocketAddress *q_unix; - addr->type = SOCKET_ADDRESS_TYPE_UNIX; - q_unix = addr->u.q_unix.data = g_new0(UnixSocketAddress, 1); -+#ifndef _WIN32 -+ q_unix->path = cmd ? g_strdup_printf("cmd:%s", cmd) : g_strdup(path); -+#else - q_unix->path = g_strdup(path); -+#endif - #ifdef CONFIG_LINUX - q_unix->has_tight = true; - q_unix->tight = tight; -diff --git a/chardev/char.c b/chardev/char.c -index 0169d8dde..ce9a21f41 100644 ---- a/chardev/char.c -+++ b/chardev/char.c -@@ -835,6 +835,9 @@ QemuOptsList qemu_chardev_opts = { - },{ - .name = "path", - .type = QEMU_OPT_STRING, -+ },{ -+ .name = "cmd", -+ .type = QEMU_OPT_STRING, - },{ - .name = "host", - .type = QEMU_OPT_STRING, -diff --git a/qapi/char.json b/qapi/char.json -index 7b4215157..37feabdac 100644 ---- a/qapi/char.json -+++ b/qapi/char.json -@@ -250,6 +250,10 @@ - # - # @addr: socket address to listen on (server=true) - # or connect to (server=false) -+# @cmd: command to run via "sh -c" with stdin as one end of -+# a AF_UNIX SOCK_DSTREAM socket pair. The other end -+# is used by the chardev. Either an addr or a cmd can -+# be specified, but not both. - # @tls-creds: the ID of the TLS credentials object (since 2.6) - # @tls-authz: the ID of the QAuthZ authorization object against which - # the client's x509 distinguished name will be validated. This -@@ -276,6 +280,7 @@ - ## - { 'struct': 'ChardevSocket', - 'data': { 'addr': 'SocketAddressLegacy', -+ '*cmd': 'str', - '*tls-creds': 'str', - '*tls-authz' : 'str', - '*server': 'bool', --- -2.30.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0002-linux-user-Replace-use-of-lfs64-related-functions-an.patch b/poky/meta/recipes-devtools/qemu/qemu/0002-linux-user-Replace-use-of-lfs64-related-functions-an.patch index 14b5338eb2..ceae67be64 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0002-linux-user-Replace-use-of-lfs64-related-functions-an.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0002-linux-user-Replace-use-of-lfs64-related-functions-an.patch @@ -16,11 +16,11 @@ Cc: Laurent Vivier <laurent@vivier.eu> linux-user/syscall.c | 153 +++++++++++-------------------------------- 1 file changed, 39 insertions(+), 114 deletions(-) -diff --git a/linux-user/syscall.c b/linux-user/syscall.c -index 1f8c10f8ef..30d83ed162 100644 ---- a/linux-user/syscall.c -+++ b/linux-user/syscall.c -@@ -795,8 +795,8 @@ safe_syscall6(ssize_t, copy_file_range, int, infd, loff_t *, pinoff, +Index: qemu-8.0.0/linux-user/syscall.c +=================================================================== +--- qemu-8.0.0.orig/linux-user/syscall.c ++++ qemu-8.0.0/linux-user/syscall.c +@@ -761,8 +761,8 @@ safe_syscall6(ssize_t, copy_file_range, */ #define safe_ioctl(...) safe_syscall(__NR_ioctl, __VA_ARGS__) /* Similarly for fcntl. Note that callers must always: @@ -31,7 +31,7 @@ index 1f8c10f8ef..30d83ed162 100644 * This will then work and use a 64-bit offset for both 32-bit and 64-bit hosts. */ #ifdef __NR_fcntl64 -@@ -6797,13 +6797,13 @@ static int target_to_host_fcntl_cmd(int cmd) +@@ -6813,13 +6813,13 @@ static int target_to_host_fcntl_cmd(int ret = cmd; break; case TARGET_F_GETLK: @@ -48,7 +48,7 @@ index 1f8c10f8ef..30d83ed162 100644 break; case TARGET_F_GETOWN: ret = F_GETOWN; -@@ -6817,17 +6817,6 @@ static int target_to_host_fcntl_cmd(int cmd) +@@ -6833,17 +6833,6 @@ static int target_to_host_fcntl_cmd(int case TARGET_F_SETSIG: ret = F_SETSIG; break; @@ -66,7 +66,7 @@ index 1f8c10f8ef..30d83ed162 100644 case TARGET_F_SETLEASE: ret = F_SETLEASE; break; -@@ -6879,8 +6868,8 @@ static int target_to_host_fcntl_cmd(int cmd) +@@ -6895,8 +6884,8 @@ static int target_to_host_fcntl_cmd(int * them to 5, 6 and 7 before making the syscall(). Since we make the * syscall directly, adjust to what is supported by the kernel. */ @@ -77,7 +77,7 @@ index 1f8c10f8ef..30d83ed162 100644 } #endif -@@ -6913,55 +6902,11 @@ static int host_to_target_flock(int type) +@@ -6929,55 +6918,11 @@ static int host_to_target_flock(int type return type; } @@ -136,7 +136,7 @@ index 1f8c10f8ef..30d83ed162 100644 abi_short l_type; abi_short l_whence; abi_llong l_start; -@@ -6969,10 +6914,10 @@ struct target_oabi_flock64 { +@@ -6985,10 +6930,10 @@ struct target_oabi_flock64 { abi_int l_pid; } QEMU_PACKED; @@ -149,7 +149,7 @@ index 1f8c10f8ef..30d83ed162 100644 int l_type; if (!lock_user_struct(VERIFY_READ, target_fl, target_flock_addr, 1)) { -@@ -6993,10 +6938,10 @@ static inline abi_long copy_from_user_oabi_flock64(struct flock64 *fl, +@@ -7009,10 +6954,10 @@ static inline abi_long copy_from_user_oa return 0; } @@ -163,7 +163,7 @@ index 1f8c10f8ef..30d83ed162 100644 short l_type; if (!lock_user_struct(VERIFY_WRITE, target_fl, target_flock_addr, 0)) { -@@ -7014,10 +6959,10 @@ static inline abi_long copy_to_user_oabi_flock64(abi_ulong target_flock_addr, +@@ -7030,10 +6975,10 @@ static inline abi_long copy_to_user_oabi } #endif @@ -176,7 +176,7 @@ index 1f8c10f8ef..30d83ed162 100644 int l_type; if (!lock_user_struct(VERIFY_READ, target_fl, target_flock_addr, 1)) { -@@ -7038,10 +6983,10 @@ static inline abi_long copy_from_user_flock64(struct flock64 *fl, +@@ -7054,10 +6999,10 @@ static inline abi_long copy_from_user_fl return 0; } @@ -190,7 +190,7 @@ index 1f8c10f8ef..30d83ed162 100644 short l_type; if (!lock_user_struct(VERIFY_WRITE, target_fl, target_flock_addr, 0)) { -@@ -7060,7 +7005,7 @@ static inline abi_long copy_to_user_flock64(abi_ulong target_flock_addr, +@@ -7076,7 +7021,7 @@ static inline abi_long copy_to_user_floc static abi_long do_fcntl(int fd, int cmd, abi_ulong arg) { @@ -199,7 +199,7 @@ index 1f8c10f8ef..30d83ed162 100644 #ifdef F_GETOWN_EX struct f_owner_ex fox; struct target_f_owner_ex *target_fox; -@@ -7073,6 +7018,7 @@ static abi_long do_fcntl(int fd, int cmd, abi_ulong arg) +@@ -7089,6 +7034,7 @@ static abi_long do_fcntl(int fd, int cmd switch(cmd) { case TARGET_F_GETLK: @@ -207,7 +207,7 @@ index 1f8c10f8ef..30d83ed162 100644 ret = copy_from_user_flock(&fl64, arg); if (ret) { return ret; -@@ -7082,32 +7028,11 @@ static abi_long do_fcntl(int fd, int cmd, abi_ulong arg) +@@ -7098,32 +7044,11 @@ static abi_long do_fcntl(int fd, int cmd ret = copy_to_user_flock(arg, &fl64); } break; @@ -241,7 +241,7 @@ index 1f8c10f8ef..30d83ed162 100644 if (ret) { return ret; } -@@ -7332,7 +7257,7 @@ static inline abi_long target_truncate64(CPUArchState *cpu_env, const char *arg1 +@@ -7348,7 +7273,7 @@ static inline abi_long target_truncate64 arg2 = arg3; arg3 = arg4; } @@ -250,7 +250,7 @@ index 1f8c10f8ef..30d83ed162 100644 } #endif -@@ -7346,7 +7271,7 @@ static inline abi_long target_ftruncate64(CPUArchState *cpu_env, abi_long arg1, +@@ -7362,7 +7287,7 @@ static inline abi_long target_ftruncate6 arg2 = arg3; arg3 = arg4; } @@ -259,7 +259,7 @@ index 1f8c10f8ef..30d83ed162 100644 } #endif -@@ -8452,7 +8377,7 @@ static int do_getdents(abi_long dirfd, abi_long arg2, abi_long count) +@@ -8598,7 +8523,7 @@ static int do_getdents(abi_long dirfd, a void *tdirp; int hlen, hoff, toff; int hreclen, treclen; @@ -268,7 +268,7 @@ index 1f8c10f8ef..30d83ed162 100644 hdirp = g_try_malloc(count); if (!hdirp) { -@@ -8505,7 +8430,7 @@ static int do_getdents(abi_long dirfd, abi_long arg2, abi_long count) +@@ -8651,7 +8576,7 @@ static int do_getdents(abi_long dirfd, a * Return what we have, resetting the file pointer to the * location of the first record not returned. */ @@ -277,7 +277,7 @@ index 1f8c10f8ef..30d83ed162 100644 break; } -@@ -8539,7 +8464,7 @@ static int do_getdents64(abi_long dirfd, abi_long arg2, abi_long count) +@@ -8685,7 +8610,7 @@ static int do_getdents64(abi_long dirfd, void *tdirp; int hlen, hoff, toff; int hreclen, treclen; @@ -286,7 +286,7 @@ index 1f8c10f8ef..30d83ed162 100644 hdirp = g_try_malloc(count); if (!hdirp) { -@@ -8581,7 +8506,7 @@ static int do_getdents64(abi_long dirfd, abi_long arg2, abi_long count) +@@ -8727,7 +8652,7 @@ static int do_getdents64(abi_long dirfd, * Return what we have, resetting the file pointer to the * location of the first record not returned. */ @@ -295,7 +295,7 @@ index 1f8c10f8ef..30d83ed162 100644 break; } -@@ -11114,7 +11039,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, +@@ -11158,7 +11083,7 @@ static abi_long do_syscall1(CPUArchState return -TARGET_EFAULT; } } @@ -304,7 +304,7 @@ index 1f8c10f8ef..30d83ed162 100644 unlock_user(p, arg2, ret); return ret; case TARGET_NR_pwrite64: -@@ -11131,7 +11056,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, +@@ -11175,7 +11100,7 @@ static abi_long do_syscall1(CPUArchState return -TARGET_EFAULT; } } @@ -313,7 +313,7 @@ index 1f8c10f8ef..30d83ed162 100644 unlock_user(p, arg2, 0); return ret; #endif -@@ -11954,14 +11879,14 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, +@@ -11998,14 +11923,14 @@ static abi_long do_syscall1(CPUArchState case TARGET_NR_fcntl64: { int cmd; @@ -333,7 +333,7 @@ index 1f8c10f8ef..30d83ed162 100644 } #endif -@@ -11971,7 +11896,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, +@@ -12015,7 +11940,7 @@ static abi_long do_syscall1(CPUArchState } switch(arg2) { @@ -342,7 +342,7 @@ index 1f8c10f8ef..30d83ed162 100644 ret = copyfrom(&fl, arg3); if (ret) { break; -@@ -11982,8 +11907,8 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, +@@ -12026,8 +11951,8 @@ static abi_long do_syscall1(CPUArchState } break; @@ -353,6 +353,3 @@ index 1f8c10f8ef..30d83ed162 100644 ret = copyfrom(&fl, arg3); if (ret) { break; --- -2.39.0 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0003-apic-fixup-fallthrough-to-PIC.patch b/poky/meta/recipes-devtools/qemu/qemu/0003-apic-fixup-fallthrough-to-PIC.patch index f350ffce47..e85f8202e9 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0003-apic-fixup-fallthrough-to-PIC.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0003-apic-fixup-fallthrough-to-PIC.patch @@ -29,11 +29,11 @@ Signed-off-by: He Zhe <zhe.he@windriver.com> hw/intc/apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/hw/intc/apic.c b/hw/intc/apic.c -index 3df11c34d..9506c88ce 100644 ---- a/hw/intc/apic.c -+++ b/hw/intc/apic.c -@@ -605,7 +605,7 @@ int apic_accept_pic_intr(DeviceState *dev) +Index: qemu-8.0.0/hw/intc/apic.c +=================================================================== +--- qemu-8.0.0.orig/hw/intc/apic.c ++++ qemu-8.0.0/hw/intc/apic.c +@@ -607,7 +607,7 @@ int apic_accept_pic_intr(DeviceState *de APICCommonState *s = APIC(dev); uint32_t lvt0; @@ -42,6 +42,3 @@ index 3df11c34d..9506c88ce 100644 return -1; lvt0 = s->lvt[APIC_LVT_LINT0]; --- -2.30.2 - 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 6faebd4e09..02f22143c1 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,11 +14,11 @@ Signed-off-by: He Zhe <zhe.he@windriver.com> meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/meson.build b/meson.build -index 861de93c4..d45ff2d7c 100644 ---- a/meson.build -+++ b/meson.build -@@ -1063,7 +1063,7 @@ endif +Index: qemu-8.0.0/meson.build +=================================================================== +--- qemu-8.0.0.orig/meson.build ++++ qemu-8.0.0/meson.build +@@ -1213,7 +1213,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', @@ -27,6 +27,3 @@ index 861de93c4..d45ff2d7c 100644 required: get_option('gcrypt'), kwargs: static_kwargs) # Debian has removed -lgpg-error from libgcrypt-config --- -2.30.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0005-qemu-Do-not-include-file-if-not-exists.patch b/poky/meta/recipes-devtools/qemu/qemu/0005-qemu-Do-not-include-file-if-not-exists.patch index 3f3c39f996..38aa4c3bbe 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0005-qemu-Do-not-include-file-if-not-exists.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0005-qemu-Do-not-include-file-if-not-exists.patch @@ -16,11 +16,11 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> linux-user/syscall.c | 2 ++ 1 file changed, 2 insertions(+) -diff --git a/linux-user/syscall.c b/linux-user/syscall.c -index f65045efe..340e0c6f0 100644 ---- a/linux-user/syscall.c -+++ b/linux-user/syscall.c -@@ -113,7 +113,9 @@ +Index: qemu-8.0.0/linux-user/syscall.c +=================================================================== +--- qemu-8.0.0.orig/linux-user/syscall.c ++++ qemu-8.0.0/linux-user/syscall.c +@@ -115,7 +115,9 @@ #include <linux/blkpg.h> #include <netpacket/packet.h> #include <linux/netlink.h> @@ -30,6 +30,3 @@ index f65045efe..340e0c6f0 100644 #include <linux/rtc.h> #include <sound/asound.h> #ifdef HAVE_BTRFS_H --- -2.30.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0006-qemu-Add-some-user-space-mmap-tweaks-to-address-musl.patch b/poky/meta/recipes-devtools/qemu/qemu/0006-qemu-Add-some-user-space-mmap-tweaks-to-address-musl.patch index 75c0369318..5d1d7c6881 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0006-qemu-Add-some-user-space-mmap-tweaks-to-address-musl.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0006-qemu-Add-some-user-space-mmap-tweaks-to-address-musl.patch @@ -23,11 +23,11 @@ Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org linux-user/mmap.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) -diff --git a/linux-user/mmap.c b/linux-user/mmap.c -index c125031b9..e651834a5 100644 ---- a/linux-user/mmap.c -+++ b/linux-user/mmap.c -@@ -749,12 +749,16 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size, +Index: qemu-8.0.0/linux-user/mmap.c +=================================================================== +--- qemu-8.0.0.orig/linux-user/mmap.c ++++ qemu-8.0.0/linux-user/mmap.c +@@ -776,12 +776,16 @@ abi_long target_mremap(abi_ulong old_add int prot; void *host_addr; @@ -47,6 +47,3 @@ index c125031b9..e651834a5 100644 return -1; } --- -2.30.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0007-qemu-Determinism-fixes.patch b/poky/meta/recipes-devtools/qemu/qemu/0007-qemu-Determinism-fixes.patch index 0d7dae3689..d3f965e070 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0007-qemu-Determinism-fixes.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0007-qemu-Determinism-fixes.patch @@ -16,10 +16,10 @@ RP 2021/3/1 scripts/decodetree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/scripts/decodetree.py b/scripts/decodetree.py -index a03dc6b5e..4ea24c1f3 100644 ---- a/scripts/decodetree.py -+++ b/scripts/decodetree.py +Index: qemu-8.0.0/scripts/decodetree.py +=================================================================== +--- qemu-8.0.0.orig/scripts/decodetree.py ++++ qemu-8.0.0/scripts/decodetree.py @@ -1328,7 +1328,7 @@ def main(): toppat = ExcMultiPattern(0) @@ -29,6 +29,3 @@ index a03dc6b5e..4ea24c1f3 100644 f = open(filename, 'rt', encoding='utf-8') parse_file(f, toppat) f.close() --- -2.30.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0008-tests-meson.build-use-relative-path-to-refer-to-file.patch b/poky/meta/recipes-devtools/qemu/qemu/0008-tests-meson.build-use-relative-path-to-refer-to-file.patch index 43d3c7cf1f..a84364ccc1 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0008-tests-meson.build-use-relative-path-to-refer-to-file.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0008-tests-meson.build-use-relative-path-to-refer-to-file.patch @@ -17,22 +17,25 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com> tests/unit/meson.build | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/tests/unit/meson.build b/tests/unit/meson.build -index 96b295263..e4c3246dc 100644 ---- a/tests/unit/meson.build -+++ b/tests/unit/meson.build -@@ -44,9 +44,9 @@ tests = { +Index: qemu-8.0.0/tests/unit/meson.build +=================================================================== +--- qemu-8.0.0.orig/tests/unit/meson.build ++++ qemu-8.0.0/tests/unit/meson.build +@@ -46,7 +46,7 @@ tests = { 'test-keyval': [testqapi], 'test-logging': [], 'test-uuid': [], - 'ptimer-test': ['ptimer-test-stubs.c', meson.project_source_root() / 'hw/core/ptimer.c'], + 'ptimer-test': ['ptimer-test-stubs.c', '../../hw/core/ptimer.c'], 'test-qapi-util': [], -- 'test-smp-parse': [qom, meson.project_source_root() / 'hw/core/machine-smp.c'], -+ 'test-smp-parse': [qom, '../../hw/core/machine-smp.c'], - } - - if have_system or have_tools --- -2.30.2 - + 'test-interval-tree': [], + 'test-xs-node': [qom], +@@ -136,7 +136,7 @@ if have_system + 'test-util-sockets': ['socket-helpers.c'], + 'test-base64': [], + 'test-bufferiszero': [], +- 'test-smp-parse': [qom, meson.project_source_root() / 'hw/core/machine-smp.c'], ++ 'test-smp-parse': [qom, '../../hw/core/machine-smp.c'], + 'test-vmstate': [migration, io], + 'test-yank': ['socket-helpers.c', qom, io, chardev] + } diff --git a/poky/meta/recipes-devtools/qemu/qemu/0009-Define-MAP_SYNC-and-MAP_SHARED_VALIDATE-on-needed-li.patch b/poky/meta/recipes-devtools/qemu/qemu/0009-Define-MAP_SYNC-and-MAP_SHARED_VALIDATE-on-needed-li.patch index 23d0a69802..4de6cc2445 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0009-Define-MAP_SYNC-and-MAP_SHARED_VALIDATE-on-needed-li.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0009-Define-MAP_SYNC-and-MAP_SHARED_VALIDATE-on-needed-li.patch @@ -18,10 +18,10 @@ Cc: Michael S. Tsirkin <mst@redhat.com> util/mmap-alloc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) -diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c -index 893d86435..86d3cda24 100644 ---- a/util/mmap-alloc.c -+++ b/util/mmap-alloc.c +Index: qemu-8.0.0/util/mmap-alloc.c +=================================================================== +--- qemu-8.0.0.orig/util/mmap-alloc.c ++++ qemu-8.0.0/util/mmap-alloc.c @@ -10,14 +10,18 @@ * later. See the COPYING file in the top-level directory. */ @@ -44,6 +44,3 @@ index 893d86435..86d3cda24 100644 #include "qemu/mmap-alloc.h" #include "qemu/host-utils.h" #include "qemu/cutils.h" --- -2.30.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0010-hw-pvrdma-Protect-against-buggy-or-malicious-guest-d.patch b/poky/meta/recipes-devtools/qemu/qemu/0010-hw-pvrdma-Protect-against-buggy-or-malicious-guest-d.patch index 810c74fabd..6caf35b634 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0010-hw-pvrdma-Protect-against-buggy-or-malicious-guest-d.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0010-hw-pvrdma-Protect-against-buggy-or-malicious-guest-d.patch @@ -21,13 +21,13 @@ Signed-off-by: Yuval Shaia <yuval.shaia.ml@gmail.com> hw/rdma/vmw/pvrdma_cmd.c | 6 ++++++ 1 file changed, 6 insertions(+) -diff --git a/hw/rdma/vmw/pvrdma_cmd.c b/hw/rdma/vmw/pvrdma_cmd.c -index da7ddfa548..89db963c46 100644 ---- a/hw/rdma/vmw/pvrdma_cmd.c -+++ b/hw/rdma/vmw/pvrdma_cmd.c -@@ -796,6 +796,12 @@ int pvrdma_exec_cmd(PVRDMADev *dev) - - dsr_info = &dev->dsr_info; +Index: qemu-8.0.0/hw/rdma/vmw/pvrdma_cmd.c +=================================================================== +--- qemu-8.0.0.orig/hw/rdma/vmw/pvrdma_cmd.c ++++ qemu-8.0.0/hw/rdma/vmw/pvrdma_cmd.c +@@ -782,6 +782,12 @@ int pvrdma_exec_cmd(PVRDMADev *dev) + goto out; + } + if (!dsr_info->dsr) { + /* Buggy or malicious guest driver */ @@ -38,6 +38,3 @@ index da7ddfa548..89db963c46 100644 if (dsr_info->req->hdr.cmd >= sizeof(cmd_handlers) / sizeof(struct cmd_handler)) { rdma_error_report("Unsupported command"); --- -2.34.1 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/cross.patch b/poky/meta/recipes-devtools/qemu/qemu/cross.patch index ca2ad361ef..112eb92593 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/cross.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/cross.patch @@ -14,19 +14,19 @@ Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> configure | 4 ---- 1 file changed, 4 deletions(-) -Index: qemu-7.1.0/configure +Index: qemu-8.0.0/configure =================================================================== ---- qemu-7.1.0.orig/configure -+++ qemu-7.1.0/configure -@@ -2710,7 +2710,6 @@ if test "$skip_meson" = no; then - echo "strip = [$(meson_quote $strip)]" >> $cross +--- qemu-8.0.0.orig/configure ++++ qemu-8.0.0/configure +@@ -2590,7 +2590,6 @@ if test "$skip_meson" = no; then echo "widl = [$(meson_quote $widl)]" >> $cross echo "windres = [$(meson_quote $windres)]" >> $cross + echo "windmc = [$(meson_quote $windmc)]" >> $cross - if test "$cross_compile" = "yes"; then cross_arg="--cross-file config-meson.cross" echo "[host_machine]" >> $cross echo "system = '$targetos'" >> $cross -@@ -2728,9 +2727,6 @@ if test "$skip_meson" = no; then +@@ -2608,9 +2607,6 @@ if test "$skip_meson" = no; then else echo "endian = 'little'" >> $cross fi diff --git a/poky/meta/recipes-devtools/qemu/qemu/ppc.patch b/poky/meta/recipes-devtools/qemu/qemu/ppc.patch new file mode 100644 index 0000000000..ade1daf61f --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/ppc.patch @@ -0,0 +1,70 @@ +target/ppc: Fix fallback to MFSS for MFFSCRN, MFFSCRNI, MFFSCE and MFFSL + +The following commits changed the code such that these instructions became invalid +on pre 3.0 ISAs: + + bf8adfd88b547680aa857c46098f3a1e94373160 - target/ppc: Move mffscrn[i] to decodetree + 394c2e2fda70da722f20fb60412d6c0ca4bfaa03 - target/ppc: Move mffsce to decodetree + 3e5bce70efe6bd1f684efbb21fd2a316cbf0657e - target/ppc: Move mffsl to decodetree + +The hardware will handle them as a MFFS instruction as the code did previously. +Restore that behaviour. This means applications that were segfaulting under qemu +when encountering these instructions now operate correctly. The instruction +is used in glibc libm functions for example. + +Upstream-Status: Submitted [https://lore.kernel.org/qemu-devel/20230504110150.3044402-1-richard.purdie@linuxfoundation.org/] + +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Index: qemu-8.0.0/target/ppc/translate/fp-impl.c.inc +=================================================================== +--- qemu-8.0.0.orig/target/ppc/translate/fp-impl.c.inc ++++ qemu-8.0.0/target/ppc/translate/fp-impl.c.inc +@@ -584,7 +584,10 @@ static bool trans_MFFSCE(DisasContext *c + { + TCGv_i64 fpscr; + +- REQUIRE_INSNS_FLAGS2(ctx, ISA300); ++ if (unlikely(!(ctx->insns_flags2 & PPC2_ISA300))) { ++ return trans_MFFS(ctx, a); ++ } ++ + REQUIRE_FPU(ctx); + + gen_reset_fpstatus(); +@@ -597,7 +600,10 @@ static bool trans_MFFSCRN(DisasContext * + { + TCGv_i64 t1, fpscr; + +- REQUIRE_INSNS_FLAGS2(ctx, ISA300); ++ if (unlikely(!(ctx->insns_flags2 & PPC2_ISA300))) { ++ return trans_MFFS(ctx, a); ++ } ++ + REQUIRE_FPU(ctx); + + t1 = tcg_temp_new_i64(); +@@ -631,7 +637,10 @@ static bool trans_MFFSCRNI(DisasContext + { + TCGv_i64 t1, fpscr; + +- REQUIRE_INSNS_FLAGS2(ctx, ISA300); ++ if (unlikely(!(ctx->insns_flags2 & PPC2_ISA300))) { ++ return trans_MFFS(ctx, a); ++ } ++ + REQUIRE_FPU(ctx); + + t1 = tcg_temp_new_i64(); +@@ -661,7 +670,10 @@ static bool trans_MFFSCDRNI(DisasContext + + static bool trans_MFFSL(DisasContext *ctx, arg_X_t *a) + { +- REQUIRE_INSNS_FLAGS2(ctx, ISA300); ++ if (unlikely(!(ctx->insns_flags2 & PPC2_ISA300))) { ++ return trans_MFFS(ctx, a); ++ } ++ + REQUIRE_FPU(ctx); + + gen_reset_fpstatus(); diff --git a/poky/meta/recipes-devtools/qemu/qemu_7.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu_8.0.0.bb index 42e133967e..42e133967e 100644 --- a/poky/meta/recipes-devtools/qemu/qemu_7.2.0.bb +++ b/poky/meta/recipes-devtools/qemu/qemu_8.0.0.bb |