diff options
author | Eric Auger <eric.auger@linaro.org> | 2015-03-04 11:14:33 +0100 |
---|---|---|
committer | Christoffer Dall <christoffer.dall@linaro.org> | 2015-03-12 15:15:32 +0100 |
commit | 01c94e64f5a6f298774bdbde435e577821119fc0 (patch) | |
tree | ed6ffc9210f18dc02dd9306095d13a39ae03f05d /virt | |
parent | df2bd1ac03dfc19e955a43f796cfe9f9cf49c75f (diff) | |
download | linux-stable-01c94e64f5a6f298774bdbde435e577821119fc0.tar.gz linux-stable-01c94e64f5a6f298774bdbde435e577821119fc0.tar.bz2 linux-stable-01c94e64f5a6f298774bdbde435e577821119fc0.zip |
KVM: introduce kvm_arch_intc_initialized and use it in irqfd
Introduce __KVM_HAVE_ARCH_INTC_INITIALIZED define and
associated kvm_arch_intc_initialized function. This latter
allows to test whether the virtual interrupt controller is initialized
and ready to accept virtual IRQ injection. On some architectures,
the virtual interrupt controller is dynamically instantiated, justifying
that kind of check.
The new function can now be used by irqfd to check whether the
virtual interrupt controller is ready on KVM_IRQFD request. If not,
KVM_IRQFD returns -EAGAIN.
Signed-off-by: Eric Auger <eric.auger@linaro.org>
Acked-by: Christoffer Dall <christoffer.dall@linaro.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Diffstat (limited to 'virt')
-rw-r--r-- | virt/kvm/eventfd.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c index 148b2392c762..fc5f43e54a80 100644 --- a/virt/kvm/eventfd.c +++ b/virt/kvm/eventfd.c @@ -311,6 +311,9 @@ kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args) unsigned int events; int idx; + if (!kvm_arch_intc_initialized(kvm)) + return -EAGAIN; + irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL); if (!irqfd) return -ENOMEM; |