]> 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)
commit0546d49d75decc3b70454db5d25405bac435d93e
tree97d97e06b56113a033ed63ce7ad16096779804f5
parent840603832db918fcf3137f8dc5b51d51fb986800
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