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

Re: [Xen-devel] [PATCH v8 13/13] gic_remove_from_queues: take a lock on the right vcpu

On 22/05/14 18:45, Stefano Stabellini wrote:
On Thu, 22 May 2014, Julien Grall wrote:
Hi Stefano,

On 22/05/14 13:32, Stefano Stabellini wrote:
At the moment gic_remove_from_queues doesn't handle the case where the
guest kernel disables an irq on a different vcpu compared to the one
currently receiving the interrupt.
Make sure to take the right vcpu lock before removing the irq from

I see the same issue with vgic_enable_irqs. We may inject to the wrong VCPU
(i.e other than 0).

I think we should have the same case in vgic_enable_irqs.

I think it would make more sense to print a warning in
vgic_distr_mmio_write GICD_ITARGETSR rather than vgic_enable_irqs.

IHMO the warning is not enougth. We may screw your state machine.

BTW, for your todo:

> +    /* TODO: evict the irq from LRs */

We should not evict the IRQ from LRs. The guest may disable the IRQ while he is in the IRQ context (and before the IRQ has been EOI). If you drop the IRQs from the LRs, this can result to a maintenance interrupt:

"If the specified Interrupt does not exist in the
List registers, the GICH_HCR.EOIcount field is incremented, potentially generating a maintenance interrupt."


Julien Grall

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.