]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: arm/arm64: Support calling vgic_update_irq_pending from irq context
authorChristoffer Dall <cdall@linaro.org>
Sun, 16 Oct 2016 20:19:11 +0000 (22:19 +0200)
committerChristoffer Dall <christoffer.dall@linaro.org>
Mon, 6 Nov 2017 15:23:10 +0000 (16:23 +0100)
commit4f4bc303b0aaa0f2ace5e4e2e3f0b2de72197a97
tree97d97e06b56113a033ed63ce7ad16096779804f5
parentac725ad89607c9b9a0180e2381827264b19de5d4
KVM: arm/arm64: Support calling vgic_update_irq_pending from irq context

We are about to optimize our timer handling logic which involves
injecting irqs to the vgic directly from the irq handler.

Unfortunately, the injection path can take any AP list lock and irq lock
and we must therefore make sure to use spin_lock_irqsave where ever
interrupts are enabled and we are taking any of those locks, to avoid
deadlocking between process context and the ISR.

This changes a lot of the VGIC code, but the good news are that the
changes are mostly mechanical.

Acked-by: Marc Zyngier <marc,zyngier@arm.com>
Signed-off-by: Christoffer Dall <cdall@linaro.org>
virt/kvm/arm/vgic/vgic-its.c
virt/kvm/arm/vgic/vgic-mmio-v2.c
virt/kvm/arm/vgic/vgic-mmio-v3.c
virt/kvm/arm/vgic/vgic-mmio.c
virt/kvm/arm/vgic/vgic-v2.c
virt/kvm/arm/vgic/vgic-v3.c
virt/kvm/arm/vgic/vgic.c
virt/kvm/arm/vgic/vgic.h