aboutsummaryrefslogtreecommitdiff
path: root/exec.c
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2009-05-25 17:28:56 +0300
committerAvi Kivity <avi@redhat.com>2009-05-25 17:28:56 +0300
commit3db8b916e35608d97d53820b79a935dc48f51b4e (patch)
tree5143abf4b5fa50020fff86924611a64a7cb990dd /exec.c
parentRefactor how display drivers are selected (diff)
parentRemove unused variable (diff)
downloadqemu-kvm-3db8b916e35608d97d53820b79a935dc48f51b4e.tar.gz
qemu-kvm-3db8b916e35608d97d53820b79a935dc48f51b4e.tar.bz2
qemu-kvm-3db8b916e35608d97d53820b79a935dc48f51b4e.zip
Merge branch 'master' of git://git.sv.gnu.org/qemu
* 'master' of git://git.sv.gnu.org/qemu: (41 commits) Remove unused variable ETRAX: Removed unused struct entry and fixed Windows build. Add common BusState Fix lance segfaults Avoid errors when curl-config does not exist bios: Use the correct mask to size the PCI option ROM BAR x86: Add support for resume flag net: Fix dump time stamps Add HTTP protocol using curl v6 USB serial device support serial: fix lost character after sysrq usb-serial: implement break event. slirp: Reassign same address to same DHCP client kvm: x86: Save/restore KVM-specific CPU states kvm: Rework VCPU reset Introduce reset notifier order kvm: Fix framebuffer dirty log sync kvm: Add missing bits to support live migration kvm: Rework dirty bitmap synchronization kvm: Fix dirty log temporary buffer size ... Conflicts: Makefile configure exec.c hw/ioapic.c hw/pc.c pc-bios/bios.bin target-i386/machine.c vl.c Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'exec.c')
-rw-r--r--exec.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/exec.c b/exec.c
index 29c91fb09..e241f0547 100644
--- a/exec.c
+++ b/exec.c
@@ -527,6 +527,8 @@ static void cpu_common_save(QEMUFile *f, void *opaque)
{
CPUState *env = opaque;
+ cpu_synchronize_state(env, 0);
+
qemu_put_be32s(f, &env->halted);
qemu_put_be32s(f, &env->interrupt_request);
}
@@ -544,6 +546,7 @@ static int cpu_common_load(QEMUFile *f, void *opaque, int version_id)
version_id is increased. */
env->interrupt_request &= ~0x01;
tlb_flush(env, 1);
+ cpu_synchronize_state(env, 1);
return 0;
}
@@ -1940,12 +1943,10 @@ void cpu_physical_memory_reset_dirty(ram_addr_t start, ram_addr_t end,
int cpu_physical_memory_set_dirty_tracking(int enable)
{
- int r=0;
-
- if (kvm_enabled())
- r = kvm_physical_memory_set_dirty_tracking(enable);
- in_migration = enable;
- return r;
+ if (kvm_enabled()) {
+ return kvm_set_migration_log(enable);
+ }
+ return 0;
}
int cpu_physical_memory_get_dirty_tracking(void)
@@ -1953,10 +1954,14 @@ int cpu_physical_memory_get_dirty_tracking(void)
return in_migration;
}
-void cpu_physical_sync_dirty_bitmap(target_phys_addr_t start_addr, target_phys_addr_t end_addr)
+int cpu_physical_sync_dirty_bitmap(target_phys_addr_t start_addr,
+ target_phys_addr_t end_addr)
{
+ int ret = 0;
+
if (kvm_enabled())
- kvm_physical_sync_dirty_bitmap(start_addr, end_addr);
+ ret = kvm_physical_sync_dirty_bitmap(start_addr, end_addr);
+ return ret;
}
static inline void tlb_update_dirty(CPUTLBEntry *tlb_entry)