summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Xu <peterx@redhat.com>2017-06-27 12:10:16 +0800
committerJuan Quintela <quintela@redhat.com>2017-06-28 11:18:38 +0200
commit71dd4c1a5672cafe9fb89abc83fe2a962f39ec42 (patch)
tree0111227c041d0addee3baae9092c69af4d34a7ab
parent3df663e575f1876d7f3bc684f80e72fca0703d39 (diff)
downloadqemu-71dd4c1a5672cafe9fb89abc83fe2a962f39ec42.tar.gz
migration: move skip_configuration out
It was in SaveState but now moved to MigrationState altogether, reverted its meaning, then renamed to "send_configuration". Again, using HW_COMPAT_2_3 for old PC/SPAPR machines, and accel_register_prop() for xen_init(). Removing savevm_skip_configuration(). Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <1498536619-14548-8-git-send-email-peterx@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
-rw-r--r--hw/i386/pc_piix.c1
-rw-r--r--hw/ppc/spapr.c1
-rw-r--r--hw/xen/xen-common.c6
-rw-r--r--include/hw/compat.h4
-rw-r--r--include/migration/misc.h1
-rw-r--r--migration/migration.c2
-rw-r--r--migration/migration.h3
-rw-r--r--migration/savevm.c15
8 files changed, 18 insertions, 15 deletions
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 3b512974fd..488fc0a7c0 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -318,7 +318,6 @@ static void pc_compat_2_3(MachineState *machine)
if (kvm_enabled()) {
pcms->smm = ON_OFF_AUTO_OFF;
}
- savevm_skip_configuration();
}
static void pc_compat_2_2(MachineState *machine)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index f07d40a1f8..84291877ef 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3581,7 +3581,6 @@ static void spapr_machine_2_3_instance_options(MachineState *machine)
{
spapr_machine_2_4_instance_options(machine);
savevm_skip_section_footers();
- savevm_skip_configuration();
}
static void spapr_machine_2_3_class_options(MachineClass *mc)
diff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c
index 459e6ab765..1f3688d2ff 100644
--- a/hw/xen/xen-common.c
+++ b/hw/xen/xen-common.c
@@ -139,7 +139,6 @@ static int xen_init(MachineState *ms)
}
qemu_add_vm_change_state_handler(xen_change_state_handler, NULL);
- savevm_skip_configuration();
savevm_skip_section_footers();
return 0;
@@ -151,6 +150,11 @@ static GlobalProperty xen_compat_props[] = {
.property = "store-global-state",
.value = "off",
},
+ {
+ .driver = "migration",
+ .property = "send-configuration",
+ .value = "off",
+ },
{ /* end of list */ },
};
diff --git a/include/hw/compat.h b/include/hw/compat.h
index a506a74929..1a3fd9443a 100644
--- a/include/hw/compat.h
+++ b/include/hw/compat.h
@@ -183,6 +183,10 @@
.value = "off",\
},{\
.driver = "migration",\
+ .property = "send-configuration",\
+ .value = "off",\
+ },{\
+ .driver = "migration",\
.property = "store-global-state",\
.value = "off",\
},
diff --git a/include/migration/misc.h b/include/migration/misc.h
index 6ac3307529..f30db4d778 100644
--- a/include/migration/misc.h
+++ b/include/migration/misc.h
@@ -42,7 +42,6 @@ int64_t self_announce_delay(int round)
void dump_vmstate_json_to_file(FILE *out_fp);
void savevm_skip_section_footers(void);
-void savevm_skip_configuration(void);
/* migration/migration.c */
void migration_object_init(void);
diff --git a/migration/migration.c b/migration/migration.c
index 67f9e68f2e..414e14db6c 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1985,6 +1985,8 @@ static Property migration_properties[] = {
DEFINE_PROP_BOOL("store-global-state", MigrationState,
store_global_state, true),
DEFINE_PROP_BOOL("only-migratable", MigrationState, only_migratable, false),
+ DEFINE_PROP_BOOL("send-configuration", MigrationState,
+ send_configuration, true),
DEFINE_PROP_END_OF_LIST(),
};
diff --git a/migration/migration.h b/migration/migration.h
index 34377dd1db..4d4ea0debf 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -142,6 +142,9 @@ struct MigrationState
/* Whether the VM is only allowing for migratable devices */
bool only_migratable;
+
+ /* Whether we send QEMU_VM_CONFIGURATION during migration */
+ bool send_configuration;
};
void migrate_set_state(int *state, int old_state, int new_state);
diff --git a/migration/savevm.c b/migration/savevm.c
index 1499cd3f22..0a8c61f52f 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -287,7 +287,6 @@ typedef struct SaveStateEntry {
typedef struct SaveState {
QTAILQ_HEAD(, SaveStateEntry) handlers;
int global_section_id;
- bool skip_configuration;
uint32_t len;
const char *name;
uint32_t target_page_bits;
@@ -296,15 +295,8 @@ typedef struct SaveState {
static SaveState savevm_state = {
.handlers = QTAILQ_HEAD_INITIALIZER(savevm_state.handlers),
.global_section_id = 0,
- .skip_configuration = false,
};
-void savevm_skip_configuration(void)
-{
- savevm_state.skip_configuration = true;
-}
-
-
static void configuration_pre_save(void *opaque)
{
SaveState *state = opaque;
@@ -970,11 +962,11 @@ void qemu_savevm_state_header(QEMUFile *f)
qemu_put_be32(f, QEMU_VM_FILE_MAGIC);
qemu_put_be32(f, QEMU_VM_FILE_VERSION);
- if (!savevm_state.skip_configuration || enforce_config_section()) {
+ if (migrate_get_current()->send_configuration ||
+ enforce_config_section()) {
qemu_put_byte(f, QEMU_VM_CONFIGURATION);
vmstate_save_state(f, &vmstate_configuration, &savevm_state, 0);
}
-
}
void qemu_savevm_state_begin(QEMUFile *f)
@@ -1995,7 +1987,8 @@ int qemu_loadvm_state(QEMUFile *f)
return -ENOTSUP;
}
- if (!savevm_state.skip_configuration || enforce_config_section()) {
+ if (migrate_get_current()->send_configuration ||
+ enforce_config_section()) {
if (qemu_get_byte(f) != QEMU_VM_CONFIGURATION) {
error_report("Configuration section missing");
return -EINVAL;