Lines Matching full:se

673     SaveStateEntry *se;  in calculate_new_instance_id()  local
676 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in calculate_new_instance_id()
677 if (strcmp(idstr, se->idstr) == 0 in calculate_new_instance_id()
678 && instance_id <= se->instance_id) { in calculate_new_instance_id()
679 instance_id = se->instance_id + 1; in calculate_new_instance_id()
689 SaveStateEntry *se; in calculate_compat_instance_id() local
692 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in calculate_compat_instance_id()
693 if (!se->compat) { in calculate_compat_instance_id()
697 if (strcmp(idstr, se->compat->idstr) == 0 in calculate_compat_instance_id()
698 && instance_id <= se->compat->instance_id) { in calculate_compat_instance_id()
699 instance_id = se->compat->instance_id + 1; in calculate_compat_instance_id()
705 static inline MigrationPriority save_state_priority(SaveStateEntry *se) in save_state_priority() argument
707 if (se->vmsd) { in save_state_priority()
708 return se->vmsd->priority; in save_state_priority()
716 SaveStateEntry *se; in savevm_state_handler_insert() local
734 se = savevm_state.handler_pri_head[i]; in savevm_state_handler_insert()
735 if (se != NULL) { in savevm_state_handler_insert()
736 assert(save_state_priority(se) < priority); in savevm_state_handler_insert()
742 QTAILQ_INSERT_BEFORE(se, nse, entry); in savevm_state_handler_insert()
752 static void savevm_state_handler_remove(SaveStateEntry *se) in savevm_state_handler_remove() argument
755 MigrationPriority priority = save_state_priority(se); in savevm_state_handler_remove()
757 if (se == savevm_state.handler_pri_head[priority]) { in savevm_state_handler_remove()
758 next = QTAILQ_NEXT(se, entry); in savevm_state_handler_remove()
765 QTAILQ_REMOVE(&savevm_state.handlers, se, entry); in savevm_state_handler_remove()
778 SaveStateEntry *se; in register_savevm_live() local
780 se = g_new0(SaveStateEntry, 1); in register_savevm_live()
781 se->version_id = version_id; in register_savevm_live()
782 se->section_id = savevm_state.global_section_id++; in register_savevm_live()
783 se->ops = ops; in register_savevm_live()
784 se->opaque = opaque; in register_savevm_live()
785 se->vmsd = NULL; in register_savevm_live()
788 se->is_ram = 1; in register_savevm_live()
791 pstrcat(se->idstr, sizeof(se->idstr), idstr); in register_savevm_live()
794 se->instance_id = calculate_new_instance_id(se->idstr); in register_savevm_live()
796 se->instance_id = instance_id; in register_savevm_live()
798 assert(!se->compat || se->instance_id == 0); in register_savevm_live()
799 savevm_state_handler_insert(se); in register_savevm_live()
805 SaveStateEntry *se, *new_se; in unregister_savevm() local
818 QTAILQ_FOREACH_SAFE(se, &savevm_state.handlers, entry, new_se) { in unregister_savevm()
819 if (strcmp(se->idstr, id) == 0 && se->opaque == opaque) { in unregister_savevm()
820 savevm_state_handler_remove(se); in unregister_savevm()
821 g_free(se->compat); in unregister_savevm()
822 g_free(se); in unregister_savevm()
870 SaveStateEntry *se; in vmstate_register_with_alias_id() local
875 se = g_new0(SaveStateEntry, 1); in vmstate_register_with_alias_id()
876 se->version_id = vmsd->version_id; in vmstate_register_with_alias_id()
877 se->section_id = savevm_state.global_section_id++; in vmstate_register_with_alias_id()
878 se->opaque = opaque; in vmstate_register_with_alias_id()
879 se->vmsd = vmsd; in vmstate_register_with_alias_id()
880 se->alias_id = alias_id; in vmstate_register_with_alias_id()
885 if (snprintf(se->idstr, sizeof(se->idstr), "%s/", id) >= in vmstate_register_with_alias_id()
886 sizeof(se->idstr)) { in vmstate_register_with_alias_id()
889 g_free(se); in vmstate_register_with_alias_id()
895 se->compat = g_new0(CompatEntry, 1); in vmstate_register_with_alias_id()
896 pstrcpy(se->compat->idstr, sizeof(se->compat->idstr), vmsd->name); in vmstate_register_with_alias_id()
897 se->compat->instance_id = instance_id == VMSTATE_INSTANCE_ID_ANY ? in vmstate_register_with_alias_id()
902 pstrcat(se->idstr, sizeof(se->idstr), vmsd->name); in vmstate_register_with_alias_id()
905 se->instance_id = calculate_new_instance_id(se->idstr); in vmstate_register_with_alias_id()
907 se->instance_id = instance_id; in vmstate_register_with_alias_id()
914 assert(!se->compat || se->instance_id == 0); in vmstate_register_with_alias_id()
915 savevm_state_handler_insert(se); in vmstate_register_with_alias_id()
922 SaveStateEntry *se, *new_se; in vmstate_unregister() local
924 QTAILQ_FOREACH_SAFE(se, &savevm_state.handlers, entry, new_se) { in vmstate_unregister()
925 if (se->vmsd == vmsd && se->opaque == opaque) { in vmstate_unregister()
926 savevm_state_handler_remove(se); in vmstate_unregister()
927 g_free(se->compat); in vmstate_unregister()
928 g_free(se); in vmstate_unregister()
933 static int vmstate_load(QEMUFile *f, SaveStateEntry *se) in vmstate_load() argument
935 trace_vmstate_load(se->idstr, se->vmsd ? se->vmsd->name : "(old)"); in vmstate_load()
936 if (!se->vmsd) { /* Old style */ in vmstate_load()
937 return se->ops->load_state(f, se->opaque, se->load_version_id); in vmstate_load()
939 return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id); in vmstate_load()
942 static void vmstate_save_old_style(QEMUFile *f, SaveStateEntry *se, in vmstate_save_old_style() argument
946 se->ops->save_state(f, se->opaque); in vmstate_save_old_style()
964 static void save_section_header(QEMUFile *f, SaveStateEntry *se, in save_section_header() argument
968 qemu_put_be32(f, se->section_id); in save_section_header()
973 size_t len = strlen(se->idstr); in save_section_header()
975 qemu_put_buffer(f, (uint8_t *)se->idstr, len); in save_section_header()
977 qemu_put_be32(f, se->instance_id); in save_section_header()
978 qemu_put_be32(f, se->version_id); in save_section_header()
986 static void save_section_footer(QEMUFile *f, SaveStateEntry *se) in save_section_footer() argument
990 qemu_put_be32(f, se->section_id); in save_section_footer()
994 static int vmstate_save(QEMUFile *f, SaveStateEntry *se, JSONWriter *vmdesc, in vmstate_save() argument
999 if ((!se->ops || !se->ops->save_state) && !se->vmsd) { in vmstate_save()
1002 if (se->vmsd && !vmstate_section_needed(se->vmsd, se->opaque)) { in vmstate_save()
1003 trace_savevm_section_skip(se->idstr, se->section_id); in vmstate_save()
1007 trace_savevm_section_start(se->idstr, se->section_id); in vmstate_save()
1008 save_section_header(f, se, QEMU_VM_SECTION_FULL); in vmstate_save()
1011 json_writer_str(vmdesc, "name", se->idstr); in vmstate_save()
1012 json_writer_int64(vmdesc, "instance_id", se->instance_id); in vmstate_save()
1015 trace_vmstate_save(se->idstr, se->vmsd ? se->vmsd->name : "(old)"); in vmstate_save()
1016 if (!se->vmsd) { in vmstate_save()
1017 vmstate_save_old_style(f, se, vmdesc); in vmstate_save()
1019 ret = vmstate_save_state_with_err(f, se->vmsd, se->opaque, vmdesc, in vmstate_save()
1026 trace_savevm_section_end(se->idstr, se->section_id, 0); in vmstate_save()
1027 save_section_footer(f, se); in vmstate_save()
1206 SaveStateEntry *se; in qemu_savevm_state_blocked() local
1208 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_blocked()
1209 if (se->vmsd && se->vmsd->unmigratable) { in qemu_savevm_state_blocked()
1211 se->idstr); in qemu_savevm_state_blocked()
1220 SaveStateEntry *se; in qemu_savevm_non_migratable_list() local
1222 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_non_migratable_list()
1223 if (se->vmsd && se->vmsd->unmigratable) { in qemu_savevm_non_migratable_list()
1226 se->idstr)); in qemu_savevm_non_migratable_list()
1259 SaveStateEntry *se; in qemu_savevm_state_guest_unplug_pending() local
1261 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_guest_unplug_pending()
1262 if (se->vmsd && se->vmsd->dev_unplug_pending && in qemu_savevm_state_guest_unplug_pending()
1263 se->vmsd->dev_unplug_pending(se->opaque)) { in qemu_savevm_state_guest_unplug_pending()
1273 SaveStateEntry *se; in qemu_savevm_state_prepare() local
1276 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_prepare()
1277 if (!se->ops || !se->ops->save_prepare) { in qemu_savevm_state_prepare()
1280 if (se->ops->is_active) { in qemu_savevm_state_prepare()
1281 if (!se->ops->is_active(se->opaque)) { in qemu_savevm_state_prepare()
1286 ret = se->ops->save_prepare(se->opaque, errp); in qemu_savevm_state_prepare()
1299 SaveStateEntry *se; in qemu_savevm_state_setup() local
1306 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_setup()
1307 if (se->vmsd && se->vmsd->early_setup) { in qemu_savevm_state_setup()
1308 ret = vmstate_save(f, se, ms->vmdesc, errp); in qemu_savevm_state_setup()
1317 if (!se->ops || !se->ops->save_setup) { in qemu_savevm_state_setup()
1320 if (se->ops->is_active) { in qemu_savevm_state_setup()
1321 if (!se->ops->is_active(se->opaque)) { in qemu_savevm_state_setup()
1325 save_section_header(f, se, QEMU_VM_SECTION_START); in qemu_savevm_state_setup()
1327 ret = se->ops->save_setup(f, se->opaque, errp); in qemu_savevm_state_setup()
1328 save_section_footer(f, se); in qemu_savevm_state_setup()
1345 SaveStateEntry *se; in qemu_savevm_state_resume_prepare() local
1350 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_resume_prepare()
1351 if (!se->ops || !se->ops->resume_prepare) { in qemu_savevm_state_resume_prepare()
1354 if (se->ops->is_active) { in qemu_savevm_state_resume_prepare()
1355 if (!se->ops->is_active(se->opaque)) { in qemu_savevm_state_resume_prepare()
1359 ret = se->ops->resume_prepare(s, se->opaque); in qemu_savevm_state_resume_prepare()
1376 SaveStateEntry *se; in qemu_savevm_state_iterate() local
1381 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_iterate()
1382 if (!se->ops || !se->ops->save_live_iterate) { in qemu_savevm_state_iterate()
1385 if (se->ops->is_active && in qemu_savevm_state_iterate()
1386 !se->ops->is_active(se->opaque)) { in qemu_savevm_state_iterate()
1389 if (se->ops->is_active_iterate && in qemu_savevm_state_iterate()
1390 !se->ops->is_active_iterate(se->opaque)) { in qemu_savevm_state_iterate()
1400 !(se->ops->has_postcopy && se->ops->has_postcopy(se->opaque))) { in qemu_savevm_state_iterate()
1406 trace_savevm_section_start(se->idstr, se->section_id); in qemu_savevm_state_iterate()
1408 save_section_header(f, se, QEMU_VM_SECTION_PART); in qemu_savevm_state_iterate()
1410 ret = se->ops->save_live_iterate(f, se->opaque); in qemu_savevm_state_iterate()
1411 trace_savevm_section_end(se->idstr, se->section_id, ret); in qemu_savevm_state_iterate()
1412 save_section_footer(f, se); in qemu_savevm_state_iterate()
1417 se->section_id, se->idstr, ret); in qemu_savevm_state_iterate()
1443 SaveStateEntry *se; in qemu_savevm_state_complete_postcopy() local
1446 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_complete_postcopy()
1447 if (!se->ops || !se->ops->save_live_complete_postcopy) { in qemu_savevm_state_complete_postcopy()
1450 if (se->ops->is_active) { in qemu_savevm_state_complete_postcopy()
1451 if (!se->ops->is_active(se->opaque)) { in qemu_savevm_state_complete_postcopy()
1455 trace_savevm_section_start(se->idstr, se->section_id); in qemu_savevm_state_complete_postcopy()
1458 qemu_put_be32(f, se->section_id); in qemu_savevm_state_complete_postcopy()
1460 ret = se->ops->save_live_complete_postcopy(f, se->opaque); in qemu_savevm_state_complete_postcopy()
1461 trace_savevm_section_end(se->idstr, se->section_id, ret); in qemu_savevm_state_complete_postcopy()
1462 save_section_footer(f, se); in qemu_savevm_state_complete_postcopy()
1477 SaveStateEntry *se; in qemu_savevm_state_complete_precopy_iterable() local
1480 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_complete_precopy_iterable()
1481 if (!se->ops || in qemu_savevm_state_complete_precopy_iterable()
1482 (in_postcopy && se->ops->has_postcopy && in qemu_savevm_state_complete_precopy_iterable()
1483 se->ops->has_postcopy(se->opaque)) || in qemu_savevm_state_complete_precopy_iterable()
1484 !se->ops->save_live_complete_precopy) { in qemu_savevm_state_complete_precopy_iterable()
1488 if (se->ops->is_active) { in qemu_savevm_state_complete_precopy_iterable()
1489 if (!se->ops->is_active(se->opaque)) { in qemu_savevm_state_complete_precopy_iterable()
1495 trace_savevm_section_start(se->idstr, se->section_id); in qemu_savevm_state_complete_precopy_iterable()
1497 save_section_header(f, se, QEMU_VM_SECTION_END); in qemu_savevm_state_complete_precopy_iterable()
1499 ret = se->ops->save_live_complete_precopy(f, se->opaque); in qemu_savevm_state_complete_precopy_iterable()
1500 trace_savevm_section_end(se->idstr, se->section_id, ret); in qemu_savevm_state_complete_precopy_iterable()
1501 save_section_footer(f, se); in qemu_savevm_state_complete_precopy_iterable()
1507 trace_vmstate_downtime_save("iterable", se->idstr, se->instance_id, in qemu_savevm_state_complete_precopy_iterable()
1524 SaveStateEntry *se; in qemu_savevm_state_complete_precopy_non_iterable() local
1528 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_complete_precopy_non_iterable()
1529 if (se->vmsd && se->vmsd->early_setup) { in qemu_savevm_state_complete_precopy_non_iterable()
1536 ret = vmstate_save(f, se, vmdesc, &local_err); in qemu_savevm_state_complete_precopy_non_iterable()
1545 trace_vmstate_downtime_save("non-iterable", se->idstr, se->instance_id, in qemu_savevm_state_complete_precopy_non_iterable()
1629 SaveStateEntry *se; in qemu_savevm_state_pending_estimate() local
1634 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_pending_estimate()
1635 if (!se->ops || !se->ops->state_pending_estimate) { in qemu_savevm_state_pending_estimate()
1638 if (se->ops->is_active) { in qemu_savevm_state_pending_estimate()
1639 if (!se->ops->is_active(se->opaque)) { in qemu_savevm_state_pending_estimate()
1643 se->ops->state_pending_estimate(se->opaque, must_precopy, can_postcopy); in qemu_savevm_state_pending_estimate()
1650 SaveStateEntry *se; in qemu_savevm_state_pending_exact() local
1655 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_pending_exact()
1656 if (!se->ops || !se->ops->state_pending_exact) { in qemu_savevm_state_pending_exact()
1659 if (se->ops->is_active) { in qemu_savevm_state_pending_exact()
1660 if (!se->ops->is_active(se->opaque)) { in qemu_savevm_state_pending_exact()
1664 se->ops->state_pending_exact(se->opaque, must_precopy, can_postcopy); in qemu_savevm_state_pending_exact()
1670 SaveStateEntry *se; in qemu_savevm_state_cleanup() local
1678 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_savevm_state_cleanup()
1679 if (se->ops && se->ops->save_cleanup) { in qemu_savevm_state_cleanup()
1680 se->ops->save_cleanup(se->opaque); in qemu_savevm_state_cleanup()
1750 SaveStateEntry *se; in qemu_save_device_state() local
1758 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_save_device_state()
1761 if (se->is_ram) { in qemu_save_device_state()
1764 ret = vmstate_save(f, se, NULL, &local_err); in qemu_save_device_state()
1779 SaveStateEntry *se; in find_se() local
1781 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in find_se()
1782 if (!strcmp(se->idstr, idstr) && in find_se()
1783 (instance_id == se->instance_id || in find_se()
1784 instance_id == se->alias_id)) in find_se()
1785 return se; in find_se()
1787 if (strstr(se->idstr, idstr) && se->compat) { in find_se()
1788 if (!strcmp(se->compat->idstr, idstr) && in find_se()
1789 (instance_id == se->compat->instance_id || in find_se()
1790 instance_id == se->alias_id)) in find_se()
1791 return se; in find_se()
2524 static bool check_section_footer(QEMUFile *f, SaveStateEntry *se) in check_section_footer() argument
2545 error_report("Missing section footer for %s", se->idstr); in check_section_footer()
2550 if (read_section_id != se->load_section_id) { in check_section_footer()
2553 se->idstr, read_section_id, se->load_section_id); in check_section_footer()
2567 SaveStateEntry *se; in qemu_loadvm_section_start_full() local
2591 se = find_se(idstr, instance_id); in qemu_loadvm_section_start_full()
2592 if (se == NULL) { in qemu_loadvm_section_start_full()
2601 if (version_id > se->version_id) { in qemu_loadvm_section_start_full()
2603 version_id, idstr, se->version_id); in qemu_loadvm_section_start_full()
2606 se->load_version_id = version_id; in qemu_loadvm_section_start_full()
2607 se->load_section_id = section_id; in qemu_loadvm_section_start_full()
2610 if (xen_enabled() && se->is_ram) { in qemu_loadvm_section_start_full()
2619 ret = vmstate_load(f, se); in qemu_loadvm_section_start_full()
2628 trace_vmstate_downtime_load("non-iterable", se->idstr, in qemu_loadvm_section_start_full()
2629 se->instance_id, end_ts - start_ts); in qemu_loadvm_section_start_full()
2632 if (!check_section_footer(f, se)) { in qemu_loadvm_section_start_full()
2645 SaveStateEntry *se; in qemu_loadvm_section_part_end() local
2658 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_loadvm_section_part_end()
2659 if (se->load_section_id == section_id) { in qemu_loadvm_section_part_end()
2663 if (se == NULL) { in qemu_loadvm_section_part_end()
2672 ret = vmstate_load(f, se); in qemu_loadvm_section_part_end()
2675 section_id, se->idstr); in qemu_loadvm_section_part_end()
2681 trace_vmstate_downtime_load("iterable", se->idstr, in qemu_loadvm_section_part_end()
2682 se->instance_id, end_ts - start_ts); in qemu_loadvm_section_part_end()
2685 if (!check_section_footer(f, se)) { in qemu_loadvm_section_part_end()
2729 SaveStateEntry *se; in qemu_loadvm_state_switchover_ack_needed() local
2731 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_loadvm_state_switchover_ack_needed()
2732 if (!se->ops || !se->ops->switchover_ack_needed) { in qemu_loadvm_state_switchover_ack_needed()
2736 if (se->ops->switchover_ack_needed(se->opaque)) { in qemu_loadvm_state_switchover_ack_needed()
2747 SaveStateEntry *se; in qemu_loadvm_state_setup() local
2751 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_loadvm_state_setup()
2752 if (!se->ops || !se->ops->load_setup) { in qemu_loadvm_state_setup()
2755 if (se->ops->is_active) { in qemu_loadvm_state_setup()
2756 if (!se->ops->is_active(se->opaque)) { in qemu_loadvm_state_setup()
2761 ret = se->ops->load_setup(f, se->opaque, errp); in qemu_loadvm_state_setup()
2764 se->idstr); in qemu_loadvm_state_setup()
2774 SaveStateEntry *se; in qemu_loadvm_state_cleanup() local
2777 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { in qemu_loadvm_state_cleanup()
2778 if (se->ops && se->ops->load_cleanup) { in qemu_loadvm_state_cleanup()
2779 se->ops->load_cleanup(se->opaque); in qemu_loadvm_state_cleanup()