xref: /openbmc/qemu/migration/options.c (revision 1f0776f1c03312aad5d6a5f98871240bc3af01e5)
1*1f0776f1SJuan Quintela /*
2*1f0776f1SJuan Quintela  * QEMU migration capabilities
3*1f0776f1SJuan Quintela  *
4*1f0776f1SJuan Quintela  * Copyright (c) 2012-2023 Red Hat Inc
5*1f0776f1SJuan Quintela  *
6*1f0776f1SJuan Quintela  * Authors:
7*1f0776f1SJuan Quintela  *   Orit Wasserman <owasserm@redhat.com>
8*1f0776f1SJuan Quintela  *   Juan Quintela <quintela@redhat.com>
9*1f0776f1SJuan Quintela  *
10*1f0776f1SJuan Quintela  * This work is licensed under the terms of the GNU GPL, version 2 or later.
11*1f0776f1SJuan Quintela  * See the COPYING file in the top-level directory.
12*1f0776f1SJuan Quintela  */
13*1f0776f1SJuan Quintela 
14*1f0776f1SJuan Quintela #include "qemu/osdep.h"
15*1f0776f1SJuan Quintela #include "migration.h"
16*1f0776f1SJuan Quintela #include "options.h"
17*1f0776f1SJuan Quintela 
18*1f0776f1SJuan Quintela bool migrate_auto_converge(void)
19*1f0776f1SJuan Quintela {
20*1f0776f1SJuan Quintela     MigrationState *s;
21*1f0776f1SJuan Quintela 
22*1f0776f1SJuan Quintela     s = migrate_get_current();
23*1f0776f1SJuan Quintela 
24*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_AUTO_CONVERGE];
25*1f0776f1SJuan Quintela }
26*1f0776f1SJuan Quintela 
27*1f0776f1SJuan Quintela bool migrate_background_snapshot(void)
28*1f0776f1SJuan Quintela {
29*1f0776f1SJuan Quintela     MigrationState *s;
30*1f0776f1SJuan Quintela 
31*1f0776f1SJuan Quintela     s = migrate_get_current();
32*1f0776f1SJuan Quintela 
33*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_BACKGROUND_SNAPSHOT];
34*1f0776f1SJuan Quintela }
35*1f0776f1SJuan Quintela 
36*1f0776f1SJuan Quintela bool migrate_dirty_bitmaps(void)
37*1f0776f1SJuan Quintela {
38*1f0776f1SJuan Quintela     MigrationState *s;
39*1f0776f1SJuan Quintela 
40*1f0776f1SJuan Quintela     s = migrate_get_current();
41*1f0776f1SJuan Quintela 
42*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_DIRTY_BITMAPS];
43*1f0776f1SJuan Quintela }
44*1f0776f1SJuan Quintela 
45*1f0776f1SJuan Quintela bool migrate_ignore_shared(void)
46*1f0776f1SJuan Quintela {
47*1f0776f1SJuan Quintela     MigrationState *s;
48*1f0776f1SJuan Quintela 
49*1f0776f1SJuan Quintela     s = migrate_get_current();
50*1f0776f1SJuan Quintela 
51*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_X_IGNORE_SHARED];
52*1f0776f1SJuan Quintela }
53*1f0776f1SJuan Quintela 
54*1f0776f1SJuan Quintela bool migrate_late_block_activate(void)
55*1f0776f1SJuan Quintela {
56*1f0776f1SJuan Quintela     MigrationState *s;
57*1f0776f1SJuan Quintela 
58*1f0776f1SJuan Quintela     s = migrate_get_current();
59*1f0776f1SJuan Quintela 
60*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_LATE_BLOCK_ACTIVATE];
61*1f0776f1SJuan Quintela }
62*1f0776f1SJuan Quintela 
63*1f0776f1SJuan Quintela bool migrate_pause_before_switchover(void)
64*1f0776f1SJuan Quintela {
65*1f0776f1SJuan Quintela     MigrationState *s;
66*1f0776f1SJuan Quintela 
67*1f0776f1SJuan Quintela     s = migrate_get_current();
68*1f0776f1SJuan Quintela 
69*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_PAUSE_BEFORE_SWITCHOVER];
70*1f0776f1SJuan Quintela }
71*1f0776f1SJuan Quintela 
72*1f0776f1SJuan Quintela bool migrate_postcopy_blocktime(void)
73*1f0776f1SJuan Quintela {
74*1f0776f1SJuan Quintela     MigrationState *s;
75*1f0776f1SJuan Quintela 
76*1f0776f1SJuan Quintela     s = migrate_get_current();
77*1f0776f1SJuan Quintela 
78*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_POSTCOPY_BLOCKTIME];
79*1f0776f1SJuan Quintela }
80*1f0776f1SJuan Quintela 
81*1f0776f1SJuan Quintela bool migrate_postcopy_preempt(void)
82*1f0776f1SJuan Quintela {
83*1f0776f1SJuan Quintela     MigrationState *s;
84*1f0776f1SJuan Quintela 
85*1f0776f1SJuan Quintela     s = migrate_get_current();
86*1f0776f1SJuan Quintela 
87*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_POSTCOPY_PREEMPT];
88*1f0776f1SJuan Quintela }
89*1f0776f1SJuan Quintela 
90*1f0776f1SJuan Quintela bool migrate_postcopy_ram(void)
91*1f0776f1SJuan Quintela {
92*1f0776f1SJuan Quintela     MigrationState *s;
93*1f0776f1SJuan Quintela 
94*1f0776f1SJuan Quintela     s = migrate_get_current();
95*1f0776f1SJuan Quintela 
96*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_POSTCOPY_RAM];
97*1f0776f1SJuan Quintela }
98*1f0776f1SJuan Quintela 
99*1f0776f1SJuan Quintela bool migrate_release_ram(void)
100*1f0776f1SJuan Quintela {
101*1f0776f1SJuan Quintela     MigrationState *s;
102*1f0776f1SJuan Quintela 
103*1f0776f1SJuan Quintela     s = migrate_get_current();
104*1f0776f1SJuan Quintela 
105*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_RELEASE_RAM];
106*1f0776f1SJuan Quintela }
107*1f0776f1SJuan Quintela 
108*1f0776f1SJuan Quintela bool migrate_validate_uuid(void)
109*1f0776f1SJuan Quintela {
110*1f0776f1SJuan Quintela     MigrationState *s;
111*1f0776f1SJuan Quintela 
112*1f0776f1SJuan Quintela     s = migrate_get_current();
113*1f0776f1SJuan Quintela 
114*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_VALIDATE_UUID];
115*1f0776f1SJuan Quintela }
116*1f0776f1SJuan Quintela 
117*1f0776f1SJuan Quintela bool migrate_zero_blocks(void)
118*1f0776f1SJuan Quintela {
119*1f0776f1SJuan Quintela     MigrationState *s;
120*1f0776f1SJuan Quintela 
121*1f0776f1SJuan Quintela     s = migrate_get_current();
122*1f0776f1SJuan Quintela 
123*1f0776f1SJuan Quintela     return s->capabilities[MIGRATION_CAPABILITY_ZERO_BLOCKS];
124*1f0776f1SJuan Quintela }
125