Juan Quintela | 20a519a | 2017-04-20 14:48:46 +0200 | [diff] [blame] | 1 | /* |
| 2 | * QEMU save vm functions |
| 3 | * |
| 4 | * Copyright (c) 2003-2008 Fabrice Bellard |
| 5 | * Copyright (c) 2009-2017 Red Hat Inc |
| 6 | * |
| 7 | * Authors: |
| 8 | * Juan Quintela <quintela@redhat.com> |
| 9 | * |
| 10 | * This work is licensed under the terms of the GNU GPL, version 2 or later. |
| 11 | * See the COPYING file in the top-level directory. |
| 12 | */ |
| 13 | |
| 14 | #ifndef MIGRATION_SAVEVM_H |
| 15 | #define MIGRATION_SAVEVM_H |
| 16 | |
Juan Quintela | c3d2e2e | 2017-04-24 17:36:46 +0200 | [diff] [blame] | 17 | #define QEMU_VM_FILE_MAGIC 0x5145564d |
| 18 | #define QEMU_VM_FILE_VERSION_COMPAT 0x00000002 |
| 19 | #define QEMU_VM_FILE_VERSION 0x00000003 |
| 20 | |
| 21 | #define QEMU_VM_EOF 0x00 |
| 22 | #define QEMU_VM_SECTION_START 0x01 |
| 23 | #define QEMU_VM_SECTION_PART 0x02 |
| 24 | #define QEMU_VM_SECTION_END 0x03 |
| 25 | #define QEMU_VM_SECTION_FULL 0x04 |
| 26 | #define QEMU_VM_SUBSECTION 0x05 |
| 27 | #define QEMU_VM_VMDESCRIPTION 0x06 |
| 28 | #define QEMU_VM_CONFIGURATION 0x07 |
| 29 | #define QEMU_VM_COMMAND 0x08 |
| 30 | #define QEMU_VM_SECTION_FOOTER 0x7e |
| 31 | |
Juan Quintela | 20a519a | 2017-04-20 14:48:46 +0200 | [diff] [blame] | 32 | bool qemu_savevm_state_blocked(Error **errp); |
Dr. David Alan Gilbert | 3af8554 | 2021-02-02 13:55:21 +0000 | [diff] [blame] | 33 | void qemu_savevm_non_migratable_list(strList **reasons); |
Avihai Horon | 08fc4cb | 2023-09-06 18:08:51 +0300 | [diff] [blame] | 34 | int qemu_savevm_state_prepare(Error **errp); |
Cédric Le Goater | 057a200 | 2024-03-20 07:49:02 +0100 | [diff] [blame] | 35 | int qemu_savevm_state_setup(QEMUFile *f, Error **errp); |
Jens Freimann | c7e0acd | 2019-10-29 12:49:02 +0100 | [diff] [blame] | 36 | bool qemu_savevm_state_guest_unplug_pending(void); |
Peter Xu | d1b8ead | 2018-05-02 18:47:31 +0800 | [diff] [blame] | 37 | int qemu_savevm_state_resume_prepare(MigrationState *s); |
Juan Quintela | 20a519a | 2017-04-20 14:48:46 +0200 | [diff] [blame] | 38 | void qemu_savevm_state_header(QEMUFile *f); |
| 39 | int qemu_savevm_state_iterate(QEMUFile *f, bool postcopy); |
| 40 | void qemu_savevm_state_cleanup(void); |
| 41 | void qemu_savevm_state_complete_postcopy(QEMUFile *f); |
Fam Zheng | a1fbe75 | 2017-06-17 00:06:58 +0800 | [diff] [blame] | 42 | int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only, |
| 43 | bool inactivate_disks); |
Juan Quintela | 24beea4 | 2023-02-08 14:48:02 +0100 | [diff] [blame] | 44 | void qemu_savevm_state_pending_exact(uint64_t *must_precopy, |
| 45 | uint64_t *can_postcopy); |
| 46 | void qemu_savevm_state_pending_estimate(uint64_t *must_precopy, |
| 47 | uint64_t *can_postcopy); |
Juan Quintela | 20a519a | 2017-04-20 14:48:46 +0200 | [diff] [blame] | 48 | void qemu_savevm_send_ping(QEMUFile *f, uint32_t value); |
| 49 | void qemu_savevm_send_open_return_path(QEMUFile *f); |
| 50 | int qemu_savevm_send_packaged(QEMUFile *f, const uint8_t *buf, size_t len); |
| 51 | void qemu_savevm_send_postcopy_advise(QEMUFile *f); |
| 52 | void qemu_savevm_send_postcopy_listen(QEMUFile *f); |
| 53 | void qemu_savevm_send_postcopy_run(QEMUFile *f); |
Peter Xu | 3f5875e | 2018-05-02 18:47:29 +0800 | [diff] [blame] | 54 | void qemu_savevm_send_postcopy_resume(QEMUFile *f); |
Peter Xu | f25d422 | 2018-05-02 18:47:27 +0800 | [diff] [blame] | 55 | void qemu_savevm_send_recv_bitmap(QEMUFile *f, char *block_name); |
Juan Quintela | 20a519a | 2017-04-20 14:48:46 +0200 | [diff] [blame] | 56 | |
| 57 | void qemu_savevm_send_postcopy_ram_discard(QEMUFile *f, const char *name, |
| 58 | uint16_t len, |
| 59 | uint64_t *start_list, |
| 60 | uint64_t *length_list); |
Zhang Chen | aad555c | 2018-09-03 12:38:47 +0800 | [diff] [blame] | 61 | void qemu_savevm_send_colo_enable(QEMUFile *f); |
Zhang Chen | 3f6df99 | 2018-09-03 12:38:54 +0800 | [diff] [blame] | 62 | void qemu_savevm_live_state(QEMUFile *f); |
| 63 | int qemu_save_device_state(QEMUFile *f); |
Juan Quintela | 20a519a | 2017-04-20 14:48:46 +0200 | [diff] [blame] | 64 | |
| 65 | int qemu_loadvm_state(QEMUFile *f); |
Juan Quintela | acb5ea8 | 2017-06-28 11:52:26 +0200 | [diff] [blame] | 66 | void qemu_loadvm_state_cleanup(void); |
Zhang Chen | 3f6df99 | 2018-09-03 12:38:54 +0800 | [diff] [blame] | 67 | int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); |
| 68 | int qemu_load_device_state(QEMUFile *f); |
Avihai Horon | 1b4adb1 | 2023-06-21 14:11:55 +0300 | [diff] [blame] | 69 | int qemu_loadvm_approve_switchover(void); |
Andrey Gruzdev | 8518278 | 2021-01-29 13:14:06 +0300 | [diff] [blame] | 70 | int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, |
| 71 | bool in_postcopy, bool inactivate_disks); |
Juan Quintela | 20a519a | 2017-04-20 14:48:46 +0200 | [diff] [blame] | 72 | |
| 73 | #endif |