[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v5 0/6] interrupt handling fixes
Hi all, this series is a reworked version of "Fix multiple issues with the interrupts on ARM": http://marc.info/?l=xen-devel&m=137211515720144 It fixes a few different issues that affect interrupt handling in Xen on ARM today: - the guest looses a vtimer interrupt notification when it sets a deadline in the past from the guest vtimer interrupt handler, before EOIing the interrupt; - Xen adds a guest irq to the LR registers twice if the guest disables and renables an interrupt before EOIing it; - Xen enables interrupts corresponding to devices assigned to dom0 before booting dom0, resulting in the possibility of receiving an interrupt and not knowing what to do with it. Changes in v5: - introduce gic_add_to_lr_pending and use it to add irqs to lr_pending; - remove the call to gic_inject_irq_stop from maintenance_interrupt; - do not remove the irq from inflight if it is still pending or visible; - introduce gic_remove_from_queues, call it from vgic_disable_irqs. Changes in v4: - move set_bit _GIC_IRQ_GUEST_VISIBLE and clear_bit _GIC_IRQ_GUEST_PENDING to gic_set_lr; - turn set_int into a bool_t; - remove raw GIC_IRQ_GUEST values; - in maintenance_interrupt if the irq is still PENDING, add it back into the lr_pending queue instead of immediately reinjecting it; - disable interrupts in gic_irq_enable; - clear IRQ_DISABLED and dsb() before writing to the GICD register. Changes in v3: - do not set the GUEST_PENDING bit for evtchn_irq if the irq is already guest visible. Changes in v2: - remove eoi variable and check on p->desc != NULL instead; - use atomic operations to modify the pending_irq status bits, remove the now unnecessary locks; - make status unsigned long; - in maintenance_interrupt only stops injecting interrupts if no new interrupts have been added to the LRs; - add a state to keep track whether the guest irq is enabled at the vgicd level; - no need to read the current GICD_ISENABLER before writing it; - protect startup and shutdown with gic and desc locks; - disable IRQs that were previously disabled. Julien Grall (2): xen/arm: Physical IRQ is not always equal to virtual IRQ xen/arm: Only enable physical IRQs when the guest asks Stefano Stabellini (4): xen/arm: track the state of guest IRQs xen/arm: do not add a second irq to the LRs if one is already present xen/arm: implement gic_irq_enable and gic_irq_disable xen/arm: disable a physical IRQ when the guest disables the corresponding IRQ xen/arch/arm/gic.c | 168 +++++++++++++++++++++++++----------------- xen/arch/arm/vgic.c | 44 +++++++++-- xen/include/asm-arm/domain.h | 37 ++++++++++ xen/include/asm-arm/gic.h | 1 + 4 files changed, 176 insertions(+), 74 deletions(-) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |