Find a file
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
audio audio/winwave: Fix typo 2012-06-15 20:58:54 +04:00
block raw-posix: Fix build without is_allocated support 2012-06-24 01:04:45 +02:00
bsd-user build: move *-user/ objects to nested Makefile.objs 2012-06-07 07:17:33 +02:00
default-configs xilinx_axi*: Share devices between microblaze and microblazeel 2012-06-15 12:44:27 +02:00
docs spapr: Add "memop" hypercall 2012-06-24 01:04:45 +02:00
fpu softfloat: Replace int16 type with int_fast16_t 2012-04-28 09:13:26 +00:00
fsdev build: move fsdev/ objects to nested Makefile.objs 2012-06-07 09:21:13 +02:00
gdb-xml
hw apic: Defer interrupt updates to VCPU thread 2012-07-10 11:31:09 +03:00
include/qemu Merge remote-tracking branch 'afaerber-or/qom-next-2' into staging 2012-06-18 10:35:16 -05:00
libcacard libcacard: build fixes 2012-06-21 20:04:24 +00:00
linux-headers kvm: Update kernel headers 2012-06-18 15:32:45 +02:00
linux-user Merge branch 'target-arm.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm 2012-06-24 10:48:01 +00:00
net qmp: include monitor.h when needed 2012-06-15 10:41:05 -03:00
pc-bios PPC: e500: dt: start with empty device tree 2012-06-24 01:04:48 +02:00
qapi qmp: do not include monitor.h from qapi-types-core.h 2012-06-15 10:41:05 -03:00
qga qemu-ga: add guest-fstrim command 2012-06-21 17:59:27 -05:00
QMP Add event notification for guest balloon changes 2012-06-15 13:34:50 -03:00
qom qom: Push error reporting to object_property_find() 2012-06-18 15:14:38 +02:00
roms pc-bios: Update OpenBIOS images 2012-05-30 17:04:41 +00:00
scripts Merge remote-tracking branch 'stefanha/trivial-patches' into staging 2012-06-26 15:09:47 -05:00
slirp build: move slirp/ objects to nested Makefile.objs 2012-06-07 09:21:15 +02:00
sysconfigs/target move CPU definitions to /usr/share/qemu/cpus-x86_64.conf (v2) 2012-05-10 12:37:57 -05:00
target-alpha build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
target-arm target-arm: Remove ARM_CPUID_* macros 2012-06-20 12:13:28 +00:00
target-cris cris: Fix NMI-flag handling on crisv10. 2012-06-15 13:21:32 +02:00
target-i386 apic: Defer interrupt updates to VCPU thread 2012-07-10 11:31:09 +03:00
target-lm32 build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
target-m68k build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
target-microblaze qemu-log: use LOG_UNIMP for some target CPU cases 2012-06-21 18:45:22 +00:00
target-mips build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
target-ppc pseries: Convert sPAPR TCEs to use generic IOMMU infrastructure 2012-06-27 16:33:25 -05:00
target-s390x Merge branch 's390-for-upstream' of git://repo.or.cz/qemu/agraf 2012-06-24 10:45:55 +00:00
target-sh4 build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
target-sparc qemu-log: use LOG_UNIMP for some target CPU cases 2012-06-21 18:45:22 +00:00
target-unicore32 build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
target-xtensa target-xtensa: switch to AREG0-free mode 2012-06-10 20:09:22 +00:00
tcg tci: don't write zero for reloc in tci_out_label 2012-06-24 12:19:24 +00:00
tests qtest: fix infinite loop when QEMU aborts abruptly 2012-06-27 16:26:59 -05:00
trace trace/simple.c: fix deprecated glib2 interface 2012-06-08 09:32:40 +01:00
ui Remove support for non-threaded VNC server 2012-06-27 16:27:00 -05:00
.gitignore
.gitmodules
.mailmap
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c aio: simplify qemu_aio_wait 2012-04-19 16:51:47 +02:00
alpha-dis.c
alpha.ld
arch_init.c arch_init: Fix AltiVec build on Darwin/ppc 2012-05-29 11:38:07 +02:00
arch_init.h eliminate arch_config_name variable 2012-05-10 12:37:55 -05:00
arm-dis.c
arm.ld
async.c async: Use bool for boolean struct members and remove a hole 2012-05-01 10:13:25 +01:00
balloon.c Add event notification for guest balloon changes 2012-06-15 13:34:50 -03:00
balloon.h Add event notification for guest balloon changes 2012-06-15 13:34:50 -03:00
bitmap.c
bitmap.h
bitops.c
bitops.h
block-migration.c
block-migration.h
block.c block: Replace bdrv_get_format() by bdrv_get_format_name() 2012-06-15 14:03:43 +02:00
block.h block: Replace bdrv_get_format() by bdrv_get_format_name() 2012-06-15 14:03:43 +02:00
block_int.h qemu-img check -r for repairing images 2012-06-15 14:03:42 +02:00
blockdev.c block: Simplify how drive_init() computes default ID 2012-06-15 14:03:42 +02:00
blockdev.h
bswap.h
bt-host.c
bt-host.h
bt-vhci.c
buffered_file.c
buffered_file.h
cache-utils.c
cache-utils.h
Changelog fix some common typos 2012-05-14 07:27:24 +02:00
cmd.c qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
cmd.h
CODING_STYLE
compatfd.c
compatfd.h
compiler.h
config.h
configure Remove support for non-threaded VNC server 2012-06-27 16:27:00 -05:00
console.c
console.h
COPYING
COPYING.LIB
coroutine-gthread.c
coroutine-sigaltstack.c Merge remote-tracking branch 'kwolf/for-anthony' into staging 2012-05-14 12:45:01 -05:00
coroutine-ucontext.c
coroutine-win32.c
cpu-all.h ppc: Move load and store helpers, switch to AREG0 free mode 2012-06-24 01:04:43 +02:00
cpu-common.h Add API to check whether a physical address is I/O address 2012-06-04 13:49:33 -03:00
cpu-defs.h w64: Fix struct CPUTLBEntry 2012-04-15 21:25:16 +02:00
cpu-exec.c apic: Defer interrupt updates to VCPU thread 2012-07-10 11:31:09 +03:00
cpus.c
cpus.h
cputlb.c cputlb: fix watchpoints handling 2012-05-12 09:14:38 +00:00
cputlb.h memory: move functions is_romd and section_addr to memory API 2012-05-01 10:45:07 +00:00
cris-dis.c
cursor.c
cursor_hidden.xpm
cursor_left_ptr.xpm
cutils.c
def-helper.h
device_tree.c dt: make setprop argument static 2012-06-24 01:04:51 +02:00
device_tree.h dt: make setprop argument static 2012-06-24 01:04:51 +02:00
dis-asm.h
disas.c fix some common typos 2012-05-14 07:27:24 +02:00
disas.h
dma-helpers.c Add a memory barrier to DMA functions 2012-06-27 16:33:26 -05:00
dma.h Add a memory barrier to DMA functions 2012-06-27 16:33:26 -05:00
dump-stub.c dump: Fix license version (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
dump.c dump: Fix license version (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
dump.h dump: Fix license version (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
dyngen-exec.h
elf.h introduce a new monitor command 'dump-guest-memory' to dump guest's memory 2012-06-04 13:49:34 -03:00
envlist.c
envlist.h
error.c error.c: don't return value for void function 2012-04-20 13:14:53 +01:00
error.h
error_int.h
event_notifier.c
event_notifier.h
exec-all.h linux-user: Fix stale tbs after mmap 2012-05-19 15:49:40 +00:00
exec-memory.h
exec-obsolete.h
exec.c qemu-log: move logging to qemu-log.c 2012-06-21 18:45:16 +00:00
gdbstub.c make gdb_id() generally avialable and rename it to cpu_index() 2012-06-04 13:49:34 -03:00
gdbstub.h make gdb_id() generally avialable and rename it to cpu_index() 2012-06-04 13:49:34 -03:00
gen-icount.h
HACKING
hmp-commands.hx qapi: convert netdev_del 2012-06-04 13:49:35 -03:00
hmp.c qmp: include monitor.h when needed 2012-06-15 10:41:05 -03:00
hmp.h qapi: convert netdev_del 2012-06-04 13:49:35 -03:00
host-utils.c
host-utils.h
hppa-dis.c
hppa.ld
i386-dis.c
i386.ld
ia64-dis.c
ia64.ld
input.c runstate: introduce suspended state 2012-05-08 14:30:09 -03:00
int128.h
iohandler.c iohandler: Use bool for boolean struct member and remove holes 2012-05-01 10:13:33 +01:00
ioport.c
ioport.h
iorange.h
iov.c
iov.h
json-lexer.c
json-lexer.h
json-parser.c
json-parser.h
json-streamer.c
json-streamer.h
kvm-all.c kvm: Don't abort on kvm_irqchip_add_msi_route() 2012-06-29 20:02:27 -03:00
kvm-stub.c kvm: Enable use of kvm_irqchip_in_kernel in hwlib code 2012-05-21 19:22:50 +03:00
kvm.h kvm: Introduce kvm_irqchip_add/remove_irqfd 2012-05-21 19:22:50 +03:00
libfdt_env.h
LICENSE
linux-aio.c aio: remove process_queue callback and qemu_aio_process_queue 2012-04-19 16:37:53 +02:00
lm32-dis.c
m68k-dis.c
m68k.ld
main-loop.c main-loop: Calculate poll timeout using timeout argument 2012-05-01 10:46:25 +00:00
main-loop.h Switch SIG_IPI to SIGUSR1 2012-05-10 08:33:34 -05:00
MAINTAINERS MAINTAINERS: Added device tree 2012-06-27 11:57:17 +02:00
Makefile Merge remote-tracking branch 'stefanha/trivial-patches' into staging 2012-06-26 15:09:47 -05:00
Makefile.dis make: automatically include dependencies in recursive subdir rules (v2) 2012-06-19 13:32:42 -05:00
Makefile.hw Makefile.hw: avoid overly large 'make clean' rm command 2012-06-22 10:34:21 +01:00
Makefile.objs qemu-log: move logging to qemu-log.c 2012-06-21 18:45:16 +00:00
Makefile.target bsd-user: fix build 2012-06-28 20:28:36 +00:00
Makefile.user Makefile.user: Define CONFIG_USER_ONLY for libuser/ 2012-06-22 09:41:31 +01:00
memory.c
memory.h memory: move functions is_romd and section_addr to memory API 2012-05-01 10:45:07 +00:00
memory_mapping-stub.c Fix some more license versions (GPL2+ instead of GPL2) 2012-06-15 10:41:05 -03:00
memory_mapping.c Fix some more license versions (GPL2+ instead of GPL2) 2012-06-15 10:41:05 -03:00
memory_mapping.h Fix some more license versions (GPL2+ instead of GPL2) 2012-06-15 10:41:05 -03:00
microblaze-dis.c
migration-exec.c
migration-fd.c
migration-tcp.c use inet_listen()/inet_connect() to support ipv6 migration 2012-05-10 12:37:57 -05:00
migration-unix.c
migration.c use inet_listen()/inet_connect() to support ipv6 migration 2012-05-10 12:37:57 -05:00
migration.h use inet_listen()/inet_connect() to support ipv6 migration 2012-05-10 12:37:57 -05:00
mips-dis.c
mips.ld
module.c
module.h
monitor.c Add rate limiting of RTC_CHANGE, BALLOON_CHANGE & WATCHDOG events 2012-06-15 13:35:00 -03:00
monitor.h Add event notification for guest balloon changes 2012-06-15 13:34:50 -03:00
nbd.c sockets: use error class to pass listen error 2012-05-10 12:37:57 -05:00
nbd.h nbd: consistently return negative errno values 2012-04-19 16:36:43 +02:00
net.c qapi: convert netdev_del 2012-06-04 13:49:35 -03:00
net.h qapi: convert netdev_del 2012-06-04 13:49:35 -03:00
notify.c
notify.h
os-posix.c os-posix: Fix build on FreeBSD 2012-04-26 13:14:58 -05:00
os-win32.c Prevent disk data loss when closing qemu 2012-06-15 14:03:42 +02:00
osdep.c Allow machines to configure the QEMU_VERSION that's exposed via hardware 2012-06-19 13:36:56 -05:00
osdep.h Allow machines to configure the QEMU_VERSION that's exposed via hardware 2012-06-19 13:36:56 -05:00
oslib-posix.c bsd-user: fix build 2012-06-28 20:28:36 +00:00
oslib-win32.c
path.c
pci-ids.txt
pflib.c
pflib.h
poison.h
posix-aio-compat.c aio: remove process_queue callback and qemu_aio_process_queue 2012-04-19 16:37:53 +02:00
ppc-dis.c
ppc.ld
ppc64.ld
qapi-schema-guest.json qemu-ga: add guest-fstrim command 2012-06-21 17:59:27 -05:00
qapi-schema-test.json
qapi-schema.json Add 'query-events' command to QMP to query async events 2012-06-04 13:49:35 -03:00
qbool.c
qbool.h
qdict-test-data.txt
qdict.c
qdict.h
qemu-aio.h aio: return "AIO in progress" state from qemu_aio_wait 2012-04-19 16:50:49 +02:00
qemu-barrier.h virtio: order index/descriptor reads 2012-04-25 10:53:47 +03:00
qemu-bridge-helper.c
qemu-char.c do not include <libutil.h> needlessly or if it doesn't exist 2012-06-09 10:30:08 +00:00
qemu-char.h
qemu-common.h qdev-properties: Introduce pci-host-devaddr. 2012-06-21 16:06:10 +00:00
qemu-config.c PPC: e500: allow users to set the /compatible property via -machine 2012-06-24 01:04:51 +02:00
qemu-config.h qemu-config: Use QEMU instead of Qemu 2012-06-22 09:41:31 +01:00
qemu-coroutine-int.h
qemu-coroutine-io.c
qemu-coroutine-lock.c
qemu-coroutine-sleep.c block: allow interrupting a co_sleep_ns 2012-04-19 16:03:27 +02:00
qemu-coroutine.c
qemu-coroutine.h
qemu-doc.texi qemu-doc: Use QEMU instead of qemu for product name 2012-05-14 07:27:24 +02:00
qemu-error.c
qemu-error.h
qemu-file.h
qemu-ga.c qemu-ga: align versioning with QEMU_VERSION 2012-05-15 09:17:06 -05:00
qemu-img-cmds.hx qemu-img check -r for repairing images 2012-06-15 14:03:42 +02:00
qemu-img.c block: Replace bdrv_get_format() by bdrv_get_format_name() 2012-06-15 14:03:43 +02:00
qemu-img.texi qemu-img: document qed format on qemu-img man page 2012-06-15 14:03:43 +02:00
qemu-io.c qemu-io: fix the alloc command 2012-05-10 10:32:13 +02:00
qemu-lock.h
qemu-log.c qemu-log: add log category for unimplemented functionality 2012-06-21 18:45:20 +00:00
qemu-log.h qemu-log: Add GCC format attribute 2012-06-24 12:16:51 +00:00
qemu-nbd.c nbd: do not include block_int.h 2012-04-19 17:19:37 +02:00
qemu-nbd.texi
qemu-objects.h
qemu-option.c qemu-option: qemu_opts_from_qdict(): use error_set() 2012-06-04 13:49:34 -03:00
qemu-option.h qemu-option: qemu_opts_from_qdict(): use error_set() 2012-06-04 13:49:34 -03:00
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx Merge remote-tracking branch 'sweil/for-1.1' into staging 2012-05-14 10:06:50 -05:00
qemu-os-posix.h
qemu-os-win32.h w64: Fix definition of setjmp 2012-04-15 21:25:16 +02:00
qemu-progress.c
qemu-queue.h
qemu-sockets.c qemu-option: qemu_opts_create(): use error_set() 2012-06-04 13:49:34 -03:00
qemu-tech.texi Drop darwin-user 2012-05-01 00:17:27 +02:00
qemu-thread-posix.c
qemu-thread-posix.h
qemu-thread-win32.c
qemu-thread-win32.h
qemu-thread.h
qemu-timer-common.c
qemu-timer.c qemu-timer: Fix wrong error message 2012-05-14 07:27:24 +02:00
qemu-timer.h qemu-timer: Move include for __FreeBSD_version to header 2012-05-08 11:14:56 -05:00
qemu-tls.h
qemu-tool.c qemu-log: cleanup 2012-06-21 18:45:18 +00:00
qemu-user.c
qemu-x509.h
qemu-xattr.h
qemu.sasl
qemu_socket.h sockets: use error class to pass listen error 2012-05-10 12:37:57 -05:00
qerror.c qerror: introduce QERR_INVALID_OPTION_GROUP 2012-06-04 13:49:34 -03:00
qerror.h qerror: introduce QERR_INVALID_OPTION_GROUP 2012-06-04 13:49:34 -03:00
qfloat.c
qfloat.h
qint.c
qint.h
qjson.c
qjson.h
qlist.c
qlist.h
qmp-commands.hx Add 'query-events' command to QMP to query async events 2012-06-04 13:49:35 -03:00
qmp.c runstate: introduce suspended state 2012-05-08 14:30:09 -03:00
qobject.h
qstring.c
qstring.h
qtest.c qtest: Fix tv_usec != long 2012-04-24 09:50:31 -05:00
qtest.h qtest: add dummy functions for user emulators 2012-04-19 18:52:35 +00:00
range.h
readline.c monitor: Fix memory leak with readline completion 2012-06-15 10:41:05 -03:00
readline.h
README
rules.mak make: automatically include dependencies in recursive subdir rules (v2) 2012-06-19 13:32:42 -05:00
s390-dis.c
s390.ld
savevm.c Merge remote-tracking branch 'afaerber-or/qom-next-2' into staging 2012-06-18 10:35:16 -05:00
sh4-dis.c
softmmu-semi.h
softmmu_defs.h
softmmu_exec.h
softmmu_header.h w64: Fix data types in softmmu*.h 2012-04-15 21:25:17 +02:00
softmmu_template.h w64: Fix data types in softmmu*.h 2012-04-15 21:25:17 +02:00
sparc-dis.c
sparc.ld
sparc64.ld
spice-qemu-char.c spice-qemu-char.c: Show what name is unsupported 2012-04-20 13:14:53 +01:00
sysemu.h
targphys.h
tcg-runtime.c
tci-dis.c
tci.c tci: Support INDEX_op_bswap64_i64 2012-06-22 10:34:21 +01:00
thunk.c
thunk.h linux-user: Fix invalid TARGET_ABI_BITS usage on ppc hosts 2012-05-01 21:47:01 +02:00
TODO
trace-events ehci: tracing improvements 2012-06-20 14:46:02 +02:00
translate-all.c
uboot_image.h
user-exec.c x86: avoid AREG0 for exceptions 2012-06-28 20:28:08 +00:00
VERSION Update version to open the 1.2 development branch 2012-06-01 16:56:16 +08:00
version.rc
vgafont.h
vl.c Allow machines to configure the QEMU_VERSION that's exposed via hardware 2012-06-19 13:36:56 -05:00
vmstate.h
x86_64.ld
xen-all.c Introduce Xen PCI Passthrough, qdevice 2012-06-21 16:06:10 +00:00
xen-mapcache.c
xen-mapcache.h
xen-stub.c

Read the documentation in qemu-doc.html or on http://wiki.qemu.org

- QEMU team