summaryrefslogtreecommitdiffstats
path: root/virt/kvm/arm/vgic/vgic.h
diff options
context:
space:
mode:
authorChristoffer Dall <christoffer.dall@linaro.org>2015-11-25 10:02:16 -0800
committerChristoffer Dall <christoffer.dall@linaro.org>2016-05-20 15:39:46 +0200
commit81eeb95ddbabbb998a6b39f762bc7edaa2a979b4 (patch)
tree2a22d9c5277b74c69a158364cddaeae1f0e63cfe /virt/kvm/arm/vgic/vgic.h
parent64a959d66e47039833e7f3c8d7e50fd4afa078ca (diff)
downloadlinux-stable-81eeb95ddbabbb998a6b39f762bc7edaa2a979b4.tar.gz
linux-stable-81eeb95ddbabbb998a6b39f762bc7edaa2a979b4.tar.bz2
linux-stable-81eeb95ddbabbb998a6b39f762bc7edaa2a979b4.zip
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>
Diffstat (limited to 'virt/kvm/arm/vgic/vgic.h')
-rw-r--r--virt/kvm/arm/vgic/vgic.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/virt/kvm/arm/vgic/vgic.h b/virt/kvm/arm/vgic/vgic.h
index 61b8d226081b..c6257679e091 100644
--- a/virt/kvm/arm/vgic/vgic.h
+++ b/virt/kvm/arm/vgic/vgic.h
@@ -18,5 +18,6 @@
struct vgic_irq *vgic_get_irq(struct kvm *kvm, struct kvm_vcpu *vcpu,
u32 intid);
+bool vgic_queue_irq_unlock(struct kvm *kvm, struct vgic_irq *irq);
#endif