mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
Migration pull for 9.1
- Het's new test cases for "channels" - Het's fix for a typo for vsock parsing - Cedric's VFIO error report series - Cedric's one more patch for dirty-bitmap error reports - Zhijian's rdma deprecation patch - Yuan's zeropage optimization to fix double faults on anon mem - Zhijian's COLO fix on a crash -----BEGIN PGP SIGNATURE----- iIgEABYKADAWIQS5GE3CDMRX2s990ak7X8zN86vXBgUCZig4HxIccGV0ZXJ4QHJl ZGhhdC5jb20ACgkQO1/MzfOr1wbQiwD/V5nSJzSuAG4Ra1Fjo+LRG2TT6qk8eNCi fIytehSw6cYA/0wqarxOF0tr7ikeyhtG3w4xFf44kk6KcPkoVSl1tqoL =pJmQ -----END PGP SIGNATURE----- Merge tag 'migration-20240423-pull-request' of https://gitlab.com/peterx/qemu into staging Migration pull for 9.1 - Het's new test cases for "channels" - Het's fix for a typo for vsock parsing - Cedric's VFIO error report series - Cedric's one more patch for dirty-bitmap error reports - Zhijian's rdma deprecation patch - Yuan's zeropage optimization to fix double faults on anon mem - Zhijian's COLO fix on a crash # -----BEGIN PGP SIGNATURE----- # # iIgEABYKADAWIQS5GE3CDMRX2s990ak7X8zN86vXBgUCZig4HxIccGV0ZXJ4QHJl # ZGhhdC5jb20ACgkQO1/MzfOr1wbQiwD/V5nSJzSuAG4Ra1Fjo+LRG2TT6qk8eNCi # fIytehSw6cYA/0wqarxOF0tr7ikeyhtG3w4xFf44kk6KcPkoVSl1tqoL # =pJmQ # -----END PGP SIGNATURE----- # gpg: Signature made Tue 23 Apr 2024 03:37:19 PM PDT # gpg: using EDDSA key B9184DC20CC457DACF7DD1A93B5FCCCDF3ABD706 # gpg: issuer "peterx@redhat.com" # gpg: Good signature from "Peter Xu <xzpeter@gmail.com>" [unknown] # gpg: aka "Peter Xu <peterx@redhat.com>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: B918 4DC2 0CC4 57DA CF7D D1A9 3B5F CCCD F3AB D706 * tag 'migration-20240423-pull-request' of https://gitlab.com/peterx/qemu: (26 commits) migration/colo: Fix bdrv_graph_rdlock_main_loop: Assertion `!qemu_in_coroutine()' failed. migration/multifd: solve zero page causing multiple page faults migration: Add Error** argument to add_bitmaps_to_list() migration: Modify ram_init_bitmaps() to report dirty tracking errors migration: Add Error** argument to xbzrle_init() migration: Add Error** argument to ram_state_init() memory: Add Error** argument to the global_dirty_log routines migration: Introduce ram_bitmaps_destroy() memory: Add Error** argument to .log_global_start() handler migration: Add Error** argument to .load_setup() handler migration: Add Error** argument to .save_setup() handler migration: Add Error** argument to qemu_savevm_state_setup() migration: Add Error** argument to vmstate_save() migration: Always report an error in ram_save_setup() migration: Always report an error in block_save_setup() vfio: Always report an error in vfio_save_setup() s390/stattrib: Add Error** argument to set_migrationmode() handler tests/qtest/migration: Fix typo for vsock in SocketAddress_to_str tests/qtest/migration: Add negative tests to validate migration QAPIs tests/qtest/migration: Add multifd_tcp_plain test using list of channels instead of uri ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
88daa112d4
28 changed files with 558 additions and 216 deletions
|
@ -2919,7 +2919,30 @@ static unsigned int postponed_stop_flags;
|
|||
static VMChangeStateEntry *vmstate_change;
|
||||
static void memory_global_dirty_log_stop_postponed_run(void);
|
||||
|
||||
void memory_global_dirty_log_start(unsigned int flags)
|
||||
static bool memory_global_dirty_log_do_start(Error **errp)
|
||||
{
|
||||
MemoryListener *listener;
|
||||
|
||||
QTAILQ_FOREACH(listener, &memory_listeners, link) {
|
||||
if (listener->log_global_start) {
|
||||
if (!listener->log_global_start(listener, errp)) {
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
err:
|
||||
while ((listener = QTAILQ_PREV(listener, link)) != NULL) {
|
||||
if (listener->log_global_stop) {
|
||||
listener->log_global_stop(listener);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool memory_global_dirty_log_start(unsigned int flags, Error **errp)
|
||||
{
|
||||
unsigned int old_flags;
|
||||
|
||||
|
@ -2933,7 +2956,7 @@ void memory_global_dirty_log_start(unsigned int flags)
|
|||
|
||||
flags &= ~global_dirty_tracking;
|
||||
if (!flags) {
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
old_flags = global_dirty_tracking;
|
||||
|
@ -2941,11 +2964,17 @@ void memory_global_dirty_log_start(unsigned int flags)
|
|||
trace_global_dirty_changed(global_dirty_tracking);
|
||||
|
||||
if (!old_flags) {
|
||||
MEMORY_LISTENER_CALL_GLOBAL(log_global_start, Forward);
|
||||
if (!memory_global_dirty_log_do_start(errp)) {
|
||||
global_dirty_tracking &= ~flags;
|
||||
trace_global_dirty_changed(global_dirty_tracking);
|
||||
return false;
|
||||
}
|
||||
|
||||
memory_region_transaction_begin();
|
||||
memory_region_update_pending = true;
|
||||
memory_region_transaction_commit();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static void memory_global_dirty_log_do_stop(unsigned int flags)
|
||||
|
@ -3019,8 +3048,15 @@ static void listener_add_address_space(MemoryListener *listener,
|
|||
listener->begin(listener);
|
||||
}
|
||||
if (global_dirty_tracking) {
|
||||
/*
|
||||
* Currently only VFIO can fail log_global_start(), and it's not
|
||||
* yet allowed to hotplug any PCI device during migration. So this
|
||||
* should never fail when invoked, guard it with error_abort. If
|
||||
* it can start to fail in the future, we need to be able to fail
|
||||
* the whole listener_add_address_space() and its callers.
|
||||
*/
|
||||
if (listener->log_global_start) {
|
||||
listener->log_global_start(listener);
|
||||
listener->log_global_start(listener, &error_abort);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue