mirror_qemu/migration
Wei Wang 6983d1657d migration/postcopy: ensure preempt channel is ready before loading states
Before loading the guest states, ensure that the preempt channel has been
ready to use, as some of the states (e.g. via virtio_load) might trigger
page faults that will be handled through the preempt channel. So yield to
the main thread in the case that the channel create event hasn't been
dispatched.

Cc: qemu-stable <qemu-stable@nongnu.org>
Fixes: 9358982744 ("migration: Send requested page directly in rp-return thread")
Originally-by: Lei Wang <lei4.wang@intel.com>
Link: https://lore.kernel.org/all/9aa5d1be-7801-40dd-83fd-f7e041ced249@intel.com/T/
Signed-off-by: Lei Wang <lei4.wang@intel.com>
Signed-off-by: Wei Wang <wei.w.wang@intel.com>
Link: https://lore.kernel.org/r/20240405034056.23933-1-wei.w.wang@intel.com
[peterx: add a todo section, add Fixes and copy stable for 8.0+]
Signed-off-by: Peter Xu <peterx@redhat.com>
(cherry picked from commit 7afbdada7e)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2024-04-09 20:18:26 +03:00
..
block-dirty-bitmap.c block: Mark bdrv_filter_bs() and callers GRAPH_RDLOCK 2023-11-07 19:14:19 +01:00
block.c migration: Skip only empty block devices 2024-03-19 19:22:46 +03:00
block.h migration: disable auto-converge during bulk block migration 2017-09-27 11:27:14 +01:00
channel-block.c io: follow coroutine AioContext in qio_channel_yield() 2023-09-07 20:32:11 -05:00
channel-block.h migration: introduce a QIOChannel impl for BlockDriverState VMState 2022-06-22 19:33:43 +01:00
channel.c migration: check magic value for deciding the mapping of channels 2023-02-06 19:22:57 +01:00
channel.h migration: check magic value for deciding the mapping of channels 2023-02-06 19:22:57 +01:00
colo-failover.c migration/colo: Improve an x-colo-lost-heartbeat error message 2023-02-23 14:10:17 +01:00
colo.c qemu-file: Make qemu_fflush() return errors 2023-10-31 08:44:33 +01:00
dirtyrate.c migration/dirtyrate: use QEMU_CLOCK_HOST to report start-time 2023-10-10 08:04:12 +08:00
dirtyrate.h migration/calc-dirty-rate: millisecond-granularity period 2023-10-10 08:03:50 +08:00
exec.c migration: convert exec backend to accept MigrateAddress. 2023-11-02 11:35:04 +01:00
exec.h migration: convert exec backend to accept MigrateAddress. 2023-11-02 11:35:04 +01:00
fd.c bulk: Remove pointless QOM casts 2023-06-05 20:48:34 +02:00
fd.h migration: Fix fd protocol for incoming defer 2019-06-05 12:43:55 +02:00
file.c migration: Convert the file backend to the new QAPI syntax 2023-11-02 11:35:04 +01:00
file.h migration: Convert the file backend to the new QAPI syntax 2023-11-02 11:35:04 +01:00
global_state.c migration: never fail in global_state_store() 2023-06-02 01:03:19 +02:00
meson.build migration: file URI 2023-10-04 13:16:58 +02:00
migration-hmp-cmds.c migration: Plug memory leak on HMP migrate error path 2024-01-29 23:00:39 +03:00
migration-stats.c migration: migration_rate_limit_reset() don't need the QEMUFile 2023-10-31 08:44:33 +01:00
migration-stats.h migration: Remove transferred atomic counter 2023-10-31 08:44:33 +01:00
migration.c migration/postcopy: Ensure postcopy_start() sets errp if it fails 2024-04-01 19:30:21 +03:00
migration.h migration: Implement MigrateChannelList to hmp migration flow. 2023-11-02 11:35:04 +01:00
multifd-zlib.c migration: spelling fixes 2023-07-25 17:13:20 +03:00
multifd-zstd.c migration: spelling fixes 2023-07-25 17:13:20 +03:00
multifd.c migration/multifd: Stop setting p->ioc before connecting 2023-11-30 09:50:10 +01:00
multifd.h multifd: Add the ramblock to MultiFDRecvParams 2023-05-10 18:48:11 +02:00
options.c migration: mode parameter 2023-11-01 16:13:58 +01:00
options.h migration: mode parameter 2023-11-01 16:13:58 +01:00
page_cache.c migration: Fix cache_init()'s "Failed to allocate" error messages 2021-02-08 11:19:51 +00:00
page_cache.h migration: Clean up signed vs. unsigned XBZRLE cache-size 2021-02-08 11:19:51 +00:00
postcopy-ram.c migration: Fix race that dest preempt thread close too early 2023-09-27 13:58:02 -04:00
postcopy-ram.h migration: Allow postcopy_ram_supported_by_host() to report err 2023-04-27 10:18:25 +02:00
qemu-file.c migration: Refactor error handling in source return path 2023-11-02 11:35:03 +01:00
qemu-file.h migration: Refactor error handling in source return path 2023-11-02 11:35:03 +01:00
ram-compress.c migration: Rename ram_compressed_pages() to compress_ram_pages() 2023-10-30 17:41:55 +01:00
ram-compress.h migration: Rename ram_compressed_pages() to compress_ram_pages() 2023-10-30 17:41:55 +01:00
ram.c migration: Unlock mutex in error case 2023-11-03 10:48:37 +01:00
ram.h migration: Change ram_dirty_bitmap_reload() retval to bool 2023-11-02 11:35:03 +01:00
rdma.c migration/rdma: Fix a memory issue for migration 2024-03-12 20:43:32 +03:00
rdma.h migration: convert rdma backend to accept MigrateAddress 2023-11-02 11:35:03 +01:00
savevm.c migration/postcopy: ensure preempt channel is ready before loading states 2024-04-09 20:18:26 +03:00
savevm.h migration: Add .save_prepare() handler to struct SaveVMHandlers 2023-09-11 08:34:06 +02:00
socket.c migration: convert socket backend to accept MigrateAddress 2023-11-02 11:35:03 +01:00
socket.h migration: convert socket backend to accept MigrateAddress 2023-11-02 11:35:03 +01:00
target.c migration: Add migration prefix to functions in target.c 2023-09-11 08:34:06 +02:00
threadinfo.c migration/multifd: Protect accesses to migration_threads 2023-07-26 10:55:56 +02:00
threadinfo.h migration/multifd: Protect accesses to migration_threads 2023-07-26 10:55:56 +02:00
tls.c migration: Drop unused parameter for migration_tls_client_create() 2023-05-03 11:24:20 +02:00
tls.h migration: Drop unused parameter for migration_tls_client_create() 2023-05-03 11:24:20 +02:00
trace-events migration: Refactor error handling in source return path 2023-11-02 11:35:03 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vmstate-types.c Move CPU softfloat unions to cpu-float.h 2022-04-06 14:31:43 +02:00
vmstate.c qemu-file: Remove _noflush from qemu_file_transferred_noflush() 2023-10-31 08:44:33 +01:00
xbzrle.c migration/xbzrle: Use i386 host/cpuinfo.h 2023-05-23 16:51:18 -07:00
xbzrle.h migration/xbzrle: Use i386 host/cpuinfo.h 2023-05-23 16:51:18 -07:00
yank_functions.c bulk: Remove pointless QOM casts 2023-06-05 20:48:34 +02:00
yank_functions.h migration: Move the yank unregister of channel_close out 2021-07-26 12:45:03 +01:00