Message ID | 1250079442-5163-2-git-send-email-gleb@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Aug 12, 2009 at 03:17:15PM +0300, Gleb Natapov wrote: > For device assigned it may cause host hang since ack notifier callback > enables host interrupt and guest not necessary cleared interrupt > condition in an assigned device. For PIT we should not call ack notifier > here since interrupt was not acked by a guest and should be redelivered. > > Signed-off-by: Gleb Natapov <gleb@redhat.com> > --- > arch/x86/kvm/i8259.c | 16 ---------------- > 1 files changed, 0 insertions(+), 16 deletions(-) > > diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c > index 01f1516..eb2b8b7 100644 > --- a/arch/x86/kvm/i8259.c > +++ b/arch/x86/kvm/i8259.c > @@ -225,22 +225,6 @@ int kvm_pic_read_irq(struct kvm *kvm) > > void kvm_pic_reset(struct kvm_kpic_state *s) > { > - int irq, irqbase, n; > - struct kvm *kvm = s->pics_state->irq_request_opaque; > - struct kvm_vcpu *vcpu0 = kvm->bsp_vcpu; > - > - if (s == &s->pics_state->pics[0]) > - irqbase = 0; > - else > - irqbase = 8; > - > - for (irq = 0; irq < PIC_NUM_PINS/2; irq++) { > - if (vcpu0 && kvm_apic_accept_pic_intr(vcpu0)) > - if (s->irr & (1 << irq) || s->isr & (1 << irq)) { > - n = irq + irqbase; > - kvm_notify_acked_irq(kvm, SELECT_PIC(n), n); > - } > - } > s->last_irr = 0; > s->irr = 0; > s->imr = 0; > -- > 1.6.3.3 This used to be necessary to clear pending state from i8254.c "irq_acked" logic. I think it'll break it. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c index 01f1516..eb2b8b7 100644 --- a/arch/x86/kvm/i8259.c +++ b/arch/x86/kvm/i8259.c @@ -225,22 +225,6 @@ int kvm_pic_read_irq(struct kvm *kvm) void kvm_pic_reset(struct kvm_kpic_state *s) { - int irq, irqbase, n; - struct kvm *kvm = s->pics_state->irq_request_opaque; - struct kvm_vcpu *vcpu0 = kvm->bsp_vcpu; - - if (s == &s->pics_state->pics[0]) - irqbase = 0; - else - irqbase = 8; - - for (irq = 0; irq < PIC_NUM_PINS/2; irq++) { - if (vcpu0 && kvm_apic_accept_pic_intr(vcpu0)) - if (s->irr & (1 << irq) || s->isr & (1 << irq)) { - n = irq + irqbase; - kvm_notify_acked_irq(kvm, SELECT_PIC(n), n); - } - } s->last_irr = 0; s->irr = 0; s->imr = 0;
For device assigned it may cause host hang since ack notifier callback enables host interrupt and guest not necessary cleared interrupt condition in an assigned device. For PIT we should not call ack notifier here since interrupt was not acked by a guest and should be redelivered. Signed-off-by: Gleb Natapov <gleb@redhat.com> --- arch/x86/kvm/i8259.c | 16 ---------------- 1 files changed, 0 insertions(+), 16 deletions(-)