unicorn/qemu
Paolo Bonzini b39acfc3c6
cpu-exec: tighten barrier on TCG_EXIT_REQUESTED
This seems to have worked just fine so far on weakly-ordered
architectures, but I don't see anything that prevents the
reordering from:

store 1 to exit_request
store 1 to tcg_exit_req
load tcg_exit_req
store 0 to tcg_exit_req
load exit_request
store 0 to exit_request
store 1 to exit_request
store 1 to tcg_exit_req

to this:

store 1 to exit_request
store 1 to tcg_exit_req
load tcg_exit_req
load exit_request
store 1 to exit_request
store 1 to tcg_exit_req
store 0 to tcg_exit_req
store 0 to exit_request

therefore losing a request. It's possible that other memory barriers
(e.g. in rcu_read_unlock) are hiding it, but better safe than
sorry.

Backports commit a70fe14b7dddcb944fbd6c9f3739cd3a22089af5 from qemu
2018-03-02 08:01:08 -05:00
..
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
docs docs: clarify memory region lifecycle 2018-02-12 15:11:21 -05:00
fpu softfloat: Fix the default qNAN for target-ppc 2018-03-02 00:15:36 -05:00
hw i386: Remove AMD feature flag aliases from Opteron models 2018-03-01 23:49:04 -05:00
include arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
qapi qapi: rename QmpOutputVisitor to QObjectOutputVisitor 2018-02-27 08:05:33 -05:00
qobject qapi: rename QmpOutputVisitor to QObjectOutputVisitor 2018-02-27 08:05:33 -05:00
qom arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
scripts qapi: rename QmpOutputVisitor to QObjectOutputVisitor 2018-02-27 08:05:33 -05:00
target target-arm: Enable vPMU support under TCG mode 2018-03-02 07:58:48 -05:00
tcg tcg/i386: Handle ctpop opcode 2018-03-01 18:49:43 -05:00
util util/mmap-alloc: refactor a little bit for readability 2018-03-01 23:55:15 -05:00
aarch64.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
aarch64eb.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
armeb.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
atomic_template.h tcg: Add atomic128 helpers 2018-02-27 21:43:48 -05:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure tcg: Add CONFIG_ATOMIC64 2018-02-27 22:25:36 -05:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpu-exec-common.c tcg: Add EXCP_ATOMIC 2018-02-27 11:57:58 -05:00
cpu-exec.c cpu-exec: tighten barrier on TCG_EXIT_REQUESTED 2018-03-02 08:01:08 -05:00
cpus.c tcg: Add EXCP_ATOMIC 2018-02-27 11:57:58 -05:00
cputlb.c cputlb: drop flush_global flag from tlb_flush 2018-03-01 19:36:04 -05:00
exec.c memory: don't sign-extend 32-bit writes 2018-03-02 00:00:22 -05:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c qapi: Fix memleak in string visitors on int lists 2018-02-25 00:20:34 -05:00
HACKING import 2015-08-21 15:04:50 +08:00
header_gen.py arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
ioport.c hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
Makefile Makefile: Add a FORCE target 2018-02-24 17:03:51 -05:00
Makefile.objs tcg: Add atomic helpers 2018-02-27 15:57:47 -05:00
Makefile.target Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
memory.c cputlb: drop flush_global flag from tlb_flush 2018-03-01 19:36:04 -05:00
memory_ldst.inc.c exec: introduce memory_ldst.inc.c 2018-03-01 09:59:34 -05:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
mips64.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
mips64el.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
mipsel.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
powerpc.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
qapi-schema.json qapi: add missing colon-ending for section name 2018-03-01 09:07:10 -05:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
rules.mak rules.mak: Don't extract libs from .mo-libs in link command 2018-02-26 02:08:03 -05:00
softmmu_template.h cputlb: Remove includes from softmmu_template.h 2018-02-27 12:40:43 -05:00
sparc.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
sparc64.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00
tcg-runtime.c tcg: Add opcode for ctpop 2018-03-01 18:26:41 -05:00
translate-all.c translate-all: Avoid -Werror=switch-bool 2018-03-01 13:01:50 -05:00
translate-all.h translate-all.c: Compute L1 page table properties at runtime 2018-02-26 11:46:58 -05:00
translate-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
unicorn_common.h qom/cpu: Add MemoryRegion property 2018-02-18 21:54:50 -05:00
VERSION import 2015-08-21 15:04:50 +08:00
vl.c cpu: Support a target CPU having a variable page size 2018-02-26 12:29:08 -05:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h arm: Correctly handle watchpoints for BE32 CPUs 2018-03-02 00:24:33 -05:00