Re: [Qemu-devel] KVM: Windows 64-bit troubles with user space irqchip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/02/2011 05:35 PM, Jan Kiszka wrote:
>
>  And yet, both are synchronized via qemu_mutex.  So we're still missing
>  something in this picture.
>
>>  Run apic_set_irq on the vcpu?
>
>  static void apic_set_irq(APICState *s, int vector_num, int trigger_mode)
>  {
>       apic_irq_delivered += !get_bit(s->irr, vector_num);
>
>       trace_apic_set_irq(apic_irq_delivered);
>
>       set_bit(s->irr, vector_num);
>
>  This is even more async with kernel irqchip
>
>       if (trigger_mode)
>           set_bit(s->tmr, vector_num);
>       else
>           reset_bit(s->tmr, vector_num);
>
>  This is protected by qemu_mutex
>
>       apic_update_irq(s);
>
>  This will be run the next time the vcpu exits, via apic_get_interrupt().

The decision to pend an IRQ (and potentially kick the vcpu) takes place
immediately in acip_update_irq. And it is based on current irr as well
as tpr. But we update again when user space returns with a new value.

Right. My current understanding is that it is correct. But I distinctly remember that I came to a different conclusion when the failure first occurred (and the conclusion was that the patch did not cause the problem, just made it much more likely to see a not-up-to-date TPR).

>
>  }
>
>  Did you check whether reverting that commit helps?
>

Just did so, and I can no longer reproduce the problem. Hmm...

At least we have a pointer.

--
error compiling committee.c: too many arguments to function

--
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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux