diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2012-07-26 15:35:11 +0100 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-08-09 16:16:53 +0300 |
commit | 7ae26bd484a50810f8d29cb5399bc48108e50bec (patch) | |
tree | 46d0b974dd680e89c13fcc47f3c73e40dffc71d1 /cpus.c | |
parent | 08312a63b77df45ad056d2e8d9e2cbe8f683a23c (diff) | |
download | hqemu-7ae26bd484a50810f8d29cb5399bc48108e50bec.zip hqemu-7ae26bd484a50810f8d29cb5399bc48108e50bec.tar.gz |
kvm: Decouple 'async interrupt delivery' from 'kernel irqchip'
On x86 userspace delivers interrupts to the kernel asynchronously
(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 send interrupts
asynchronously), so define a new kvm_async_interrupts_enabled()
function instead of misusing kvm_irqchip_in_kernel().
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'cpus.c')
-rw-r--r-- | cpus.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -70,7 +70,8 @@ static bool cpu_thread_is_idle(CPUArchState *env) if (env->stopped || !runstate_is_running()) { return true; } - if (!env->halted || qemu_cpu_has_work(env) || kvm_irqchip_in_kernel()) { + if (!env->halted || qemu_cpu_has_work(env) || + kvm_async_interrupts_enabled()) { return false; } return true; |