KVM: arm/arm64: vgic-new: Implement virtual IRQ injection
authorChristoffer Dall <christoffer.dall@linaro.org>
Wed, 25 Nov 2015 18:02:16 +0000 (10:02 -0800)
committerChristoffer Dall <christoffer.dall@linaro.org>
Fri, 20 May 2016 13:39:46 +0000 (15:39 +0200)
commit81eeb95ddbabbb998a6b39f762bc7edaa2a979b4
tree2a22d9c5277b74c69a158364cddaeae1f0e63cfe
parent64a959d66e47039833e7f3c8d7e50fd4afa078ca
KVM: arm/arm64: vgic-new: Implement virtual IRQ injection

Provide a vgic_queue_irq_unlock() function which decides whether a
given IRQ needs to be queued to a VCPU's ap_list.
This should be called whenever an IRQ becomes pending or enabled,
either as a result of userspace injection, from in-kernel emulated
devices like the architected timer or from MMIO accesses to the
distributor emulation.
Also provides the necessary functions to allow userland to inject an
IRQ to a guest.
Since this is the first code that starts using our locking mechanism, we
add some (hopefully) clear documentation of our locking strategy and
requirements along with this patch.

Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
include/kvm/vgic/vgic.h
virt/kvm/arm/vgic/vgic.c
virt/kvm/arm/vgic/vgic.h