Accepting request 873002 from home:bfrogers:branches:Virtualization

- Fix uninitialized variable in ipxe driver code (boo#1181922)
  ath5k-Add-missing-AR5K_EEPROM_READ-in-at.patch
- Add a few improvements to the git-based package workflow scripts
- Include additional upstream patches designated as stable material
  and reviewed for applicability to include here
  blockjob-Fix-crash-with-IOthread-when-bl.patch
  monitor-Fix-assertion-failure-on-shutdow.patch
  qemu-nbd-Use-SOMAXCONN-for-socket-listen.patch
  qemu-storage-daemon-Enable-object-add.patch

OBS-URL: https://build.opensuse.org/request/show/873002
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=617
This commit is contained in:
Bruce Rogers 2021-02-17 02:19:36 +00:00 committed by Git OBS Bridge
parent ddbbacb439
commit 112fb09f1a
11 changed files with 445 additions and 75 deletions

View File

@ -0,0 +1,31 @@
From: Bruce Rogers <brogers@suse.com>
Date: Tue, 16 Feb 2021 11:29:41 -0700
Subject: [ath5k] Add missing AR5K_EEPROM_READ in ath5k_eeprom_read_turbo_modes
Git-commit: 19d0fab40f07eeea7fe6b9e0d4e8d4b0c2de215f
References: boo#1181922
The GCC11 compiler pointed out something that apparently no previous
compiler noticed: in ath5k_eeprom_pread_turbo_modes, local variable
val is used uninitialized. From what I can see, the code is just
missing an initial AR5K_EEPROM_READ. Add it right before the switch
statement.
Signed-off-by: Bruce Rogers <brogers@suse.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
---
src/drivers/net/ath/ath5k/ath5k_eeprom.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/roms/ipxe/src/drivers/net/ath/ath5k/ath5k_eeprom.c b/roms/ipxe/src/drivers/net/ath/ath5k/ath5k_eeprom.c
index 983d206b7e36cc4981ecbb760a41..12519bc599fb7d4757da43a6bcc2 100644
--- a/roms/ipxe/src/drivers/net/ath/ath5k/ath5k_eeprom.c
+++ b/roms/ipxe/src/drivers/net/ath/ath5k/ath5k_eeprom.c
@@ -416,6 +416,7 @@ ath5k_eeprom_read_turbo_modes(struct ath5k_hw *ah,
if (ee->ee_version < AR5K_EEPROM_VERSION_5_0)
return 0;
+ AR5K_EEPROM_READ(o++, val);
switch (mode){
case AR5K_EEPROM_MODE_11A:
ee->ee_switch_settling_turbo[mode] = (val >> 6) & 0x7f;

View File

@ -0,0 +1,113 @@
From: Michael Qiu <qiudayu@huayun.com>
Date: Wed, 3 Feb 2021 10:40:59 +0800
Subject: blockjob: Fix crash with IOthread when block commit after snapshot
Git-commit: 076d467aacdf6dc5d01e2e61740b1795f2aec2f6
Currently, if guest has workloads, IO thread will acquire aio_context
lock before do io_submit, it leads to segmentfault when do block commit
after snapshot. Just like below:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f7c7d91f700 (LWP 99907)]
0x00005576d0f65aab in bdrv_mirror_top_pwritev at ../block/mirror.c:1437
1437 ../block/mirror.c: No such file or directory.
(gdb) p s->job
$17 = (MirrorBlockJob *) 0x0
(gdb) p s->stop
$18 = false
Call trace of IO thread:
0 0x00005576d0f65aab in bdrv_mirror_top_pwritev at ../block/mirror.c:1437
1 0x00005576d0f7f3ab in bdrv_driver_pwritev at ../block/io.c:1174
2 0x00005576d0f8139d in bdrv_aligned_pwritev at ../block/io.c:1988
3 0x00005576d0f81b65 in bdrv_co_pwritev_part at ../block/io.c:2156
4 0x00005576d0f8e6b7 in blk_do_pwritev_part at ../block/block-backend.c:1260
5 0x00005576d0f8e84d in blk_aio_write_entry at ../block/block-backend.c:1476
...
Switch to qemu main thread:
0 0x00007f903be704ed in __lll_lock_wait at
/lib/../lib64/libpthread.so.0
1 0x00007f903be6bde6 in _L_lock_941 at /lib/../lib64/libpthread.so.0
2 0x00007f903be6bcdf in pthread_mutex_lock at
/lib/../lib64/libpthread.so.0
3 0x0000564b21456889 in qemu_mutex_lock_impl at
../util/qemu-thread-posix.c:79
4 0x0000564b213af8a5 in block_job_add_bdrv at ../blockjob.c:224
5 0x0000564b213b00ad in block_job_create at ../blockjob.c:440
6 0x0000564b21357c0a in mirror_start_job at ../block/mirror.c:1622
7 0x0000564b2135a9af in commit_active_start at ../block/mirror.c:1867
8 0x0000564b2133d132 in qmp_block_commit at ../blockdev.c:2768
9 0x0000564b2141fef3 in qmp_marshal_block_commit at
qapi/qapi-commands-block-core.c:346
10 0x0000564b214503c9 in do_qmp_dispatch_bh at
../qapi/qmp-dispatch.c:110
11 0x0000564b21451996 in aio_bh_poll at ../util/async.c:164
12 0x0000564b2146018e in aio_dispatch at ../util/aio-posix.c:381
13 0x0000564b2145187e in aio_ctx_dispatch at ../util/async.c:306
14 0x00007f9040239049 in g_main_context_dispatch at
/lib/../lib64/libglib-2.0.so.0
15 0x0000564b21447368 in main_loop_wait at ../util/main-loop.c:232
16 0x0000564b21447368 in main_loop_wait at ../util/main-loop.c:255
17 0x0000564b21447368 in main_loop_wait at ../util/main-loop.c:531
18 0x0000564b212304e1 in qemu_main_loop at ../softmmu/runstate.c:721
19 0x0000564b20f7975e in main at ../softmmu/main.c:50
In IO thread when do bdrv_mirror_top_pwritev, the job is NULL, and stop field
is false, this means the MirrorBDSOpaque "s" object has not been initialized
yet, and this object is initialized by block_job_create(), but the initialize
process is stuck in acquiring the lock.
In this situation, IO thread come to bdrv_mirror_top_pwritev(),which means that
mirror-top node is already inserted into block graph, but its bs->opaque->job
is not initialized.
The root cause is that qemu main thread do release/acquire when hold the lock,
at the same time, IO thread get the lock after release stage, and the crash
occured.
Actually, in this situation, job->job.aio_context will not equal to
qemu_get_aio_context(), and will be the same as bs->aio_context,
thus, no need to release the lock, becasue bdrv_root_attach_child()
will not change the context.
This patch fix this issue.
Fixes: 132ada80 "block: Adjust AioContexts when attaching nodes"
Signed-off-by: Michael Qiu <qiudayu@huayun.com>
Message-Id: <20210203024059.52683-1-08005325@163.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
blockjob.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/blockjob.c b/blockjob.c
index 98ac8af98299ac26c50ce5e4c5bb..62f1a537399f07a88ebf520eb560 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -212,15 +212,19 @@ int block_job_add_bdrv(BlockJob *job, const char *name, BlockDriverState *bs,
uint64_t perm, uint64_t shared_perm, Error **errp)
{
BdrvChild *c;
+ bool need_context_ops;
bdrv_ref(bs);
- if (job->job.aio_context != qemu_get_aio_context()) {
+
+ need_context_ops = bdrv_get_aio_context(bs) != job->job.aio_context;
+
+ if (need_context_ops && job->job.aio_context != qemu_get_aio_context()) {
aio_context_release(job->job.aio_context);
}
c = bdrv_root_attach_child(bs, name, &child_job, 0,
job->job.aio_context, perm, shared_perm, job,
errp);
- if (job->job.aio_context != qemu_get_aio_context()) {
+ if (need_context_ops && job->job.aio_context != qemu_get_aio_context()) {
aio_context_acquire(job->job.aio_context);
}
if (c == NULL) {

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a745a8269f4f06d76fa4e4be2b77fd74108cd04261674d3fb15d9ab4b177f3f6
size 56068
oid sha256:0e5ec03af31b06a8ef8c104a478eba0d2ae79c9eb52a52b2865a254e2ab4be82
size 60492

View File

@ -76,11 +76,6 @@ LOCAL_REPO_MAP=(
# TEMPORARY! FOR NOW WE REQUIRE THESE LOCALLY TO DO WORK ON PACKAGE
REQUIRED_LOCAL_REPO_MAP=(
~/git/qemu-opensuse
~/git/qemu-seabios
~/git/qemu-ipxe
~/git/qemu-sgabios
~/git/qemu-keycodemapdb
~/git/qemu-qboot
)
PATCH_PATH_MAP=(

View File

@ -0,0 +1,86 @@
From: Kevin Wolf <kwolf@redhat.com>
Date: Fri, 12 Feb 2021 18:20:27 +0100
Subject: monitor: Fix assertion failure on shutdown
Git-commit: c81219a7dd36a815bd85beed9932fc973d4f5d51
Commit 357bda95 already tried to fix the order in monitor_cleanup() by
moving shutdown of the dispatcher coroutine further to the start.
However, it didn't go far enough:
iothread_stop() makes sure that all pending work (bottom halves) in the
AioContext of the monitor iothread is completed. iothread_destroy()
depends on this and fails an assertion if there is still a pending BH.
While the dispatcher coroutine is running, it will try to resume the
monitor after taking a request out of the queue, which involves a BH.
The dispatcher is run until it terminates in the AIO_WAIT_WHILE() loop.
However, adding new BHs between iothread_stop() and iothread_destroy()
is forbidden.
Fix this by stopping the dispatcher first before shutting down the other
parts of the monitor. This means we can now receive requests that aren't
handled any more when QEMU is shutting down, but this is unlikely to be
a problem for QMP clients.
Fixes: 357bda9590784ff75803d52de43150d4107ed98e
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20210212172028.288825-2-kwolf@redhat.com>
Tested-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
monitor/monitor.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/monitor/monitor.c b/monitor/monitor.c
index 84222cd130043fd618bd40343829..27573348f3d7ac5c03b56637235d 100644
--- a/monitor/monitor.c
+++ b/monitor/monitor.c
@@ -622,16 +622,6 @@ void monitor_data_destroy(Monitor *mon)
void monitor_cleanup(void)
{
- /*
- * We need to explicitly stop the I/O thread (but not destroy it),
- * clean up the monitor resources, then destroy the I/O thread since
- * we need to unregister from chardev below in
- * monitor_data_destroy(), and chardev is not thread-safe yet
- */
- if (mon_iothread) {
- iothread_stop(mon_iothread);
- }
-
/*
* The dispatcher needs to stop before destroying the monitor and
* the I/O thread.
@@ -641,6 +631,11 @@ void monitor_cleanup(void)
* eventually terminates. qemu_aio_context is automatically
* polled by calling AIO_WAIT_WHILE on it, but we must poll
* iohandler_ctx manually.
+ *
+ * Letting the iothread continue while shutting down the dispatcher
+ * means that new requests may still be coming in. This is okay,
+ * we'll just leave them in the queue without sending a response
+ * and monitor_data_destroy() will free them.
*/
qmp_dispatcher_co_shutdown = true;
if (!qatomic_xchg(&qmp_dispatcher_co_busy, true)) {
@@ -651,6 +646,16 @@ void monitor_cleanup(void)
(aio_poll(iohandler_get_aio_context(), false),
qatomic_mb_read(&qmp_dispatcher_co_busy)));
+ /*
+ * We need to explicitly stop the I/O thread (but not destroy it),
+ * clean up the monitor resources, then destroy the I/O thread since
+ * we need to unregister from chardev below in
+ * monitor_data_destroy(), and chardev is not thread-safe yet
+ */
+ if (mon_iothread) {
+ iothread_stop(mon_iothread);
+ }
+
/* Flush output buffers and destroy monitors */
qemu_mutex_lock(&monitor_lock);
monitor_destroyed = true;

View File

@ -0,0 +1,83 @@
From: Eric Blake <eblake@redhat.com>
Date: Tue, 9 Feb 2021 09:27:58 -0600
Subject: qemu-nbd: Use SOMAXCONN for socket listen() backlog
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 582d4210eb2f2ab5baac328fe4b479cd86da1647
Our default of a backlog of 1 connection is rather puny; it gets in
the way when we are explicitly allowing multiple clients (such as
qemu-nbd -e N [--shared], or nbd-server-start with its default
"max-connections":0 for unlimited), but is even a problem when we
stick to qemu-nbd's default of only 1 active client but use -t
[--persistent] where a second client can start using the server once
the first finishes. While the effects are less noticeable on TCP
sockets (since the client can poll() to learn when the server is ready
again), it is definitely observable on Unix sockets, where on Linux, a
client will fail with EAGAIN and no recourse but to sleep an arbitrary
amount of time before retrying if the server backlog is already full.
Since QMP nbd-server-start is always persistent, it now always
requests a backlog of SOMAXCONN; meanwhile, qemu-nbd will request
SOMAXCONN if persistent, otherwise its backlog should be based on the
expected number of clients.
See https://bugzilla.redhat.com/1925045 for a demonstration of where
our low backlog prevents libnbd from connecting as many parallel
clients as it wants.
Reported-by: Richard W.M. Jones <rjones@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
CC: qemu-stable@nongnu.org
Message-Id: <20210209152759.209074-2-eblake@redhat.com>
Tested-by: Richard W.M. Jones <rjones@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
blockdev-nbd.c | 7 ++++++-
qemu-nbd.c | 10 +++++++++-
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/blockdev-nbd.c b/blockdev-nbd.c
index d8443d235b7338949a4e6e10dec5..b264620b98d8c024b147872ce089 100644
--- a/blockdev-nbd.c
+++ b/blockdev-nbd.c
@@ -134,7 +134,12 @@ void nbd_server_start(SocketAddress *addr, const char *tls_creds,
qio_net_listener_set_name(nbd_server->listener,
"nbd-listener");
- if (qio_net_listener_open_sync(nbd_server->listener, addr, 1, errp) < 0) {
+ /*
+ * Because this server is persistent, a backlog of SOMAXCONN is
+ * better than trying to size it to max_connections.
+ */
+ if (qio_net_listener_open_sync(nbd_server->listener, addr, SOMAXCONN,
+ errp) < 0) {
goto error;
}
diff --git a/qemu-nbd.c b/qemu-nbd.c
index a7075c5419d710d773a5c5ed749f..39b517c948b4c45544e01fc3f070 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -969,8 +969,16 @@ int main(int argc, char **argv)
server = qio_net_listener_new();
if (socket_activation == 0) {
+ int backlog;
+
+ if (persistent) {
+ backlog = SOMAXCONN;
+ } else {
+ backlog = MIN(shared, SOMAXCONN);
+ }
saddr = nbd_build_socket_address(sockpath, bindto, port);
- if (qio_net_listener_open_sync(server, saddr, 1, &local_err) < 0) {
+ if (qio_net_listener_open_sync(server, saddr, backlog,
+ &local_err) < 0) {
object_unref(OBJECT(server));
error_report_err(local_err);
exit(EXIT_FAILURE);

View File

@ -0,0 +1,36 @@
From: Kevin Wolf <kwolf@redhat.com>
Date: Thu, 4 Feb 2021 08:21:37 +0100
Subject: qemu-storage-daemon: Enable object-add
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 15d40e9204eb3d89577187f117a1dde2237bdc4d
As we don't have a fully QAPIfied version of object-add yet and it still
has 'gen': false in the schema, it needs to be registered explicitly in
init_qmp_commands() to be available for users.
Fixes: 2af282ec51a27116d0402cab237b8970800f870c
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20210204072137.19663-1-kwolf@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
storage-daemon/qemu-storage-daemon.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-storage-daemon.c
index 7c914b0dc1f851d6b6e72afd296c..65ccdb17c1a9fcb825dabaf38bb7 100644
--- a/storage-daemon/qemu-storage-daemon.c
+++ b/storage-daemon/qemu-storage-daemon.c
@@ -144,6 +144,8 @@ static void init_qmp_commands(void)
qmp_init_marshal(&qmp_commands);
qmp_register_command(&qmp_commands, "query-qmp-schema",
qmp_query_qmp_schema, QCO_ALLOW_PRECONFIG);
+ qmp_register_command(&qmp_commands, "object-add", qmp_object_add,
+ QCO_NO_OPTIONS);
QTAILQ_INIT(&qmp_cap_negotiation_commands);
qmp_register_command(&qmp_cap_negotiation_commands, "qmp_capabilities",

View File

@ -1,3 +1,20 @@
-------------------------------------------------------------------
Wed Feb 17 02:06:20 UTC 2021 - Bruce Rogers <brogers@suse.com>
- Fix uninitialized variable in ipxe driver code (boo#1181922)
ath5k-Add-missing-AR5K_EEPROM_READ-in-at.patch
- Add a few improvements to the git-based package workflow scripts
-------------------------------------------------------------------
Tue Feb 16 17:10:53 UTC 2021 - Bruce Rogers <brogers@suse.com>
- Include additional upstream patches designated as stable material
and reviewed for applicability to include here
blockjob-Fix-crash-with-IOthread-when-bl.patch
monitor-Fix-assertion-failure-on-shutdow.patch
qemu-nbd-Use-SOMAXCONN-for-socket-listen.patch
qemu-storage-daemon-Enable-object-add.patch
-------------------------------------------------------------------
Mon Feb 8 20:53:03 UTC 2021 - Bruce Rogers <brogers@suse.com>

114
qemu.spec
View File

@ -152,52 +152,56 @@ Patch00017: net-Fix-handling-of-id-in-netdev_add-and.patch
Patch00018: block-Separate-blk_is_writable-and-blk_s.patch
Patch00019: hw-intc-arm_gic-Fix-interrupt-ID-in-GICD.patch
Patch00020: virtio-move-use-disabled-flag-property-t.patch
Patch00021: XXX-dont-dump-core-on-sigabort.patch
Patch00022: qemu-binfmt-conf-Modify-default-path.patch
Patch00023: qemu-cvs-gettimeofday.patch
Patch00024: qemu-cvs-ioctl_debug.patch
Patch00025: qemu-cvs-ioctl_nodirection.patch
Patch00026: linux-user-add-binfmt-wrapper-for-argv-0.patch
Patch00027: PPC-KVM-Disable-mmu-notifier-check.patch
Patch00028: linux-user-binfmt-support-host-binaries.patch
Patch00029: linux-user-Fake-proc-cpuinfo.patch
Patch00030: linux-user-use-target_ulong.patch
Patch00031: Make-char-muxer-more-robust-wrt-small-FI.patch
Patch00032: linux-user-lseek-explicitly-cast-non-set.patch
Patch00033: AIO-Reduce-number-of-threads-for-32bit-h.patch
Patch00034: xen_disk-Add-suse-specific-flush-disable.patch
Patch00035: qemu-bridge-helper-reduce-security-profi.patch
Patch00036: qemu-binfmt-conf-use-qemu-ARCH-binfmt.patch
Patch00037: roms-Makefile-pass-a-packaging-timestamp.patch
Patch00038: Raise-soft-address-space-limit-to-hard-l.patch
Patch00039: increase-x86_64-physical-bits-to-42.patch
Patch00040: i8254-Fix-migration-from-SLE11-SP2.patch
Patch00041: acpi_piix4-Fix-migration-from-SLE11-SP2.patch
Patch00042: Make-installed-scripts-explicitly-python.patch
Patch00043: hw-smbios-handle-both-file-formats-regar.patch
Patch00044: xen-add-block-resize-support-for-xen-dis.patch
Patch00045: tests-qemu-iotests-Triple-timeout-of-i-o.patch
Patch00046: tests-Fix-block-tests-to-be-compatible-w.patch
Patch00047: xen-ignore-live-parameter-from-xen-save-.patch
Patch00048: tests-change-error-message-in-test-162.patch
Patch00049: hw-intc-exynos4210_gic-provide-more-room.patch
Patch00050: configure-only-populate-roms-if-softmmu.patch
Patch00051: pc-bios-s390-ccw-net-avoid-warning-about.patch
Patch00052: roms-change-cross-compiler-naming-to-be-.patch
Patch00053: test-add-mapping-from-arch-of-i686-to-qe.patch
Patch00054: configure-remove-pkgversion-from-CONFIG_.patch
Patch00055: docs-add-SUSE-support-statements-to-html.patch
Patch00056: s390x-Fix-stringop-truncation-issue-repo.patch
Patch00057: Revert-qht-constify-qht_statistics_init.patch
Patch00058: qht-Revert-some-constification-in-qht.c.patch
Patch00059: meson-install-ivshmem-client-and-ivshmem.patch
Patch00060: Revert-roms-efirom-tests-uefi-test-tools.patch
Patch00061: Makefile-Don-t-check-pc-bios-as-pre-requ.patch
Patch00062: roms-Makefile-add-cross-file-to-qboot-me.patch
Patch00063: usb-Help-compiler-out-to-avoid-a-warning.patch
Patch00064: module-for-virtio-gpu-pre-load-module-to.patch
Patch00065: spice-app-avoid-crash-when-core-spice-mo.patch
Patch00066: qom-handle-case-of-chardev-spice-module-.patch
Patch00021: qemu-nbd-Use-SOMAXCONN-for-socket-listen.patch
Patch00022: qemu-storage-daemon-Enable-object-add.patch
Patch00023: blockjob-Fix-crash-with-IOthread-when-bl.patch
Patch00024: monitor-Fix-assertion-failure-on-shutdow.patch
Patch00025: XXX-dont-dump-core-on-sigabort.patch
Patch00026: qemu-binfmt-conf-Modify-default-path.patch
Patch00027: qemu-cvs-gettimeofday.patch
Patch00028: qemu-cvs-ioctl_debug.patch
Patch00029: qemu-cvs-ioctl_nodirection.patch
Patch00030: linux-user-add-binfmt-wrapper-for-argv-0.patch
Patch00031: PPC-KVM-Disable-mmu-notifier-check.patch
Patch00032: linux-user-binfmt-support-host-binaries.patch
Patch00033: linux-user-Fake-proc-cpuinfo.patch
Patch00034: linux-user-use-target_ulong.patch
Patch00035: Make-char-muxer-more-robust-wrt-small-FI.patch
Patch00036: linux-user-lseek-explicitly-cast-non-set.patch
Patch00037: AIO-Reduce-number-of-threads-for-32bit-h.patch
Patch00038: xen_disk-Add-suse-specific-flush-disable.patch
Patch00039: qemu-bridge-helper-reduce-security-profi.patch
Patch00040: qemu-binfmt-conf-use-qemu-ARCH-binfmt.patch
Patch00041: roms-Makefile-pass-a-packaging-timestamp.patch
Patch00042: Raise-soft-address-space-limit-to-hard-l.patch
Patch00043: increase-x86_64-physical-bits-to-42.patch
Patch00044: i8254-Fix-migration-from-SLE11-SP2.patch
Patch00045: acpi_piix4-Fix-migration-from-SLE11-SP2.patch
Patch00046: Make-installed-scripts-explicitly-python.patch
Patch00047: hw-smbios-handle-both-file-formats-regar.patch
Patch00048: xen-add-block-resize-support-for-xen-dis.patch
Patch00049: tests-qemu-iotests-Triple-timeout-of-i-o.patch
Patch00050: tests-Fix-block-tests-to-be-compatible-w.patch
Patch00051: xen-ignore-live-parameter-from-xen-save-.patch
Patch00052: tests-change-error-message-in-test-162.patch
Patch00053: hw-intc-exynos4210_gic-provide-more-room.patch
Patch00054: configure-only-populate-roms-if-softmmu.patch
Patch00055: pc-bios-s390-ccw-net-avoid-warning-about.patch
Patch00056: roms-change-cross-compiler-naming-to-be-.patch
Patch00057: test-add-mapping-from-arch-of-i686-to-qe.patch
Patch00058: configure-remove-pkgversion-from-CONFIG_.patch
Patch00059: docs-add-SUSE-support-statements-to-html.patch
Patch00060: s390x-Fix-stringop-truncation-issue-repo.patch
Patch00061: Revert-qht-constify-qht_statistics_init.patch
Patch00062: qht-Revert-some-constification-in-qht.c.patch
Patch00063: meson-install-ivshmem-client-and-ivshmem.patch
Patch00064: Revert-roms-efirom-tests-uefi-test-tools.patch
Patch00065: Makefile-Don-t-check-pc-bios-as-pre-requ.patch
Patch00066: roms-Makefile-add-cross-file-to-qboot-me.patch
Patch00067: usb-Help-compiler-out-to-avoid-a-warning.patch
Patch00068: module-for-virtio-gpu-pre-load-module-to.patch
Patch00069: spice-app-avoid-crash-when-core-spice-mo.patch
Patch00070: qom-handle-case-of-chardev-spice-module-.patch
# Patches applied in roms/seabios/:
Patch01000: seabios-use-python2-explicitly-as-needed.patch
Patch01001: seabios-switch-to-python3-as-needed.patch
@ -207,6 +211,7 @@ Patch01003: build-be-explicit-about-mx86-used-note-n.patch
Patch02000: stub-out-the-SAN-req-s-in-int13.patch
Patch02001: ipxe-Makefile-fix-issues-of-build-reprod.patch
Patch02002: help-compiler-out-by-initializing-array.patch
Patch02003: ath5k-Add-missing-AR5K_EEPROM_READ-in-at.patch
# Patches applied in roms/sgabios/:
Patch03000: sgabios-Makefile-fix-issues-of-build-rep.patch
Patch03001: roms-sgabios-Fix-csum8-to-be-built-by-ho.patch
@ -1067,24 +1072,28 @@ This package records qemu testsuite results and represents successful testing.
%patch00052 -p1
%patch00053 -p1
%patch00054 -p1
%if %{legacy_qemu_kvm}
%patch00055 -p1
%endif
%patch00056 -p1
%patch00057 -p1
%patch00058 -p1
%if %{legacy_qemu_kvm}
%patch00059 -p1
%endif
%patch00060 -p1
%patch00061 -p1
%ifarch aarch64
%patch00062 -p1
%endif
%ifarch %arm %ix86
%patch00063 -p1
%endif
%patch00064 -p1
%patch00065 -p1
%ifarch aarch64
%patch00066 -p1
%endif
%ifarch %arm %ix86
%patch00067 -p1
%endif
%patch00068 -p1
%patch00069 -p1
%patch00070 -p1
%patch01000 -p1
%patch01001 -p1
%patch01002 -p1
@ -1094,6 +1103,7 @@ This package records qemu testsuite results and represents successful testing.
%endif
%patch02001 -p1
%patch02002 -p1
%patch02003 -p1
%patch03000 -p1
%patch03001 -p1
%patch08000 -p1

View File

@ -1,6 +1,6 @@
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 25 Jan 2021 21:05:05 -0700
Subject: spice-app: avoid crash when core spice module isn't loaded
Subject: spice-app: avoid crash when core spice module doesn't loaded
When qemu is built with modules, but a given module doesn't load
qemu should handle that gracefully. When ui-spice-core.so isn't
@ -15,7 +15,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/ui/spice-app.c b/ui/spice-app.c
index 026124ef56a0ef26fbe3cf0a1aba..8ded9024a376da5c4802c1f87fd7 100644
index 026124ef56a0ef26fbe3cf0a1aba..4325ac2d9c5403e8d77099825fc3 100644
--- a/ui/spice-app.c
+++ b/ui/spice-app.c
@@ -129,6 +129,7 @@ static void spice_app_atexit(void)
@ -32,8 +32,8 @@ index 026124ef56a0ef26fbe3cf0a1aba..8ded9024a376da5c4802c1f87fd7 100644
}
+ list = qemu_find_opts("spice");
+ if (list == NULL) {
+ error_report("spice-app missing spice support\n");
+ exit(1);
+ error_report("spice-app missing spice support");
+ exit(1);
+ }
type_register(&char_vc_type_info);

View File

@ -387,7 +387,7 @@ rm -rf $BUNDLE_DIR
rm $i
done
if [[ "$NUMBERED_PATCHES" = "0" ]]; then
for i in [0-9]*.patch; do
for i in [0-9][0-9][0-9][0-9]*-*.patch; do
osc rm --force "$i"
done
# make sure that w/out the numbered prefixes, the patchnames are all unique
@ -408,8 +408,10 @@ rm -rf $BUNDLE_DIR
fi
if [ "$FIVE_DIGIT_POTENTIAL" = "0" ]; then
CHECK_PREFIX="0"
NUMBERED_PATCH_RE="^[[:digit:]]{4}-.*[.]patch$"
else
CHECK_PREFIX="00"
NUMBERED_PATCH_RE="^[[:digit:]]{5}-.*[.]patch$"
fi
for i in $CHECK_DIR/*; do
BASENAME=$(basename $i)
@ -435,11 +437,6 @@ rm -rf $BUNDLE_DIR
let TOTAL_COUNT+=1
fi
done
if [ "$FIVE_DIGIT_POTENTIAL" = "0" ]; then
NUMBERED_PATCH_RE="^[[:digit:]]{4}-.*[.]patch$"
else
NUMBERED_PATCH_RE="^[[:digit:]]{5}-.*[.]patch$"
fi
for i in *.patch; do
if [[ "$i" =~ $NUMBERED_PATCH_RE ]]; then
if [[ "$NUMBERED_PATCHES" = "1" ]]; then
@ -496,7 +493,9 @@ rm -rf $BUNDLE_DIR
for package in qemu; do
while IFS= read -r line; do
if [ "$line" = "PATCH_FILES" ]; then
for i in [0-9]*-*.patch; do
# Here (and other places below) we try to get ONLY the numbered patches, but it's possible some ACTUAL patch name actually starts with multiple digits, but EXTREMELY unlikely
# TODO: do this better!
for i in [0-9][0-9][0-9][0-9]*-*.patch; do
NUM=${i%%-*}
DIV=$((10#$NUM/$PATCH_RANGE))
REM=$((10#$NUM%$PATCH_RANGE))
@ -524,7 +523,7 @@ rm -rf $BUNDLE_DIR
fi
done
elif [ "$line" = "PATCH_EXEC" ]; then
for i in [0-9]*-*.patch; do
for i in [0-9][0-9][0-9][0-9]*-*.patch; do
S=$(grep "^Include-If: " $i) || true
NUM=${i%%-*}
if [ "$S" != "" ]; then
@ -574,7 +573,7 @@ rm -rf $BUNDLE_DIR
fi
done
if [[ "$NUMBERED_PATCHES" = "0" ]]; then
rm -f [0-9]*-*.patch
rm -f [0-9][0-9][0-9][0-9]*-*.patch
fi
if [ -e qemu.changes.deleted ]; then
rm -f qemu.changes.deleted
@ -583,9 +582,9 @@ rm -rf $BUNDLE_DIR
rm -f qemu.changes.added
fi
# Decide if there is a better way to handle the no change case:
if [[ "0" = "$(expr $CHANGED_COUNT + $DELETED_COUNT + $ADDED_COUNT)" ]]; then
osc revert bundles.tar.xz
fi
#BFR if [[ "0" = "$(expr $CHANGED_COUNT + $DELETED_COUNT + $ADDED_COUNT)" ]]; then
#BFR osc revert bundles.tar.xz
#BFR fi
echo "git patch summary"
echo " unchanged: $UNCHANGED_COUNT"
echo " changed: $CHANGED_COUNT"