From 842e8054759a6b6959221a9fd9e6bb2674eb3f19 Mon Sep 17 00:00:00 2001 From: Eduardo Lima (Etrunko) Date: Dec 04 2021 16:36:50 +0000 Subject: qemu-6.2.0-rc3 Signed-off-by: Eduardo Lima (Etrunko) --- diff --git a/0001-block-introduce-max_hw_iov-for-use-in-scsi-generic.patch b/0001-block-introduce-max_hw_iov-for-use-in-scsi-generic.patch deleted file mode 100644 index 25b06a7..0000000 --- a/0001-block-introduce-max_hw_iov-for-use-in-scsi-generic.patch +++ /dev/null @@ -1,124 +0,0 @@ -From cc071629539dc1f303175a7e2d4ab854c0a8b20f Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Thu, 23 Sep 2021 09:04:36 -0400 -Subject: [PATCH] block: introduce max_hw_iov for use in scsi-generic - -Linux limits the size of iovecs to 1024 (UIO_MAXIOV in the kernel -sources, IOV_MAX in POSIX). Because of this, on some host adapters -requests with many iovecs are rejected with -EINVAL by the -io_submit() or readv()/writev() system calls. - -In fact, the same limit applies to SG_IO as well. To fix both the -EINVAL and the possible performance issues from using fewer iovecs -than allowed by Linux (some HBAs have max_segments as low as 128), -introduce a separate entry in BlockLimits to hold the max_segments -value from sysfs. This new limit is used only for SG_IO and clamped -to bs->bl.max_iov anyway, just like max_hw_transfer is clamped to -bs->bl.max_transfer. - -Reported-by: Halil Pasic -Cc: Hanna Reitz -Cc: Kevin Wolf -Cc: qemu-block@nongnu.org -Cc: qemu-stable@nongnu.org -Fixes: 18473467d5 ("file-posix: try BLKSECTGET on block devices too, do not round to power of 2", 2021-06-25) -Signed-off-by: Paolo Bonzini -Message-Id: <20210923130436.1187591-1-pbonzini@redhat.com> -Signed-off-by: Kevin Wolf ---- - block/block-backend.c | 6 ++++++ - block/file-posix.c | 2 +- - block/io.c | 1 + - hw/scsi/scsi-generic.c | 2 +- - include/block/block_int.h | 7 +++++++ - include/sysemu/block-backend.h | 1 + - 6 files changed, 17 insertions(+), 2 deletions(-) - -diff --git a/block/block-backend.c b/block/block-backend.c -index 6140d133e2..ba2b5ebb10 100644 ---- a/block/block-backend.c -+++ b/block/block-backend.c -@@ -1986,6 +1986,12 @@ uint32_t blk_get_max_transfer(BlockBackend *blk) - return ROUND_DOWN(max, blk_get_request_alignment(blk)); - } - -+int blk_get_max_hw_iov(BlockBackend *blk) -+{ -+ return MIN_NON_ZERO(blk->root->bs->bl.max_hw_iov, -+ blk->root->bs->bl.max_iov); -+} -+ - int blk_get_max_iov(BlockBackend *blk) - { - return blk->root->bs->bl.max_iov; -diff --git a/block/file-posix.c b/block/file-posix.c -index c62e42743d..53be0bdc1b 100644 ---- a/block/file-posix.c -+++ b/block/file-posix.c -@@ -1273,7 +1273,7 @@ static void raw_refresh_limits(BlockDriverState *bs, Error **errp) - - ret = hdev_get_max_segments(s->fd, &st); - if (ret > 0) { -- bs->bl.max_iov = ret; -+ bs->bl.max_hw_iov = ret; - } - } - } -diff --git a/block/io.c b/block/io.c -index 18d345a87a..bb0a254def 100644 ---- a/block/io.c -+++ b/block/io.c -@@ -136,6 +136,7 @@ static void bdrv_merge_limits(BlockLimits *dst, const BlockLimits *src) - dst->min_mem_alignment = MAX(dst->min_mem_alignment, - src->min_mem_alignment); - dst->max_iov = MIN_NON_ZERO(dst->max_iov, src->max_iov); -+ dst->max_hw_iov = MIN_NON_ZERO(dst->max_hw_iov, src->max_hw_iov); - } - - typedef struct BdrvRefreshLimitsState { -diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c -index 665baf900e..0306ccc7b1 100644 ---- a/hw/scsi/scsi-generic.c -+++ b/hw/scsi/scsi-generic.c -@@ -180,7 +180,7 @@ static int scsi_handle_inquiry_reply(SCSIGenericReq *r, SCSIDevice *s, int len) - page = r->req.cmd.buf[2]; - if (page == 0xb0) { - uint64_t max_transfer = blk_get_max_hw_transfer(s->conf.blk); -- uint32_t max_iov = blk_get_max_iov(s->conf.blk); -+ uint32_t max_iov = blk_get_max_hw_iov(s->conf.blk); - - assert(max_transfer); - max_transfer = MIN_NON_ZERO(max_transfer, max_iov * qemu_real_host_page_size) -diff --git a/include/block/block_int.h b/include/block/block_int.h -index ffe86068d4..f4c75e8ba9 100644 ---- a/include/block/block_int.h -+++ b/include/block/block_int.h -@@ -718,6 +718,13 @@ typedef struct BlockLimits { - */ - uint64_t max_hw_transfer; - -+ /* Maximal number of scatter/gather elements allowed by the hardware. -+ * Applies whenever transfers to the device bypass the kernel I/O -+ * scheduler, for example with SG_IO. If larger than max_iov -+ * or if zero, blk_get_max_hw_iov will fall back to max_iov. -+ */ -+ int max_hw_iov; -+ - /* memory alignment, in bytes so that no bounce buffer is needed */ - size_t min_mem_alignment; - -diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h -index 29d4fdbf63..82bae55161 100644 ---- a/include/sysemu/block-backend.h -+++ b/include/sysemu/block-backend.h -@@ -211,6 +211,7 @@ uint32_t blk_get_request_alignment(BlockBackend *blk); - uint32_t blk_get_max_transfer(BlockBackend *blk); - uint64_t blk_get_max_hw_transfer(BlockBackend *blk); - int blk_get_max_iov(BlockBackend *blk); -+int blk_get_max_hw_iov(BlockBackend *blk); - void blk_set_guest_block_size(BlockBackend *blk, int align); - void *blk_try_blockalign(BlockBackend *blk, size_t size); - void *blk_blockalign(BlockBackend *blk, size_t size); --- -2.33.1 - diff --git a/0001-nbd-server-Add-selinux-label-option.patch b/0001-nbd-server-Add-selinux-label-option.patch deleted file mode 100644 index 4430336..0000000 --- a/0001-nbd-server-Add-selinux-label-option.patch +++ /dev/null @@ -1,315 +0,0 @@ -From 641c964a09a5b8e52b37d6060895801a393f4073 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Mon, 15 Nov 2021 14:29:43 -0600 -Subject: [PATCH] nbd/server: Add --selinux-label option -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Under SELinux, Unix domain sockets have two labels. One is on the -disk and can be set with commands such as chcon(1). There is a -different label stored in memory (called the process label). This can -only be set by the process creating the socket. When using SELinux + -SVirt and wanting qemu to be able to connect to a qemu-nbd instance, -you must set both labels correctly first. - -For qemu-nbd the options to set the second label are awkward. You can -create the socket in a wrapper program and then exec into qemu-nbd. -Or you could try something with LD_PRELOAD. - -This commit adds the ability to set the label straightforwardly on the -command line, via the new --selinux-label flag. (The name of the flag -is the same as the equivalent nbdkit option.) - -A worked example showing how to use the new option can be found in -this bug: https://bugzilla.redhat.com/show_bug.cgi?id=1984938 - -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1984938 -Signed-off-by: Richard W.M. Jones -Reviewed-by: Daniel P. Berrangé - -[eblake: rebase to configure changes, reject --selinux-label if it is -not compiled in or not used on a Unix socket] -Note that we may relax some of these restrictions at a later date, -such as making it possible to label a TCP socket, although it may be -smarter to do so as a generic QMP action rather than more one-off -command lines in qemu-nbd. -Signed-off-by: Eric Blake -Message-Id: <20211115202944.615966-1-eblake@redhat.com> -Reviewed-by: Thomas Huth -[eblake: adjust meson output as suggested by thuth] -Signed-off-by: Eric Blake ---- - meson.build | 10 +++- - meson_options.txt | 3 ++ - qemu-nbd.c | 46 +++++++++++++++++++ - tests/docker/dockerfiles/centos8.docker | 1 + - .../dockerfiles/fedora-i386-cross.docker | 1 + - tests/docker/dockerfiles/fedora.docker | 1 + - tests/docker/dockerfiles/opensuse-leap.docker | 1 + - tests/docker/dockerfiles/ubuntu1804.docker | 1 + - tests/docker/dockerfiles/ubuntu2004.docker | 1 + - 9 files changed, 64 insertions(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index b3e7ec0e92..7b3fcea684 100644 ---- a/meson.build -+++ b/meson.build -@@ -1064,6 +1064,11 @@ keyutils = dependency('libkeyutils', required: false, - - has_gettid = cc.has_function('gettid') - -+# libselinux -+selinux = dependency('libselinux', -+ required: get_option('selinux'), -+ method: 'pkg-config', kwargs: static_kwargs) -+ - # Malloc tests - - malloc = [] -@@ -1291,6 +1296,7 @@ config_host_data.set('CONFIG_FUSE', fuse.found()) - config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found()) - config_host_data.set('CONFIG_X11', x11.found()) - config_host_data.set('CONFIG_CFI', get_option('cfi')) -+config_host_data.set('CONFIG_SELINUX', selinux.found()) - config_host_data.set('QEMU_VERSION', '"@0@"'.format(meson.project_version())) - config_host_data.set('QEMU_VERSION_MAJOR', meson.project_version().split('.')[0]) - config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1]) -@@ -2741,7 +2747,8 @@ if have_tools - qemu_io = executable('qemu-io', files('qemu-io.c'), - dependencies: [block, qemuutil], install: true) - qemu_nbd = executable('qemu-nbd', files('qemu-nbd.c'), -- dependencies: [blockdev, qemuutil, gnutls], install: true) -+ dependencies: [blockdev, qemuutil, gnutls, selinux], -+ install: true) - - subdir('storage-daemon') - subdir('contrib/rdmacm-mux') -@@ -3106,6 +3113,7 @@ summary_info += {'libpmem support': libpmem.found()} - summary_info += {'libdaxctl support': libdaxctl.found()} - summary_info += {'libudev': libudev.found()} - summary_info += {'FUSE lseek': fuse_lseek.found()} -+summary_info += {'selinux': selinux} - summary(summary_info, bool_yn: true, section: 'Dependencies') - - if not supported_cpus.contains(cpu) -diff --git a/meson_options.txt b/meson_options.txt -index a9a9b8f4c6..a5938500a3 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -155,3 +155,6 @@ option('slirp', type: 'combo', value: 'auto', - option('fdt', type: 'combo', value: 'auto', - choices: ['disabled', 'enabled', 'auto', 'system', 'internal'], - description: 'Whether and how to find the libfdt library') -+ -+option('selinux', type: 'feature', value: 'auto', -+ description: 'SELinux support in qemu-nbd') -diff --git a/qemu-nbd.c b/qemu-nbd.c -index 26ffbf15af..94dc2a9cca 100644 ---- a/qemu-nbd.c -+++ b/qemu-nbd.c -@@ -47,6 +47,10 @@ - #include "trace/control.h" - #include "qemu-version.h" - -+#ifdef CONFIG_SELINUX -+#include -+#endif -+ - #ifdef __linux__ - #define HAVE_NBD_DEVICE 1 - #else -@@ -64,6 +68,7 @@ - #define QEMU_NBD_OPT_FORK 263 - #define QEMU_NBD_OPT_TLSAUTHZ 264 - #define QEMU_NBD_OPT_PID_FILE 265 -+#define QEMU_NBD_OPT_SELINUX_LABEL 266 - - #define MBR_SIZE 512 - -@@ -116,6 +121,9 @@ static void usage(const char *name) - " --fork fork off the server process and exit the parent\n" - " once the server is running\n" - " --pid-file=PATH store the server's process ID in the given file\n" -+#ifdef CONFIG_SELINUX -+" --selinux-label=LABEL set SELinux process label on listening socket\n" -+#endif - #if HAVE_NBD_DEVICE - "\n" - "Kernel NBD client support:\n" -@@ -452,6 +460,7 @@ static const char *socket_activation_validate_opts(const char *device, - const char *sockpath, - const char *address, - const char *port, -+ const char *selinux, - bool list) - { - if (device != NULL) { -@@ -470,6 +479,10 @@ static const char *socket_activation_validate_opts(const char *device, - return "TCP port number can't be set when using socket activation"; - } - -+ if (selinux != NULL) { -+ return "SELinux label can't be set when using socket activation"; -+ } -+ - if (list) { - return "List mode is incompatible with socket activation"; - } -@@ -532,6 +545,8 @@ int main(int argc, char **argv) - { "trace", required_argument, NULL, 'T' }, - { "fork", no_argument, NULL, QEMU_NBD_OPT_FORK }, - { "pid-file", required_argument, NULL, QEMU_NBD_OPT_PID_FILE }, -+ { "selinux-label", required_argument, NULL, -+ QEMU_NBD_OPT_SELINUX_LABEL }, - { NULL, 0, NULL, 0 } - }; - int ch; -@@ -558,6 +573,7 @@ int main(int argc, char **argv) - int old_stderr = -1; - unsigned socket_activation; - const char *pid_file_name = NULL; -+ const char *selinux_label = NULL; - BlockExportOptions *export_opts; - - #ifdef CONFIG_POSIX -@@ -747,6 +763,9 @@ int main(int argc, char **argv) - case QEMU_NBD_OPT_PID_FILE: - pid_file_name = optarg; - break; -+ case QEMU_NBD_OPT_SELINUX_LABEL: -+ selinux_label = optarg; -+ break; - } - } - -@@ -786,6 +805,7 @@ int main(int argc, char **argv) - /* Using socket activation - check user didn't use -p etc. */ - const char *err_msg = socket_activation_validate_opts(device, sockpath, - bindto, port, -+ selinux_label, - list); - if (err_msg != NULL) { - error_report("%s", err_msg); -@@ -825,6 +845,18 @@ int main(int argc, char **argv) - } - } - -+ if (selinux_label) { -+#ifdef CONFIG_SELINUX -+ if (sockpath == NULL && device == NULL) { -+ error_report("--selinux-label is not permitted without --socket"); -+ exit(EXIT_FAILURE); -+ } -+#else -+ error_report("SELinux support not enabled in this binary"); -+ exit(EXIT_FAILURE); -+#endif -+ } -+ - if (list) { - saddr = nbd_build_socket_address(sockpath, bindto, port); - return qemu_nbd_client_list(saddr, tlscreds, bindto); -@@ -938,6 +970,13 @@ int main(int argc, char **argv) - } else { - backlog = MIN(shared, SOMAXCONN); - } -+#ifdef CONFIG_SELINUX -+ if (selinux_label && setsockcreatecon_raw(selinux_label) == -1) { -+ error_report("Cannot set SELinux socket create context to %s: %s", -+ selinux_label, strerror(errno)); -+ exit(EXIT_FAILURE); -+ } -+#endif - saddr = nbd_build_socket_address(sockpath, bindto, port); - if (qio_net_listener_open_sync(server, saddr, backlog, - &local_err) < 0) { -@@ -945,6 +984,13 @@ int main(int argc, char **argv) - error_report_err(local_err); - exit(EXIT_FAILURE); - } -+#ifdef CONFIG_SELINUX -+ if (selinux_label && setsockcreatecon_raw(NULL) == -1) { -+ error_report("Cannot clear SELinux socket create context: %s", -+ strerror(errno)); -+ exit(EXIT_FAILURE); -+ } -+#endif - } else { - size_t i; - /* See comment in check_socket_activation above. */ -diff --git a/tests/docker/dockerfiles/centos8.docker b/tests/docker/dockerfiles/centos8.docker -index 46398c61ee..7f135f8e8c 100644 ---- a/tests/docker/dockerfiles/centos8.docker -+++ b/tests/docker/dockerfiles/centos8.docker -@@ -51,6 +51,7 @@ ENV PACKAGES \ - libpng-devel \ - librbd-devel \ - libseccomp-devel \ -+ libselinux-devel \ - libslirp-devel \ - libssh-devel \ - libtasn1-devel \ -diff --git a/tests/docker/dockerfiles/fedora-i386-cross.docker b/tests/docker/dockerfiles/fedora-i386-cross.docker -index dbb8195eb1..91a7c51614 100644 ---- a/tests/docker/dockerfiles/fedora-i386-cross.docker -+++ b/tests/docker/dockerfiles/fedora-i386-cross.docker -@@ -7,6 +7,7 @@ ENV PACKAGES \ - gcc \ - git \ - libffi-devel.i686 \ -+ libselinux-devel.i686 \ - libtasn1-devel.i686 \ - libzstd-devel.i686 \ - make \ -diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker -index eec1add7f6..c6fd7e1113 100644 ---- a/tests/docker/dockerfiles/fedora.docker -+++ b/tests/docker/dockerfiles/fedora.docker -@@ -53,6 +53,7 @@ ENV PACKAGES \ - libpng-devel \ - librbd-devel \ - libseccomp-devel \ -+ libselinux-devel \ - libslirp-devel \ - libssh-devel \ - libtasn1-devel \ -diff --git a/tests/docker/dockerfiles/opensuse-leap.docker b/tests/docker/dockerfiles/opensuse-leap.docker -index 5a8bee0289..3bbdb67f4f 100644 ---- a/tests/docker/dockerfiles/opensuse-leap.docker -+++ b/tests/docker/dockerfiles/opensuse-leap.docker -@@ -55,6 +55,7 @@ ENV PACKAGES \ - libpulse-devel \ - librbd-devel \ - libseccomp-devel \ -+ libselinux-devel \ - libspice-server-devel \ - libssh-devel \ - libtasn1-devel \ -diff --git a/tests/docker/dockerfiles/ubuntu1804.docker b/tests/docker/dockerfiles/ubuntu1804.docker -index 0880bf3e29..450fd06d0d 100644 ---- a/tests/docker/dockerfiles/ubuntu1804.docker -+++ b/tests/docker/dockerfiles/ubuntu1804.docker -@@ -60,6 +60,7 @@ ENV PACKAGES \ - libsdl2-dev \ - libsdl2-image-dev \ - libseccomp-dev \ -+ libselinux-dev \ - libsnappy-dev \ - libspice-protocol-dev \ - libspice-server-dev \ -diff --git a/tests/docker/dockerfiles/ubuntu2004.docker b/tests/docker/dockerfiles/ubuntu2004.docker -index 39de63d012..15a026be09 100644 ---- a/tests/docker/dockerfiles/ubuntu2004.docker -+++ b/tests/docker/dockerfiles/ubuntu2004.docker -@@ -60,6 +60,7 @@ ENV PACKAGES \ - libsdl2-dev \ - libsdl2-image-dev \ - libseccomp-dev \ -+ libselinux-dev \ - libslirp-dev \ - libsnappy-dev \ - libspice-protocol-dev \ --- -2.32.0 - diff --git a/0001-qemu-sockets-fix-unix-socket-path-copy-again.patch b/0001-qemu-sockets-fix-unix-socket-path-copy-again.patch deleted file mode 100644 index d93d7fe..0000000 --- a/0001-qemu-sockets-fix-unix-socket-path-copy-again.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 118d527f2e4baec5fe8060b22a6212468b8e4d3f Mon Sep 17 00:00:00 2001 -From: Michael Tokarev -Date: Wed, 1 Sep 2021 16:16:24 +0300 -Subject: [PATCH] qemu-sockets: fix unix socket path copy (again) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Commit 4cfd970ec188558daa6214f26203fe553fb1e01f added an -assert which ensures the path within an address of a unix -socket returned from the kernel is at least one byte and -does not exceed sun_path buffer. Both of this constraints -are wrong: - -A unix socket can be unnamed, in this case the path is -completely empty (not even \0) - -And some implementations (notable linux) can add extra -trailing byte (\0) _after_ the sun_path buffer if we -passed buffer larger than it (and we do). - -So remove the assertion (since it causes real-life breakage) -but at the same time fix the usage of sun_path. Namely, -we should not access sun_path[0] if kernel did not return -it at all (this is the case for unnamed sockets), -and use the returned salen when copyig actual path as an -upper constraint for the amount of bytes to copy - this -will ensure we wont exceed the information provided by -the kernel, regardless whenever there is a trailing \0 -or not. This also helps with unnamed sockets. - -Note the case of abstract socket, the sun_path is actually -a blob and can contain \0 characters, - it should not be -passed to g_strndup and the like, it should be accessed by -memcpy-like functions. - -Fixes: 4cfd970ec188558daa6214f26203fe553fb1e01f -Fixes: http://bugs.debian.org/993145 -Signed-off-by: Michael Tokarev -Reviewed-by: Daniel P. Berrangé -Reviewed-by: Marc-André Lureau -CC: qemu-stable@nongnu.org ---- - util/qemu-sockets.c | 13 +++++-------- - 1 file changed, 5 insertions(+), 8 deletions(-) - -diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c -index f2f3676d1f..c5043999e9 100644 ---- a/util/qemu-sockets.c -+++ b/util/qemu-sockets.c -@@ -1345,25 +1345,22 @@ socket_sockaddr_to_address_unix(struct sockaddr_storage *sa, - SocketAddress *addr; - struct sockaddr_un *su = (struct sockaddr_un *)sa; - -- assert(salen >= sizeof(su->sun_family) + 1 && -- salen <= sizeof(struct sockaddr_un)); -- - addr = g_new0(SocketAddress, 1); - addr->type = SOCKET_ADDRESS_TYPE_UNIX; -+ salen -= offsetof(struct sockaddr_un, sun_path); - #ifdef CONFIG_LINUX -- if (!su->sun_path[0]) { -+ if (salen > 0 && !su->sun_path[0]) { - /* Linux abstract socket */ -- addr->u.q_unix.path = g_strndup(su->sun_path + 1, -- salen - sizeof(su->sun_family) - 1); -+ addr->u.q_unix.path = g_strndup(su->sun_path + 1, salen - 1); - addr->u.q_unix.has_abstract = true; - addr->u.q_unix.abstract = true; - addr->u.q_unix.has_tight = true; -- addr->u.q_unix.tight = salen < sizeof(*su); -+ addr->u.q_unix.tight = salen < sizeof(su->sun_path); - return addr; - } - #endif - -- addr->u.q_unix.path = g_strndup(su->sun_path, sizeof(su->sun_path)); -+ addr->u.q_unix.path = g_strndup(su->sun_path, salen); - return addr; - } - #endif /* WIN32 */ diff --git a/0001-qxl-fix-pre-save-logic.patch b/0001-qxl-fix-pre-save-logic.patch deleted file mode 100644 index ab92d63..0000000 --- a/0001-qxl-fix-pre-save-logic.patch +++ /dev/null @@ -1,37 +0,0 @@ -From eb94846280df3f1e2a91b6179fc05f9890b7e384 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Fri, 10 Sep 2021 11:42:03 +0200 -Subject: [PATCH 1/1] qxl: fix pre-save logic -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Oops. Logic is backwards. - -Fixes: 39b8a183e2f3 ("qxl: remove assert in qxl_pre_save.") -Resolves: https://gitlab.com/qemu-project/qemu/-/issues/610 -Resolves: https://bugzilla.redhat.com//show_bug.cgi?id=2002907 -Signed-off-by: Gerd Hoffmann -Reviewed-by: Daniel P. Berrangé -Reviewed-by: Marc-André Lureau -Message-Id: <20210910094203.3582378-1-kraxel@redhat.com> ---- - hw/display/qxl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/display/qxl.c b/hw/display/qxl.c -index 43482d4364..29c80b4289 100644 ---- a/hw/display/qxl.c -+++ b/hw/display/qxl.c -@@ -2252,7 +2252,7 @@ static int qxl_pre_save(void *opaque) - } else { - d->last_release_offset = (uint8_t *)d->last_release - ram_start; - } -- if (d->last_release_offset < d->vga.vram_size) { -+ if (d->last_release_offset >= d->vga.vram_size) { - return 1; - } - --- -2.33.1 - diff --git a/0001-target-i386-add-missing-bits-to-CR4_RESERVED_MASK.patch b/0001-target-i386-add-missing-bits-to-CR4_RESERVED_MASK.patch deleted file mode 100644 index 225d3b4..0000000 --- a/0001-target-i386-add-missing-bits-to-CR4_RESERVED_MASK.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 45adec566b073b39f4edfc1307843d12fe8105c8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= -Date: Tue, 31 Aug 2021 18:50:33 +0100 -Subject: [PATCH 1/2] target/i386: add missing bits to CR4_RESERVED_MASK -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Booting Fedora kernels with -cpu max hangs very early in boot. Disabling -the la57 CPUID bit fixes the problem. git bisect traced the regression to - - commit 213ff024a2f92020290296cb9dc29c2af3d4a221 (HEAD, refs/bisect/bad) - Author: Lara Lazier - Date: Wed Jul 21 17:26:50 2021 +0200 - - target/i386: Added consistency checks for CR4 - - All MBZ bits in CR4 must be zero. (APM2 15.5) - Added reserved bitmask and added checks in both - helper_vmrun and helper_write_crN. - - Signed-off-by: Lara Lazier - Message-Id: <20210721152651.14683-2-laramglazier@gmail.com> - Signed-off-by: Paolo Bonzini - -In this commit CR4_RESERVED_MASK is missing CR4_LA57_MASK and -two others. Adding this lets Fedora kernels boot once again. - -Signed-off-by: Daniel P. Berrangé ---- - target/i386/cpu.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/target/i386/cpu.h b/target/i386/cpu.h -index 6c50d3ab4f..ce85f1a29d 100644 ---- a/target/i386/cpu.h -+++ b/target/i386/cpu.h -@@ -257,6 +257,7 @@ typedef enum X86Seg { - | CR4_DE_MASK | CR4_PSE_MASK | CR4_PAE_MASK \ - | CR4_MCE_MASK | CR4_PGE_MASK | CR4_PCE_MASK \ - | CR4_OSFXSR_MASK | CR4_OSXMMEXCPT_MASK |CR4_UMIP_MASK \ -+ | CR4_LA57_MASK | CR4_VMXE_MASK | CR4_SMXE_MASK \ - | CR4_FSGSBASE_MASK | CR4_PCIDE_MASK | CR4_OSXSAVE_MASK \ - | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_MASK)) - --- -2.32.0 - diff --git a/0001-tests-tcg-Fix-PVH-test-with-binutils-2.36.patch b/0001-tests-tcg-Fix-PVH-test-with-binutils-2.36.patch deleted file mode 100644 index cf01f1b..0000000 --- a/0001-tests-tcg-Fix-PVH-test-with-binutils-2.36.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 5ab2a54c262c61f64c22dbb49ade3e2db8a740bb Mon Sep 17 00:00:00 2001 -Message-Id: <5ab2a54c262c61f64c22dbb49ade3e2db8a740bb.1633708346.git.crobinso@redhat.com> -From: Cole Robinson -Date: Fri, 8 Oct 2021 11:47:45 -0400 -Subject: [PATCH] tests: tcg: Fix PVH test with binutils 2.36+ - -binutils started adding a .note.gnu.property ELF section which -makes the PVH test fail: - - TEST hello on x86_64 -qemu-system-x86_64: Error loading uncompressed kernel without PVH ELF Note - -Discard .note.gnu* while keeping the PVH .note bits intact. - -This also strips the build-id note, so drop the related comment. - -Signed-off-by: Cole Robinson ---- - tests/tcg/x86_64/system/kernel.ld | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/tests/tcg/x86_64/system/kernel.ld b/tests/tcg/x86_64/system/kernel.ld -index 49c12b04ae..ca5d6bd850 100644 ---- a/tests/tcg/x86_64/system/kernel.ld -+++ b/tests/tcg/x86_64/system/kernel.ld -@@ -16,7 +16,10 @@ SECTIONS { - *(.rodata) - } :text - -- /* Keep build ID and PVH notes in same section */ -+ /DISCARD/ : { -+ *(.note.gnu*) -+ } -+ - .notes : { - *(.note.*) - } :note --- -2.32.0 - diff --git a/qemu.spec b/qemu.spec index b2ae7c8..15fd675 100644 --- a/qemu.spec +++ b/qemu.spec @@ -6,7 +6,7 @@ %global libfdt_version 1.6.0 %global libseccomp_version 2.4.0 %global libusbx_version 1.0.23 -%global meson_version 0.55.3 +%global meson_version 0.58.2 %global usbredir_version 0.7.1 %global ipxe_version 20200823-5.git4bd064de @@ -277,7 +277,7 @@ Obsoletes: %{name}-system-unicore32 <= %{epoch}:%{version}-%{release} \ Obsoletes: %{name}-system-unicore32-core <= %{epoch}:%{version}-%{release} # Release candidate version tracking -%dnl %global rcver rc4 +%global rcver rc3 %if 0%{?rcver:1} %global rcrel .%{rcver} %global rcstr -%{rcver} @@ -286,8 +286,8 @@ Obsoletes: %{name}-system-unicore32-core <= %{epoch}:%{version}-%{release} Summary: QEMU is a FAST! processor emulator Name: qemu -Version: 6.1.0 -Release: 13%{?rcrel}%{?dist} +Version: 6.2.0 +Release: 0.1%{?rcrel}%{?dist} Epoch: 2 License: GPLv2 and BSD and MIT and CC-BY URL: http://www.qemu.org/ @@ -305,31 +305,9 @@ Source30: kvm-s390x.conf Source31: kvm-x86.conf Source36: README.tests -# Fix -cpu max -# https://bugzilla.redhat.com/show_bug.cgi?id=1999700 -Patch1: 0001-target-i386-add-missing-bits-to-CR4_RESERVED_MASK.patch - # Fix assertion on armv7hl # https://bugzilla.redhat.com/show_bug.cgi?id=1999878 -Patch2: 0001-tcg-arm-Reduce-vector-alignment-requirement-for-NEON.patch - -# Fix qemu crash with vnc + libvirt virDomainOpenConsole -Patch3: 0001-qemu-sockets-fix-unix-socket-path-copy-again.patch -# Fix tcg PVH test with binutils 2.36+ -Patch4: 0001-tests-tcg-Fix-PVH-test-with-binutils-2.36.patch -# Fix snapshot creation with qxl graphics -# https://gitlab.com/qemu-project/qemu/-/issues/610 -# https://gitlab.com/qemu-project/qemu/-/commit/eb94846 -Patch5: 0001-qxl-fix-pre-save-logic.patch - -# Add support for qemu-nbd --selinux-relabel option -# https://bugzilla.redhat.com/show_bug.cgi?id=1984938 -# Upstream in 6.2. -Patch6: 0001-nbd-server-Add-selinux-label-option.patch - -# Fix iov length limits for scsi-generic -# https://bugzilla.redhat.com/show_bug.cgi?id=2026747 -Patch7: 0001-block-introduce-max_hw_iov-for-use-in-scsi-generic.patch +Patch1: 0001-tcg-arm-Reduce-vector-alignment-requirement-for-NEON.patch BuildRequires: meson >= %{meson_version} BuildRequires: zlib-devel @@ -1253,7 +1231,6 @@ mkdir -p %{static_builddir} --disable-hax \\\ --disable-hvf \\\ --disable-iconv \\\ - --disable-jemalloc \\\ --disable-kvm \\\ --disable-libdaxctl \\\ --disable-libiscsi \\\ @@ -1305,7 +1282,6 @@ mkdir -p %{static_builddir} --disable-strip \\\ --disable-system \\\ --disable-tcg \\\ - --disable-tcmalloc \\\ --disable-tools \\\ --disable-tpm \\\ --disable-u2f \\\ @@ -1362,7 +1338,7 @@ run_configure() { --with-suffix="%{name}" \ --firmwarepath="%firmwaredirs" \ --meson="%{__meson}" \ - --enable-trace-backend=dtrace \ + --enable-trace-backends=dtrace \ --with-coroutine=ucontext \ --with-git=git \ --tls-priority=@QEMU,SYSTEM \ @@ -1393,13 +1369,13 @@ run_configure \ %endif --enable-bpf \ --enable-cap-ng \ - --enable-capstone \ + --enable-capstone=system \ --enable-coroutine-pool \ --enable-curl \ --enable-debug-info \ --enable-docs \ %if %{have_fdt} - --enable-fdt \ + --enable-fdt=system \ %endif --enable-gnutls \ --enable-guest-agent \ @@ -1463,7 +1439,7 @@ run_configure \ --enable-xkbcommon \ \ \ - --audio-drv-list=pa,sdl,alsa,try-jack,oss \ + --audio-drv-list=pa,sdl,alsa,jack,oss \ --target-list-exclude=moxie-softmmu \ --with-default-devices \ --enable-auth-pam \ @@ -1554,7 +1530,7 @@ run_configure \ --enable-attr \ --enable-linux-user \ --enable-tcg \ - --disable-blobs \ + --disable-install-blobs \ --static %make_build @@ -1639,12 +1615,12 @@ install -m 0644 -t %{buildroot}%{_datadir}/%{name}/tracetool/format scripts/trac # Create new directories and put them all under tests-src mkdir -p %{buildroot}%{testsdir}/python mkdir -p %{buildroot}%{testsdir}/tests -mkdir -p %{buildroot}%{testsdir}/tests/acceptance +mkdir -p %{buildroot}%{testsdir}/tests/avocado mkdir -p %{buildroot}%{testsdir}/tests/qemu-iotests mkdir -p %{buildroot}%{testsdir}/scripts/qmp # Install avocado_qemu tests -cp -R %{qemu_kvm_build}/tests/acceptance/* %{buildroot}%{testsdir}/tests/acceptance/ +cp -R %{qemu_kvm_build}/tests/avocado/* %{buildroot}%{testsdir}/tests/avocado/ # Install qemu.py and qmp/ scripts required to run avocado_qemu tests cp -R %{qemu_kvm_build}/python/qemu %{buildroot}%{testsdir}/python @@ -2250,6 +2226,7 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %{_datadir}/%{name}/kvmvapic.bin %{_datadir}/%{name}/linuxboot.bin %{_datadir}/%{name}/multiboot.bin +%{_datadir}/%{name}/multiboot_dma.bin %{_datadir}/%{name}/pvh.bin %{_datadir}/%{name}/qboot.rom %if %{need_qemu_kvm} @@ -2270,6 +2247,9 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %changelog +* Fri Dec 03 2021 Eduardo Lima (Etrunko) - 6.2.0-0.1-rc3 +- Rebase to qemu 6.2.0-rc3 + * Thu Nov 25 2021 Daniel P. Berrangé - 6.1.0-13 - Fix iovec limits with scsi-generic diff --git a/sources b/sources index 00e7175..a5c0d6f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (qemu-6.1.0.tar.xz) = 3378ae21c75b77ee6a759827f1fcf7b2a50a0fef07e3b0e89117108022a8d8655fa977e4d65596f4f24f7c735c6594d44b0c6f69732ea4465e88a7406b1d5d3c +SHA512 (qemu-6.2.0-rc3.tar.xz) = e3da3da4b24d48c1458b498838180df18111a5fde4f1a2b85097219ea75acd4efd66ffeb1170fc8f0b0a759e5b91acc50b0fa8fda04eb037f10f4d1204db6f67