From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XXWfM-0004Rm-O3 for qemu-devel@nongnu.org; Fri, 26 Sep 2014 10:38:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XXWfG-0001hl-6M for qemu-devel@nongnu.org; Fri, 26 Sep 2014 10:38:36 -0400 Received: from mail-wi0-x230.google.com ([2a00:1450:400c:c05::230]:48388) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XXWfF-0001eR-VP for qemu-devel@nongnu.org; Fri, 26 Sep 2014 10:38:30 -0400 Received: by mail-wi0-f176.google.com with SMTP id n3so1171576wiv.15 for ; Fri, 26 Sep 2014 07:38:24 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Fri, 26 Sep 2014 16:38:00 +0200 Message-Id: <1411742290-2940-2-git-send-email-pbonzini@redhat.com> In-Reply-To: <1411742290-2940-1-git-send-email-pbonzini@redhat.com> References: <1411742290-2940-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 01/11] pit: fix pit interrupt can't inject into vm after migration List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: ChenLiang , Gonglei From: ChenLiang 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 Signed-off-by: Gonglei Signed-off-by: Paolo Bonzini --- hw/i386/kvm/i8254.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c index 59373aa..472af81 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; } -- 2.1.0