Re: [PATCH] ARM: KVM: VGIC: fix edge vs level bugs

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

 



On Mon, 15 Oct 2012 15:38:50 -0400, Christoffer Dall
<c.dall@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> On Mon, Oct 15, 2012 at 1:47 PM, Marc Zyngier <marc.zyngier@xxxxxxx>
wrote:
>> On 15/10/12 18:39, Christoffer Dall wrote:
>>> On Mon, Oct 15, 2012 at 11:42 AM, Marc Zyngier <marc.zyngier@xxxxxxx>
>>> wrote:
>>>> Fix a number of problems in the vgic code:
>>>> - Make sure edge interrupts are getting cleared as soon as they
>>>>   are on the CPU interface
>>>> - Make sure level interrupts get cleared after they get EOId.
>>>>   Also mark it pending again if the irq_state is still high.
>>>>
>>>
>>> interesting.
>>>
>>> did this bug manifest in some incorrect behavior?
>>
>> Indeed, while driving KVM with a non-QEMU userspace, using only
>> edge-triggered interrupts - QEMU never injects any.
>>
> and the problem with level-triggered? was that was we discussed in San
> Diego or is it something more subtle?

Slightly more subtle, it did trigger once the edge bug was fixed.

The clearing of in-flight interrupts was a bit sloppy, to say the least,
and I have the feeling it worked by fluke.

The re-injection is also something that I've seen - the device injecting
interrupts back-to-back, and the GIC emulation failing to pick it up again
immediately.

I'm thinking of refactoring the code again, mostly to split between the
two possible flows - they are now quite distinct, and keeping them together
feels a bit messy and fragile.

        M.
-- 
Fast, cheap, reliable. Pick two.
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm


[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux