From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] KVM: i8259: initialize IMR to 0xff on reset Date: Mon, 30 Aug 2010 16:53:12 +0300 Message-ID: <4C7BB7C8.3080205@redhat.com> References: <1283160031-13505-1-git-send-email-avi@redhat.com> <4C7BB3D0.3050906@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, Marcelo Tosatti To: Paolo Bonzini Return-path: Received: from mx1.redhat.com ([209.132.183.28]:42511 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754696Ab0H3NxO (ORCPT ); Mon, 30 Aug 2010 09:53:14 -0400 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o7UDrEfk014868 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 30 Aug 2010 09:53:14 -0400 Received: from cleopatra.tlv.redhat.com (cleopatra.tlv.redhat.com [10.35.255.11]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o7UDrDZI020568 for ; Mon, 30 Aug 2010 09:53:13 -0400 In-Reply-To: <4C7BB3D0.3050906@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 08/30/2010 04:36 PM, Paolo Bonzini wrote: > On 08/30/2010 11:20 AM, Avi Kivity wrote: >> Otherwise, a wily interrupt can slip through while the guest isn't >> prepared >> for it (and while the irq base is zero). >> >> Signed-off-by: Avi Kivity >> --- >> arch/x86/kvm/i8259.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c >> index 8d10c06..5de9ee0 100644 >> --- a/arch/x86/kvm/i8259.c >> +++ b/arch/x86/kvm/i8259.c >> @@ -275,7 +275,7 @@ void kvm_pic_reset(struct kvm_kpic_state *s) >> >> s->last_irr = 0; >> s->irr = 0; >> - s->imr = 0; >> + s->imr = 0xff; >> s->isr = 0; >> s->isr_ack = 0xff; >> s->priority_add = 0; > > Sounds sane, but the datasheet says explicitly that upon reset "The > Interrupt Mask Register is cleared"... (FWIW, I checked because it > looked like QEMU and Xen also had the same behavior of setting IMR to > zero). Hm, right. Reading the spec, the correct approach is not to do a full reset on ICW1(D4=1), instead just do what the spec says (which is different from reset). I'll try it out. -- error compiling committee.c: too many arguments to function