diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2012-07-25 13:41:39 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2012-07-25 13:41:39 +0100 |
commit | 461825c0686e72155f80ce0618130742908522d1 (patch) | |
tree | d998cc90bad01340aa7f342a185b8c161cd28ca3 /kvm.h | |
parent | b0b0d174ec52402fdcb40599e4a6f5b0915cc5c8 (diff) |
kvm: Decouple 'interrupt injection is async' from 'kernel irqchip'
On x86 interrupt injection is asynchronous (and therefore
VCPU idle management is done in the kernel) if and only
if there is an in-kernel irqchip. On other architectures this
isn't necessarily true (they may always do asynchronous
injection), so define a new kvm_async_interrupt_injection()
function instead of misusing kvm_irqchip_in_kernel().
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'kvm.h')
-rw-r--r-- | kvm.h | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -24,13 +24,24 @@ extern int kvm_allowed; extern bool kvm_kernel_irqchip; +extern bool kvm_async_interrupt_injection; #if defined CONFIG_KVM || !defined NEED_CPU_H #define kvm_enabled() (kvm_allowed) #define kvm_irqchip_in_kernel() (kvm_kernel_irqchip) +/** + * kvm_async_interrupt_injection: + * + * Returns: true if we can inject interrupts into a KVM CPU + * asynchronously (ie by ioctl from any thread at any time) + * rather than having to do interrupt delivery synchronously + * (where the vcpu must be stopped at a suitable point first). + */ +#define kvm_async_interrupt_injection() (kvm_async_interrupt_injection) #else #define kvm_enabled() (0) #define kvm_irqchip_in_kernel() (false) +#define kvm_async_interrupt_injection() (false) #endif struct kvm_run; |