qemu/target-i386
Jan Kiszka 5d62c43a17 apic: Defer interrupt updates to VCPU thread
KVM performs TPR raising asynchronously to QEMU, specifically outside
QEMU's global lock. When an interrupt is injected into the APIC and TPR
is checked to decide if this can be delivered, a stale TPR value may be
used, causing spurious interrupts in the end.

Fix this by deferring apic_update_irq to the context of the target VCPU.
We introduce a new interrupt flag for this, CPU_INTERRUPT_POLL. When it
is set, the VCPU calls apic_poll_irq before checking for further pending
interrupts. To avoid special-casing KVM, we also implement this logic
for TCG mode.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
2012-07-10 11:31:09 +03:00
..
arch_dump.c Fix some more license versions (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
arch_memory_mapping.c Fix some more license versions (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
cc_helper_template.h x86: split condition code and shift templates 2012-06-28 20:28:08 +00:00
cc_helper.c x86: split off condition code helpers 2012-06-28 20:28:08 +00:00
cpu-qom.h target-i386: Defer MCE init 2012-05-12 14:17:52 +02:00
cpu.c kvm_pv_eoi: add flag support 2012-07-03 16:57:20 -03:00
cpu.h apic: Defer interrupt updates to VCPU thread 2012-07-10 11:31:09 +03:00
excp_helper.c x86: avoid an extern declaration 2012-06-28 20:28:08 +00:00
fpu_helper.c x86: split off FPU helpers 2012-06-28 20:28:08 +00:00
helper.c x86: avoid AREG0 for exceptions 2012-06-28 20:28:08 +00:00
helper.h x86: avoid AREG0 for exceptions 2012-06-28 20:28:08 +00:00
hyperv.c hyper-v: introduce Hyper-V support infrastructure. 2012-01-19 08:32:12 -02:00
hyperv.h hyperv: fix build on non-KVM hosts 2012-01-23 20:04:51 +00:00
int_helper.c x86: split off integer helpers 2012-06-28 20:28:08 +00:00
ioport-user.c build: move obj-TARGET-y variables to nested Makefile.objs 2012-06-07 07:17:36 +02:00
kvm.c apic: Defer interrupt updates to VCPU thread 2012-07-10 11:31:09 +03:00
machine.c target-i386: Don't overuse CPUState 2012-03-14 22:20:25 +01:00
Makefile.objs x86: rename op_helper.c to seg_helper.c 2012-06-28 20:28:09 +00:00
mem_helper.c x86: split off memory access helpers 2012-06-28 20:28:09 +00:00
misc_helper.c x86: split off misc helpers 2012-06-28 20:28:09 +00:00
ops_sse_header.h tcg: Optionally sign-extend 32-bit arguments for 64-bit hosts. 2010-06-16 11:29:11 +02:00
ops_sse.h x86: fix coding style in ops_sse.h 2012-06-28 20:28:08 +00:00
seg_helper.c x86: rename op_helper.c to seg_helper.c 2012-06-28 20:28:09 +00:00
shift_helper_template.h x86: split condition code and shift templates 2012-06-28 20:28:08 +00:00
smm_helper.c x86: split off SMM helpers 2012-06-28 20:28:09 +00:00
svm_helper.c x86: split off SVM helpers 2012-06-28 20:28:09 +00:00
svm.h Use new macro QEMU_PACKED for packed structures 2011-09-03 10:45:59 +00:00
TODO target-i386: fix {min,max}{pd,ps,sd,ss} SSE2 instructions 2012-01-11 09:55:28 +01:00
translate.c x86: improve SSE table type safety 2012-06-28 20:28:08 +00:00