diff options
| author | ChenLiang | 2014-09-16 09:26:32 +0200 |
|---|---|---|
| committer | Paolo Bonzini | 2014-09-16 10:40:38 +0200 |
| commit | be894f51b6fe87b4df673fdc9613034de30eb6ca (patch) | |
| tree | 9ce66ae29fdd3d28a32dc6737d953221f5c0559f | |
| parent | Merge remote-tracking branch 'remotes/qmp-unstable/queue/qmp' into staging (diff) | |
| download | qemu-be894f51b6fe87b4df673fdc9613034de30eb6ca.tar.gz qemu-be894f51b6fe87b4df673fdc9613034de30eb6ca.tar.xz qemu-be894f51b6fe87b4df673fdc9613034de30eb6ca.zip | |
pit: fix pit interrupt can't inject into vm after migration
kvm_pit is running in kmod. kvm_pit is going to inject
interrupt to vm before cpu_synchronize_all_post_init at
dest side. vcpu will lose the pit interrupt, but
ack_irq(in kmod) has been 0. ack_irq become 1 after
vcpu responds pit interrupt. pit interruptcan inject
to vm when ack_irq is 1.
By the way, kvm_pit_vm_state_change has save and load
state of pit, so pre_save and post_load is unnecessary.
Signed-off-by: ChenLiang <chenliang88@huawei.com>
Signed-off-by: Gonglei <arei.gonglei@huawei.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| -rw-r--r-- | hw/i386/kvm/i8254.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c index 59373aaade..472af811cd 100644 --- a/hw/i386/kvm/i8254.c +++ b/hw/i386/kvm/i8254.c @@ -239,6 +239,7 @@ static void kvm_pit_vm_state_change(void *opaque, int running, if (running) { kvm_pit_update_clock_offset(s); + kvm_pit_put(PIT_COMMON(s)); s->vm_stopped = false; } else { kvm_pit_update_clock_offset(s); @@ -314,8 +315,6 @@ static void kvm_pit_class_init(ObjectClass *klass, void *data) dc->realize = kvm_pit_realizefn; k->set_channel_gate = kvm_pit_set_gate; k->get_channel_info = kvm_pit_get_channel_info; - k->pre_save = kvm_pit_get; - k->post_load = kvm_pit_put; dc->reset = kvm_pit_reset; dc->props = kvm_pit_properties; } |
