diff options
author | Christoffer Dall <christoffer.dall@linaro.org> | 2015-11-25 10:02:16 -0800 |
---|---|---|
committer | Christoffer Dall <christoffer.dall@linaro.org> | 2016-05-20 15:39:46 +0200 |
commit | 81eeb95ddbabbb998a6b39f762bc7edaa2a979b4 (patch) | |
tree | 2a22d9c5277b74c69a158364cddaeae1f0e63cfe /include/kvm | |
parent | 64a959d66e47039833e7f3c8d7e50fd4afa078ca (diff) | |
download | linux-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 'include/kvm')
-rw-r--r-- | include/kvm/vgic/vgic.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/kvm/vgic/vgic.h b/include/kvm/vgic/vgic.h index 6ca0781ac2cc..7b6ca90861b8 100644 --- a/include/kvm/vgic/vgic.h +++ b/include/kvm/vgic/vgic.h @@ -181,6 +181,9 @@ struct vgic_cpu { u64 live_lrs; }; +int kvm_vgic_inject_irq(struct kvm *kvm, int cpuid, unsigned int intid, + bool level); + #define irqchip_in_kernel(k) (!!((k)->arch.vgic.in_kernel)) #define vgic_initialized(k) (false) #define vgic_ready(k) ((k)->arch.vgic.ready) |