On Tue, Feb 08, 2011 at 12:22:53PM -0200, Marcelo Tosatti wrote: > On Tue, Feb 08, 2011 at 02:00:37PM +0200, Gleb Natapov wrote: > > On Mon, Feb 07, 2011 at 07:40:55PM -0600, Jonathan Nieder wrote: > > > Gleb Natapov wrote: > > > > > > > Is this patch helps? > > > > > > > > diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c > > > > index 3cece05..62b1dde 100644 > > > > --- a/arch/x86/kvm/i8259.c > > > > +++ b/arch/x86/kvm/i8259.c > > > > @@ -549,6 +549,9 @@ static void pic_irq_request(struct kvm *kvm, int level) > > > > struct kvm_pic *s = pic_irqchip(kvm); > > > > int irq = pic_get_irq(&s->pics[0]); > > > > > > > > + if (s->output && !level) > > > > + s->pics[0].isr_ack = 0xff; > > > > + > > > > > > Yes, it does (tested on top of kvm/master). Thanks! > > Thanks for testing. Can you test this one too please: > > > > diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c > > index 3cece05..5528484 100644 > > --- a/arch/x86/kvm/i8259.c > > +++ b/arch/x86/kvm/i8259.c > > @@ -62,9 +62,6 @@ static void pic_unlock(struct kvm_pic *s) > > } > > > > if (!found) > > - found = s->kvm->bsp_vcpu; > > - > > - if (!found) > > return; > > > > kvm_make_request(KVM_REQ_EVENT, found); > > Gleb, > > I don't think the isr_ack logic is overly complex that it should be Well we continue to find bugs in it. > removed. For some cases it is still beneficial, see example case on > commit e48258009d941, which is not handled by kick coalescing of > kvm_vcpu_kick. I think the code I've send will not exhibit the behaviour described by this commit since in that case s->output will never become zero (kvm_apic_accept_pic_intr() should return false). > > What is the problem with Hurd exactly? The problem is not with Hurd, but with our pic emulation. PIT sends interrupt while it is unmasked in PIC, HURD never gets it (probably interrupts are disabled by vcpu), HURD masks PIT interrupt, then it unmasks it and never gets it since previous one was not acked yet and isr_ack logic prevent vcpu from been kicked again (and since KVM_REQ_EVENT is set as part of kick logic vcpu never checks interrupt availability again). -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html