qemu-irix/include
Peter Maydell 2ebcc590c9 Handle CPU interrupts by inline checking of a flag
Fix some of the nasty TCG race conditions and crashes by implementing
cpu_exit() as setting a flag which is checked at the start of each TB.
This avoids crashes if a thread or signal handler calls cpu_exit()
while the execution thread is itself modifying the TB graph (which
may happen in system emulation mode as well as in linux-user mode
with a multithreaded guest binary).

This fixes the crashes seen in LP:668799; however there are another
class of crashes described in LP:1098729 which stem from the fact
that in linux-user with a multithreaded guest all threads will
use and modify the same global TCG date structures (including the
generated code buffer) without any kind of locking. This means that
multithreaded guest binaries are still in the "unsupported"
category.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>

(cherry picked from commit 378df4b237)

Conflicts:
	exec.c
	include/qom/cpu.h
	translate-all.c
	include/exec/gen-icount.h

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

Conflicts:
	cpu-exec.c

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2013-05-14 15:48:21 -05:00
..
block vmdk: Allow selecting SCSI adapter in image creation 2013-02-01 14:58:28 +01:00
bt softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
char chardev: fix QemuOpts lifecycle 2013-01-16 06:58:53 +01:00
disas build: kill libdis, move disassemblers to disas/ 2012-12-19 08:29:06 +01:00
exec Handle CPU interrupts by inline checking of a flag 2013-05-14 15:48:21 -05:00
fpu softfloat: Implement uint64_to_float128 2013-01-05 10:12:50 +00:00
migration migration: make qemu_ftell() public and support writable files 2013-02-12 16:26:44 -06:00
monitor monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
net net: reduce the unnecessary memory allocation of multiqueue 2013-04-02 10:28:29 -05:00
qapi misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu Allow clock_gettime() monotonic clock to be utilized on more OS's 2013-04-06 16:38:15 -05:00
qom qom: remove object_delete 2013-02-01 15:53:11 -06:00
sysemu util: Fix compilation of envlist.c for MinGW 2013-02-02 20:13:19 +00:00
ui vga: fix byteswapping. 2013-04-02 10:34:41 -05:00
config.h janitor: move remaining public headers to include/ 2012-12-19 08:32:46 +01:00
elf.h janitor: move remaining public headers to include/ 2012-12-19 08:32:46 +01:00
libfdt_env.h fdt: Use bswapN instead of bswap_N 2013-01-12 12:22:58 +00:00
qemu-common.h cutils: unsigned int parsing functions 2013-02-04 14:38:33 -06:00
trace.h build: some simplifications for "trace/Makefile.objs" 2013-01-12 18:42:51 +01:00