Merge tag 'pull-loongarch-20241016' of https://gitlab.com/gaosong/qemu into staging
[qemu/armbru.git] / docs / devel / migration / main.rst
blobc2857fc244623c2f9ea05a281e7a4b4c25e66366
1 ===================
2 Migration framework
3 ===================
5 QEMU has code to load/save the state of the guest that it is running.
6 These are two complementary operations.  Saving the state just does
7 that, saves the state for each device that the guest is running.
8 Restoring a guest is just the opposite operation: we need to load the
9 state of each device.
11 For this to work, QEMU has to be launched with the same arguments the
12 two times.  I.e. it can only restore the state in one guest that has
13 the same devices that the one it was saved (this last requirement can
14 be relaxed a bit, but for now we can consider that configuration has
15 to be exactly the same).
17 Once that we are able to save/restore a guest, a new functionality is
18 requested: migration.  This means that QEMU is able to start in one
19 machine and being "migrated" to another machine.  I.e. being moved to
20 another machine.
22 Next was the "live migration" functionality.  This is important
23 because some guests run with a lot of state (specially RAM), and it
24 can take a while to move all state from one machine to another.  Live
25 migration allows the guest to continue running while the state is
26 transferred.  Only while the last part of the state is transferred has
27 the guest to be stopped.  Typically the time that the guest is
28 unresponsive during live migration is the low hundred of milliseconds
29 (notice that this depends on a lot of things).
31 .. contents::
33 Transports
34 ==========
36 The migration stream is normally just a byte stream that can be passed
37 over any transport.
39 - tcp migration: do the migration using tcp sockets
40 - unix migration: do the migration using unix sockets
41 - exec migration: do the migration using the stdin/stdout through a process.
42 - fd migration: do the migration using a file descriptor that is
43   passed to QEMU.  QEMU doesn't care how this file descriptor is opened.
44 - file migration: do the migration using a file that is passed to QEMU
45   by path. A file offset option is supported to allow a management
46   application to add its own metadata to the start of the file without
47   QEMU interference. Note that QEMU does not flush cached file
48   data/metadata at the end of migration.
50   The file migration also supports using a file that has already been
51   opened. A set of file descriptors is passed to QEMU via an "fdset"
52   (see add-fd QMP command documentation). This method allows a
53   management application to have control over the migration file
54   opening operation. There are, however, strict requirements to this
55   interface if the multifd capability is enabled:
57     - the fdset must contain two file descriptors that are not
58       duplicates between themselves;
59     - if the direct-io capability is to be used, exactly one of the
60       file descriptors must have the O_DIRECT flag set;
61     - the file must be opened with WRONLY on the migration source side
62       and RDONLY on the migration destination side.
64 - rdma migration: support is included for migration using RDMA, which
65   transports the page data using ``RDMA``, where the hardware takes
66   care of transporting the pages, and the load on the CPU is much
67   lower.  While the internals of RDMA migration are a bit different,
68   this isn't really visible outside the RAM migration code.
70 All these migration protocols use the same infrastructure to
71 save/restore state devices.  This infrastructure is shared with the
72 savevm/loadvm functionality.
74 Common infrastructure
75 =====================
77 The files, sockets or fd's that carry the migration stream are abstracted by
78 the  ``QEMUFile`` type (see ``migration/qemu-file.h``).  In most cases this
79 is connected to a subtype of ``QIOChannel`` (see ``io/``).
82 Saving the state of one device
83 ==============================
85 For most devices, the state is saved in a single call to the migration
86 infrastructure; these are *non-iterative* devices.  The data for these
87 devices is sent at the end of precopy migration, when the CPUs are paused.
88 There are also *iterative* devices, which contain a very large amount of
89 data (e.g. RAM or large tables).  See the iterative device section below.
91 General advice for device developers
92 ------------------------------------
94 - The migration state saved should reflect the device being modelled rather
95   than the way your implementation works.  That way if you change the implementation
96   later the migration stream will stay compatible.  That model may include
97   internal state that's not directly visible in a register.
99 - When saving a migration stream the device code may walk and check
100   the state of the device.  These checks might fail in various ways (e.g.
101   discovering internal state is corrupt or that the guest has done something bad).
102   Consider carefully before asserting/aborting at this point, since the
103   normal response from users is that *migration broke their VM* since it had
104   apparently been running fine until then.  In these error cases, the device
105   should log a message indicating the cause of error, and should consider
106   putting the device into an error state, allowing the rest of the VM to
107   continue execution.
109 - The migration might happen at an inconvenient point,
110   e.g. right in the middle of the guest reprogramming the device, during
111   guest reboot or shutdown or while the device is waiting for external IO.
112   It's strongly preferred that migrations do not fail in this situation,
113   since in the cloud environment migrations might happen automatically to
114   VMs that the administrator doesn't directly control.
116 - If you do need to fail a migration, ensure that sufficient information
117   is logged to identify what went wrong.
119 - The destination should treat an incoming migration stream as hostile
120   (which we do to varying degrees in the existing code).  Check that offsets
121   into buffers and the like can't cause overruns.  Fail the incoming migration
122   in the case of a corrupted stream like this.
124 - Take care with internal device state or behaviour that might become
125   migration version dependent.  For example, the order of PCI capabilities
126   is required to stay constant across migration.  Another example would
127   be that a special case handled by subsections (see below) might become
128   much more common if a default behaviour is changed.
130 - The state of the source should not be changed or destroyed by the
131   outgoing migration.  Migrations timing out or being failed by
132   higher levels of management, or failures of the destination host are
133   not unusual, and in that case the VM is restarted on the source.
134   Note that the management layer can validly revert the migration
135   even though the QEMU level of migration has succeeded as long as it
136   does it before starting execution on the destination.
138 - Buses and devices should be able to explicitly specify addresses when
139   instantiated, and management tools should use those.  For example,
140   when hot adding USB devices it's important to specify the ports
141   and addresses, since implicit ordering based on the command line order
142   may be different on the destination.  This can result in the
143   device state being loaded into the wrong device.
145 VMState
146 -------
148 Most device data can be described using the ``VMSTATE`` macros (mostly defined
149 in ``include/migration/vmstate.h``).
151 An example (from hw/input/pckbd.c)
153 .. code:: c
155   static const VMStateDescription vmstate_kbd = {
156       .name = "pckbd",
157       .version_id = 3,
158       .minimum_version_id = 3,
159       .fields = (const VMStateField[]) {
160           VMSTATE_UINT8(write_cmd, KBDState),
161           VMSTATE_UINT8(status, KBDState),
162           VMSTATE_UINT8(mode, KBDState),
163           VMSTATE_UINT8(pending, KBDState),
164           VMSTATE_END_OF_LIST()
165       }
166   };
168 We are declaring the state with name "pckbd".  The ``version_id`` is
169 3, and there are 4 uint8_t fields in the KBDState structure.  We
170 registered this ``VMSTATEDescription`` with one of the following
171 functions.  The first one will generate a device ``instance_id``
172 different for each registration.  Use the second one if you already
173 have an id that is different for each instance of the device:
175 .. code:: c
177     vmstate_register_any(NULL, &vmstate_kbd, s);
178     vmstate_register(NULL, instance_id, &vmstate_kbd, s);
180 For devices that are ``qdev`` based, we can register the device in the class
181 init function:
183 .. code:: c
185     dc->vmsd = &vmstate_kbd_isa;
187 The VMState macros take care of ensuring that the device data section
188 is formatted portably (normally big endian) and make some compile time checks
189 against the types of the fields in the structures.
191 VMState macros can include other VMStateDescriptions to store substructures
192 (see ``VMSTATE_STRUCT_``), arrays (``VMSTATE_ARRAY_``) and variable length
193 arrays (``VMSTATE_VARRAY_``).  Various other macros exist for special
194 cases.
196 Note that the format on the wire is still very raw; i.e. a VMSTATE_UINT32
197 ends up with a 4 byte bigendian representation on the wire; in the future
198 it might be possible to use a more structured format.
200 Legacy way
201 ----------
203 This way is going to disappear as soon as all current users are ported to VMSTATE;
204 although converting existing code can be tricky, and thus 'soon' is relative.
206 Each device has to register two functions, one to save the state and
207 another to load the state back.
209 .. code:: c
211   int register_savevm_live(const char *idstr,
212                            int instance_id,
213                            int version_id,
214                            SaveVMHandlers *ops,
215                            void *opaque);
217 Two functions in the ``ops`` structure are the ``save_state``
218 and ``load_state`` functions.  Notice that ``load_state`` receives a version_id
219 parameter to know what state format is receiving.  ``save_state`` doesn't
220 have a version_id parameter because it always uses the latest version.
222 Note that because the VMState macros still save the data in a raw
223 format, in many cases it's possible to replace legacy code
224 with a carefully constructed VMState description that matches the
225 byte layout of the existing code.
227 Changing migration data structures
228 ----------------------------------
230 When we migrate a device, we save/load the state as a series
231 of fields.  Sometimes, due to bugs or new functionality, we need to
232 change the state to store more/different information.  Changing the migration
233 state saved for a device can break migration compatibility unless
234 care is taken to use the appropriate techniques.  In general QEMU tries
235 to maintain forward migration compatibility (i.e. migrating from
236 QEMU n->n+1) and there are users who benefit from backward compatibility
237 as well.
239 Subsections
240 -----------
242 The most common structure change is adding new data, e.g. when adding
243 a newer form of device, or adding that state that you previously
244 forgot to migrate.  This is best solved using a subsection.
246 A subsection is "like" a device vmstate, but with a particularity, it
247 has a Boolean function that tells if that values are needed to be sent
248 or not.  If this functions returns false, the subsection is not sent.
249 Subsections have a unique name, that is looked for on the receiving
250 side.
252 On the receiving side, if we found a subsection for a device that we
253 don't understand, we just fail the migration.  If we understand all
254 the subsections, then we load the state with success.  There's no check
255 that a subsection is loaded, so a newer QEMU that knows about a subsection
256 can (with care) load a stream from an older QEMU that didn't send
257 the subsection.
259 If the new data is only needed in a rare case, then the subsection
260 can be made conditional on that case and the migration will still
261 succeed to older QEMUs in most cases.  This is OK for data that's
262 critical, but in some use cases it's preferred that the migration
263 should succeed even with the data missing.  To support this the
264 subsection can be connected to a device property and from there
265 to a versioned machine type.
267 The 'pre_load' and 'post_load' functions on subsections are only
268 called if the subsection is loaded.
270 One important note is that the outer post_load() function is called "after"
271 loading all subsections, because a newer subsection could change the same
272 value that it uses.  A flag, and the combination of outer pre_load and
273 post_load can be used to detect whether a subsection was loaded, and to
274 fall back on default behaviour when the subsection isn't present.
276 Example:
278 .. code:: c
280   static bool ide_drive_pio_state_needed(void *opaque)
281   {
282       IDEState *s = opaque;
284       return ((s->status & DRQ_STAT) != 0)
285           || (s->bus->error_status & BM_STATUS_PIO_RETRY);
286   }
288   const VMStateDescription vmstate_ide_drive_pio_state = {
289       .name = "ide_drive/pio_state",
290       .version_id = 1,
291       .minimum_version_id = 1,
292       .pre_save = ide_drive_pio_pre_save,
293       .post_load = ide_drive_pio_post_load,
294       .needed = ide_drive_pio_state_needed,
295       .fields = (const VMStateField[]) {
296           VMSTATE_INT32(req_nb_sectors, IDEState),
297           VMSTATE_VARRAY_INT32(io_buffer, IDEState, io_buffer_total_len, 1,
298                                vmstate_info_uint8, uint8_t),
299           VMSTATE_INT32(cur_io_buffer_offset, IDEState),
300           VMSTATE_INT32(cur_io_buffer_len, IDEState),
301           VMSTATE_UINT8(end_transfer_fn_idx, IDEState),
302           VMSTATE_INT32(elementary_transfer_size, IDEState),
303           VMSTATE_INT32(packet_transfer_size, IDEState),
304           VMSTATE_END_OF_LIST()
305       }
306   };
308   const VMStateDescription vmstate_ide_drive = {
309       .name = "ide_drive",
310       .version_id = 3,
311       .minimum_version_id = 0,
312       .post_load = ide_drive_post_load,
313       .fields = (const VMStateField[]) {
314           .... several fields ....
315           VMSTATE_END_OF_LIST()
316       },
317       .subsections = (const VMStateDescription * const []) {
318           &vmstate_ide_drive_pio_state,
319           NULL
320       }
321   };
323 Here we have a subsection for the pio state.  We only need to
324 save/send this state when we are in the middle of a pio operation
325 (that is what ``ide_drive_pio_state_needed()`` checks).  If DRQ_STAT is
326 not enabled, the values on that fields are garbage and don't need to
327 be sent.
329 Connecting subsections to properties
330 ------------------------------------
332 Using a condition function that checks a 'property' to determine whether
333 to send a subsection allows backward migration compatibility when
334 new subsections are added, especially when combined with versioned
335 machine types.
337 For example:
339    a) Add a new property using ``DEFINE_PROP_BOOL`` - e.g. support-foo and
340       default it to true.
341    b) Add an entry to the ``hw_compat_`` for the previous version that sets
342       the property to false.
343    c) Add a static bool  support_foo function that tests the property.
344    d) Add a subsection with a .needed set to the support_foo function
345    e) (potentially) Add an outer pre_load that sets up a default value
346       for 'foo' to be used if the subsection isn't loaded.
348 Now that subsection will not be generated when using an older
349 machine type and the migration stream will be accepted by older
350 QEMU versions.
352 Not sending existing elements
353 -----------------------------
355 Sometimes members of the VMState are no longer needed:
357   - removing them will break migration compatibility
359   - making them version dependent and bumping the version will break backward migration
360     compatibility.
362 Adding a dummy field into the migration stream is normally the best way to preserve
363 compatibility.
365 If the field really does need to be removed then:
367   a) Add a new property/compatibility/function in the same way for subsections above.
368   b) replace the VMSTATE macro with the _TEST version of the macro, e.g.:
370    ``VMSTATE_UINT32(foo, barstruct)``
372    becomes
374    ``VMSTATE_UINT32_TEST(foo, barstruct, pre_version_baz)``
376    Sometime in the future when we no longer care about the ancient versions these can be killed off.
377    Note that for backward compatibility it's important to fill in the structure with
378    data that the destination will understand.
380 Any difference in the predicates on the source and destination will end up
381 with different fields being enabled and data being loaded into the wrong
382 fields; for this reason conditional fields like this are very fragile.
384 Versions
385 --------
387 Version numbers are intended for major incompatible changes to the
388 migration of a device, and using them breaks backward-migration
389 compatibility; in general most changes can be made by adding Subsections
390 (see above) or _TEST macros (see above) which won't break compatibility.
392 Each version is associated with a series of fields saved.  The ``save_state`` always saves
393 the state as the newer version.  But ``load_state`` sometimes is able to
394 load state from an older version.
396 You can see that there are two version fields:
398 - ``version_id``: the maximum version_id supported by VMState for that device.
399 - ``minimum_version_id``: the minimum version_id that VMState is able to understand
400   for that device.
402 VMState is able to read versions from minimum_version_id to version_id.
404 There are *_V* forms of many ``VMSTATE_`` macros to load fields for version dependent fields,
405 e.g.
407 .. code:: c
409    VMSTATE_UINT16_V(ip_id, Slirp, 2),
411 only loads that field for versions 2 and newer.
413 Saving state will always create a section with the 'version_id' value
414 and thus can't be loaded by any older QEMU.
416 Massaging functions
417 -------------------
419 Sometimes, it is not enough to be able to save the state directly
420 from one structure, we need to fill the correct values there.  One
421 example is when we are using kvm.  Before saving the cpu state, we
422 need to ask kvm to copy to QEMU the state that it is using.  And the
423 opposite when we are loading the state, we need a way to tell kvm to
424 load the state for the cpu that we have just loaded from the QEMUFile.
426 The functions to do that are inside a vmstate definition, and are called:
428 - ``int (*pre_load)(void *opaque);``
430   This function is called before we load the state of one device.
432 - ``int (*post_load)(void *opaque, int version_id);``
434   This function is called after we load the state of one device.
436 - ``int (*pre_save)(void *opaque);``
438   This function is called before we save the state of one device.
440 - ``int (*post_save)(void *opaque);``
442   This function is called after we save the state of one device
443   (even upon failure, unless the call to pre_save returned an error).
445 Example: You can look at hpet.c, that uses the first three functions
446 to massage the state that is transferred.
448 The ``VMSTATE_WITH_TMP`` macro may be useful when the migration
449 data doesn't match the stored device data well; it allows an
450 intermediate temporary structure to be populated with migration
451 data and then transferred to the main structure.
453 If you use memory or portio_list API functions that update memory layout outside
454 initialization (i.e., in response to a guest action), this is a strong
455 indication that you need to call these functions in a ``post_load`` callback.
456 Examples of such API functions are:
458   - memory_region_add_subregion()
459   - memory_region_del_subregion()
460   - memory_region_set_readonly()
461   - memory_region_set_nonvolatile()
462   - memory_region_set_enabled()
463   - memory_region_set_address()
464   - memory_region_set_alias_offset()
465   - portio_list_set_address()
466   - portio_list_set_enabled()
468 Since the order of device save/restore is not defined, you must
469 avoid accessing or changing any other device's state in one of these
470 callbacks. (For instance, don't do anything that calls ``update_irq()``
471 in a ``post_load`` hook.) Otherwise, restore will not be deterministic,
472 and this will break execution record/replay.
474 Iterative device migration
475 --------------------------
477 Some devices, such as RAM or certain platform devices,
478 have large amounts of data that would mean that the CPUs would be
479 paused for too long if they were sent in one section.  For these
480 devices an *iterative* approach is taken.
482 The iterative devices generally don't use VMState macros
483 (although it may be possible in some cases) and instead use
484 qemu_put_*/qemu_get_* macros to read/write data to the stream.  Specialist
485 versions exist for high bandwidth IO.
488 An iterative device must provide:
490   - A ``save_setup`` function that initialises the data structures and
491     transmits a first section containing information on the device.  In the
492     case of RAM this transmits a list of RAMBlocks and sizes.
494   - A ``load_setup`` function that initialises the data structures on the
495     destination.
497   - A ``state_pending_exact`` function that indicates how much more
498     data we must save.  The core migration code will use this to
499     determine when to pause the CPUs and complete the migration.
501   - A ``state_pending_estimate`` function that indicates how much more
502     data we must save.  When the estimated amount is smaller than the
503     threshold, we call ``state_pending_exact``.
505   - A ``save_live_iterate`` function should send a chunk of data until
506     the point that stream bandwidth limits tell it to stop.  Each call
507     generates one section.
509   - A ``save_live_complete_precopy`` function that must transmit the
510     last section for the device containing any remaining data.
512   - A ``load_state`` function used to load sections generated by
513     any of the save functions that generate sections.
515   - ``cleanup`` functions for both save and load that are called
516     at the end of migration.
518 Note that the contents of the sections for iterative migration tend
519 to be open-coded by the devices; care should be taken in parsing
520 the results and structuring the stream to make them easy to validate.
522 Device ordering
523 ---------------
525 There are cases in which the ordering of device loading matters; for
526 example in some systems where a device may assert an interrupt during loading,
527 if the interrupt controller is loaded later then it might lose the state.
529 Some ordering is implicitly provided by the order in which the machine
530 definition creates devices, however this is somewhat fragile.
532 The ``MigrationPriority`` enum provides a means of explicitly enforcing
533 ordering.  Numerically higher priorities are loaded earlier.
534 The priority is set by setting the ``priority`` field of the top level
535 ``VMStateDescription`` for the device.
537 Stream structure
538 ================
540 The stream tries to be word and endian agnostic, allowing migration between hosts
541 of different characteristics running the same VM.
543   - Header
545     - Magic
546     - Version
547     - VM configuration section
549        - Machine type
550        - Target page bits
551   - List of sections
552     Each section contains a device, or one iteration of a device save.
554     - section type
555     - section id
556     - ID string (First section of each device)
557     - instance id (First section of each device)
558     - version id (First section of each device)
559     - <device data>
560     - Footer mark
561   - EOF mark
562   - VM Description structure
563     Consisting of a JSON description of the contents for analysis only
565 The ``device data`` in each section consists of the data produced
566 by the code described above.  For non-iterative devices they have a single
567 section; iterative devices have an initial and last section and a set
568 of parts in between.
569 Note that there is very little checking by the common code of the integrity
570 of the ``device data`` contents, that's up to the devices themselves.
571 The ``footer mark`` provides a little bit of protection for the case where
572 the receiving side reads more or less data than expected.
574 The ``ID string`` is normally unique, having been formed from a bus name
575 and device address, PCI devices and storage devices hung off PCI controllers
576 fit this pattern well.  Some devices are fixed single instances (e.g. "pc-ram").
577 Others (especially either older devices or system devices which for
578 some reason don't have a bus concept) make use of the ``instance id``
579 for otherwise identically named devices.
581 Return path
582 -----------
584 Only a unidirectional stream is required for normal migration, however a
585 ``return path`` can be created when bidirectional communication is desired.
586 This is primarily used by postcopy, but is also used to return a success
587 flag to the source at the end of migration.
589 ``qemu_file_get_return_path(QEMUFile* fwdpath)`` gives the QEMUFile* for the return
590 path.
592   Source side
594      Forward path - written by migration thread
595      Return path  - opened by main thread, read by return-path thread
597   Destination side
599      Forward path - read by main thread
600      Return path  - opened by main thread, written by main thread AND postcopy
601      thread (protected by rp_mutex)