[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 09/11] kvmvapic: fix migration when VM paused and whe
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 09/11] kvmvapic: fix migration when VM paused and when not running Windows |
Date: |
Fri, 26 Sep 2014 16:38:08 +0200 |
From: Pavel Dovgalyuk <address@hidden>
This patch fixes migration by extending do_vapic_enable function. This function
called vapic_enable which read cpu number from the guest memory. When cpu
number could not be read, vapic was not enabled while loading the VM state.
This patch adds required code for cpu_number=0 to do_vapic_enable function,
because it is called only when cpu_number=0.
Signed-off-by: Pavel Dovgalyuk <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/i386/kvmvapic.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c
index 2cca7a4..2dc362b 100644
--- a/hw/i386/kvmvapic.c
+++ b/hw/i386/kvmvapic.c
@@ -732,7 +732,11 @@ static void do_vapic_enable(void *data)
VAPICROMState *s = data;
X86CPU *cpu = X86_CPU(first_cpu);
- vapic_enable(s, cpu);
+ static const uint8_t enabled = 1;
+ cpu_physical_memory_write(s->vapic_paddr + offsetof(VAPICState, enabled),
+ &enabled, sizeof(enabled));
+ apic_enable_vapic(cpu->apic_state, s->vapic_paddr);
+ s->state = VAPIC_ACTIVE;
}
static void kvmvapic_vm_state_change(void *opaque, int running,
@@ -777,7 +781,10 @@ static int vapic_post_load(void *opaque, int version_id)
}
}
- s->vmsentry = qemu_add_vm_change_state_handler(kvmvapic_vm_state_change,
s);
+ if (!s->vmsentry) {
+ s->vmsentry =
+ qemu_add_vm_change_state_handler(kvmvapic_vm_state_change, s);
+ }
return 0;
}
--
2.1.0
- [Qemu-devel] [PULL 00/11] KVM (and more) patches for 2014-09-26, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 01/11] pit: fix pit interrupt can't inject into vm after migration, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 02/11] Introduce cpu_clean_all_dirty, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 04/11] kvmclock: Ensure time in migration never goes backward, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 03/11] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 05/11] hw/dma/i8257: Silence phony error message, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 06/11] target-i386: update fp status fix, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 08/11] serial: check if backed by a physical serial port at realize time, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 07/11] serial: reset state at startup, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 10/11] po: fix conflict with %.mo rule in rules.mak, Paolo Bonzini, 2014/09/26
- [Qemu-devel] [PULL 09/11] kvmvapic: fix migration when VM paused and when not running Windows,
Paolo Bonzini <=
- [Qemu-devel] [PULL 11/11] kvm/valgrind: don't mark memory as initialized, Paolo Bonzini, 2014/09/26
- Re: [Qemu-devel] [PULL 00/11] KVM (and more) patches for 2014-09-26, Peter Maydell, 2014/09/26