xref: /openbmc/qemu/migration/options.c (revision 17cba690cdd42108369fafe6b07bff09872fbea6)
11f0776f1SJuan Quintela /*
21f0776f1SJuan Quintela  * QEMU migration capabilities
31f0776f1SJuan Quintela  *
41f0776f1SJuan Quintela  * Copyright (c) 2012-2023 Red Hat Inc
51f0776f1SJuan Quintela  *
61f0776f1SJuan Quintela  * Authors:
71f0776f1SJuan Quintela  *   Orit Wasserman <owasserm@redhat.com>
81f0776f1SJuan Quintela  *   Juan Quintela <quintela@redhat.com>
91f0776f1SJuan Quintela  *
101f0776f1SJuan Quintela  * This work is licensed under the terms of the GNU GPL, version 2 or later.
111f0776f1SJuan Quintela  * See the COPYING file in the top-level directory.
121f0776f1SJuan Quintela  */
131f0776f1SJuan Quintela 
141f0776f1SJuan Quintela #include "qemu/osdep.h"
151f0776f1SJuan Quintela #include "migration.h"
161f0776f1SJuan Quintela #include "options.h"
171f0776f1SJuan Quintela 
181f0776f1SJuan Quintela bool migrate_auto_converge(void)
191f0776f1SJuan Quintela {
201f0776f1SJuan Quintela     MigrationState *s;
211f0776f1SJuan Quintela 
221f0776f1SJuan Quintela     s = migrate_get_current();
231f0776f1SJuan Quintela 
241f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_AUTO_CONVERGE];
251f0776f1SJuan Quintela }
261f0776f1SJuan Quintela 
271f0776f1SJuan Quintela bool migrate_background_snapshot(void)
281f0776f1SJuan Quintela {
291f0776f1SJuan Quintela     MigrationState *s;
301f0776f1SJuan Quintela 
311f0776f1SJuan Quintela     s = migrate_get_current();
321f0776f1SJuan Quintela 
331f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_BACKGROUND_SNAPSHOT];
341f0776f1SJuan Quintela }
351f0776f1SJuan Quintela 
369d4b1e5fSJuan Quintela bool migrate_block(void)
379d4b1e5fSJuan Quintela {
389d4b1e5fSJuan Quintela     MigrationState *s;
399d4b1e5fSJuan Quintela 
409d4b1e5fSJuan Quintela     s = migrate_get_current();
419d4b1e5fSJuan Quintela 
429d4b1e5fSJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_BLOCK];
439d4b1e5fSJuan Quintela }
449d4b1e5fSJuan Quintela 
455e804644SJuan Quintela bool migrate_colo(void)
465e804644SJuan Quintela {
475e804644SJuan Quintela     MigrationState *s = migrate_get_current();
485e804644SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_X_COLO];
495e804644SJuan Quintela }
505e804644SJuan Quintela 
51a7a94d14SJuan Quintela bool migrate_compress(void)
52a7a94d14SJuan Quintela {
53a7a94d14SJuan Quintela     MigrationState *s;
54a7a94d14SJuan Quintela 
55a7a94d14SJuan Quintela     s = migrate_get_current();
56a7a94d14SJuan Quintela 
57a7a94d14SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_COMPRESS];
58a7a94d14SJuan Quintela }
59a7a94d14SJuan Quintela 
601f0776f1SJuan Quintela bool migrate_dirty_bitmaps(void)
611f0776f1SJuan Quintela {
621f0776f1SJuan Quintela     MigrationState *s;
631f0776f1SJuan Quintela 
641f0776f1SJuan Quintela     s = migrate_get_current();
651f0776f1SJuan Quintela 
661f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_DIRTY_BITMAPS];
671f0776f1SJuan Quintela }
681f0776f1SJuan Quintela 
69b890902cSJuan Quintela bool migrate_events(void)
70b890902cSJuan Quintela {
71b890902cSJuan Quintela     MigrationState *s;
72b890902cSJuan Quintela 
73b890902cSJuan Quintela     s = migrate_get_current();
74b890902cSJuan Quintela 
75b890902cSJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_EVENTS];
76b890902cSJuan Quintela }
77b890902cSJuan Quintela 
781f0776f1SJuan Quintela bool migrate_ignore_shared(void)
791f0776f1SJuan Quintela {
801f0776f1SJuan Quintela     MigrationState *s;
811f0776f1SJuan Quintela 
821f0776f1SJuan Quintela     s = migrate_get_current();
831f0776f1SJuan Quintela 
841f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_X_IGNORE_SHARED];
851f0776f1SJuan Quintela }
861f0776f1SJuan Quintela 
871f0776f1SJuan Quintela bool migrate_late_block_activate(void)
881f0776f1SJuan Quintela {
891f0776f1SJuan Quintela     MigrationState *s;
901f0776f1SJuan Quintela 
911f0776f1SJuan Quintela     s = migrate_get_current();
921f0776f1SJuan Quintela 
931f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_LATE_BLOCK_ACTIVATE];
941f0776f1SJuan Quintela }
951f0776f1SJuan Quintela 
9651b07548SJuan Quintela bool migrate_multifd(void)
9751b07548SJuan Quintela {
9851b07548SJuan Quintela     MigrationState *s;
9951b07548SJuan Quintela 
10051b07548SJuan Quintela     s = migrate_get_current();
10151b07548SJuan Quintela 
10251b07548SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_MULTIFD];
10351b07548SJuan Quintela }
10451b07548SJuan Quintela 
1051f0776f1SJuan Quintela bool migrate_pause_before_switchover(void)
1061f0776f1SJuan Quintela {
1071f0776f1SJuan Quintela     MigrationState *s;
1081f0776f1SJuan Quintela 
1091f0776f1SJuan Quintela     s = migrate_get_current();
1101f0776f1SJuan Quintela 
1111f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_PAUSE_BEFORE_SWITCHOVER];
1121f0776f1SJuan Quintela }
1131f0776f1SJuan Quintela 
1141f0776f1SJuan Quintela bool migrate_postcopy_blocktime(void)
1151f0776f1SJuan Quintela {
1161f0776f1SJuan Quintela     MigrationState *s;
1171f0776f1SJuan Quintela 
1181f0776f1SJuan Quintela     s = migrate_get_current();
1191f0776f1SJuan Quintela 
1201f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_POSTCOPY_BLOCKTIME];
1211f0776f1SJuan Quintela }
1221f0776f1SJuan Quintela 
1231f0776f1SJuan Quintela bool migrate_postcopy_preempt(void)
1241f0776f1SJuan Quintela {
1251f0776f1SJuan Quintela     MigrationState *s;
1261f0776f1SJuan Quintela 
1271f0776f1SJuan Quintela     s = migrate_get_current();
1281f0776f1SJuan Quintela 
1291f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_POSTCOPY_PREEMPT];
1301f0776f1SJuan Quintela }
1311f0776f1SJuan Quintela 
1321f0776f1SJuan Quintela bool migrate_postcopy_ram(void)
1331f0776f1SJuan Quintela {
1341f0776f1SJuan Quintela     MigrationState *s;
1351f0776f1SJuan Quintela 
1361f0776f1SJuan Quintela     s = migrate_get_current();
1371f0776f1SJuan Quintela 
1381f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_POSTCOPY_RAM];
1391f0776f1SJuan Quintela }
1401f0776f1SJuan Quintela 
141*17cba690SJuan Quintela bool migrate_rdma_pin_all(void)
142*17cba690SJuan Quintela {
143*17cba690SJuan Quintela     MigrationState *s = migrate_get_current();
144*17cba690SJuan Quintela 
145*17cba690SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_RDMA_PIN_ALL];
146*17cba690SJuan Quintela }
147*17cba690SJuan Quintela 
1481f0776f1SJuan Quintela bool migrate_release_ram(void)
1491f0776f1SJuan Quintela {
1501f0776f1SJuan Quintela     MigrationState *s;
1511f0776f1SJuan Quintela 
1521f0776f1SJuan Quintela     s = migrate_get_current();
1531f0776f1SJuan Quintela 
1541f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_RELEASE_RAM];
1551f0776f1SJuan Quintela }
1561f0776f1SJuan Quintela 
15738ad1110SJuan Quintela bool migrate_return_path(void)
15838ad1110SJuan Quintela {
15938ad1110SJuan Quintela     MigrationState *s;
16038ad1110SJuan Quintela 
16138ad1110SJuan Quintela     s = migrate_get_current();
16238ad1110SJuan Quintela 
16338ad1110SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_RETURN_PATH];
16438ad1110SJuan Quintela }
16538ad1110SJuan Quintela 
1661f0776f1SJuan Quintela bool migrate_validate_uuid(void)
1671f0776f1SJuan Quintela {
1681f0776f1SJuan Quintela     MigrationState *s;
1691f0776f1SJuan Quintela 
1701f0776f1SJuan Quintela     s = migrate_get_current();
1711f0776f1SJuan Quintela 
1721f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_VALIDATE_UUID];
1731f0776f1SJuan Quintela }
1741f0776f1SJuan Quintela 
17587dca0c9SJuan Quintela bool migrate_xbzrle(void)
17687dca0c9SJuan Quintela {
17787dca0c9SJuan Quintela     MigrationState *s;
17887dca0c9SJuan Quintela 
17987dca0c9SJuan Quintela     s = migrate_get_current();
18087dca0c9SJuan Quintela 
18187dca0c9SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_XBZRLE];
18287dca0c9SJuan Quintela }
18387dca0c9SJuan Quintela 
1841f0776f1SJuan Quintela bool migrate_zero_blocks(void)
1851f0776f1SJuan Quintela {
1861f0776f1SJuan Quintela     MigrationState *s;
1871f0776f1SJuan Quintela 
1881f0776f1SJuan Quintela     s = migrate_get_current();
1891f0776f1SJuan Quintela 
1901f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_ZERO_BLOCKS];
1911f0776f1SJuan Quintela }
192b4bc342cSJuan Quintela 
193b4bc342cSJuan Quintela bool migrate_zero_copy_send(void)
194b4bc342cSJuan Quintela {
195b4bc342cSJuan Quintela     MigrationState *s;
196b4bc342cSJuan Quintela 
197b4bc342cSJuan Quintela     s = migrate_get_current();
198b4bc342cSJuan Quintela 
199b4bc342cSJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_ZERO_COPY_SEND];
200b4bc342cSJuan Quintela }
201