提交 46d702b1 编写于 作者: J Juan Quintela

migration: Make savevm.c target independent

It only needed TARGET_PAGE_SIZE/BITS/BITS_MIN values, so just export
them from exec.h
Signed-off-by: NJuan Quintela <quintela@redhat.com>
Reviewed-by: NPeter Xu <peterx@redhat.com>
Reviewed-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
上级 51180423
...@@ -146,7 +146,7 @@ obj-$(CONFIG_KVM) += kvm-all.o ...@@ -146,7 +146,7 @@ obj-$(CONFIG_KVM) += kvm-all.o
obj-y += memory.o cputlb.o obj-y += memory.o cputlb.o
obj-y += memory_mapping.o obj-y += memory_mapping.o
obj-y += dump.o obj-y += dump.o
obj-y += migration/ram.o migration/savevm.o obj-y += migration/ram.o
LIBS := $(libs_softmmu) $(LIBS) LIBS := $(libs_softmmu) $(LIBS)
# Hardware support # Hardware support
......
...@@ -3444,6 +3444,15 @@ size_t qemu_target_page_size(void) ...@@ -3444,6 +3444,15 @@ size_t qemu_target_page_size(void)
return TARGET_PAGE_SIZE; return TARGET_PAGE_SIZE;
} }
int qemu_target_page_bits(void)
{
return TARGET_PAGE_BITS;
}
int qemu_target_page_bits_min(void)
{
return TARGET_PAGE_BITS_MIN;
}
#endif #endif
/* /*
......
...@@ -15,5 +15,7 @@ ...@@ -15,5 +15,7 @@
#define EXEC_TARGET_PAGE_H #define EXEC_TARGET_PAGE_H
size_t qemu_target_page_size(void); size_t qemu_target_page_size(void);
int qemu_target_page_bits(void);
int qemu_target_page_bits_min(void);
#endif #endif
common-obj-y += migration.o socket.o fd.o exec.o common-obj-y += migration.o socket.o fd.o exec.o
common-obj-y += tls.o channel.o common-obj-y += tls.o channel.o savevm.o
common-obj-y += colo-comm.o colo.o colo-failover.o common-obj-y += colo-comm.o colo.o colo-failover.o
common-obj-y += vmstate.o vmstate-types.o page_cache.o common-obj-y += vmstate.o vmstate-types.o page_cache.o
common-obj-y += qemu-file.o common-obj-y += qemu-file.o
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "cpu.h"
#include "hw/boards.h" #include "hw/boards.h"
#include "hw/hw.h" #include "hw/hw.h"
#include "hw/qdev.h" #include "hw/qdev.h"
...@@ -288,7 +287,7 @@ static void configuration_pre_save(void *opaque) ...@@ -288,7 +287,7 @@ static void configuration_pre_save(void *opaque)
state->len = strlen(current_name); state->len = strlen(current_name);
state->name = current_name; state->name = current_name;
state->target_page_bits = TARGET_PAGE_BITS; state->target_page_bits = qemu_target_page_bits();
} }
static int configuration_pre_load(void *opaque) static int configuration_pre_load(void *opaque)
...@@ -299,7 +298,7 @@ static int configuration_pre_load(void *opaque) ...@@ -299,7 +298,7 @@ static int configuration_pre_load(void *opaque)
* predates the variable-target-page-bits support and is using the * predates the variable-target-page-bits support and is using the
* minimum possible value for this CPU. * minimum possible value for this CPU.
*/ */
state->target_page_bits = TARGET_PAGE_BITS_MIN; state->target_page_bits = qemu_target_page_bits_min();
return 0; return 0;
} }
...@@ -314,9 +313,9 @@ static int configuration_post_load(void *opaque, int version_id) ...@@ -314,9 +313,9 @@ static int configuration_post_load(void *opaque, int version_id)
return -EINVAL; return -EINVAL;
} }
if (state->target_page_bits != TARGET_PAGE_BITS) { if (state->target_page_bits != qemu_target_page_bits()) {
error_report("Received TARGET_PAGE_BITS is %d but local is %d", error_report("Received TARGET_PAGE_BITS is %d but local is %d",
state->target_page_bits, TARGET_PAGE_BITS); state->target_page_bits, qemu_target_page_bits());
return -EINVAL; return -EINVAL;
} }
...@@ -332,7 +331,8 @@ static int configuration_post_load(void *opaque, int version_id) ...@@ -332,7 +331,8 @@ static int configuration_post_load(void *opaque, int version_id)
*/ */
static bool vmstate_target_page_bits_needed(void *opaque) static bool vmstate_target_page_bits_needed(void *opaque)
{ {
return TARGET_PAGE_BITS > TARGET_PAGE_BITS_MIN; return qemu_target_page_bits()
> qemu_target_page_bits_min();
} }
static const VMStateDescription vmstate_target_page_bits = { static const VMStateDescription vmstate_target_page_bits = {
...@@ -1138,7 +1138,7 @@ void qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only) ...@@ -1138,7 +1138,7 @@ void qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only)
} }
vmdesc = qjson_new(); vmdesc = qjson_new();
json_prop_int(vmdesc, "page_size", TARGET_PAGE_SIZE); json_prop_int(vmdesc, "page_size", qemu_target_page_size());
json_start_array(vmdesc, "devices"); json_start_array(vmdesc, "devices");
QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册