From: "Alex Bennée" <alex.bennee@linaro.org>
To: Richard Henderson <rth@twiddle.net>
Cc: qemu-devel@nongnu.org, cota@braap.org
Subject: Re: [Qemu-devel] [PATCH v7 00/35] cmpxchg-based emulation of atomics
Date: Thu, 20 Oct 2016 09:50:09 +0100 [thread overview]
Message-ID: <87d1ivflq6.fsf@linaro.org> (raw)
In-Reply-To: <1476897727-791-1-git-send-email-rth@twiddle.net>
Richard Henderson <rth@twiddle.net> writes:
> I believe we're about ready for merge.
>
> Changes since v6:
> * atomic_add-bench update (Emilio).
> * Use atomic_load(__nocheck) prior to the cmpxchg in the
> reverse-endian atomic addition routines (Emilio).
> * tcg temp free-after-free in arm32 load_exclusive (Alex).
Testing is fine (I ran concurrency kits ARMv7 regression tests) but we
still seem to be having (different) problems with older compilers:
make docker-test-build@travis
gives:
CC util/qemu-thread-posix.o
In file included from /tmp/qemu-test/src/include/qom/cpu.h:29:0,
from /tmp/qemu-test/src/trace/control-internal.h:15,
from /tmp/qemu-test/src/trace/control.h:243,
from /tmp/qemu-test/src/trace/control.c:11:
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_lock’:
/tmp/qemu-test/src/include/qemu/thread.h:77:31: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/include/qemu/thread.h:77:31: note: each undeclared identifier is reported only once for each function it appears in
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_locked’:
/tmp/qemu-test/src/include/qemu/thread.h:90:27: error: ‘ptr’ undeclared (first use in this function)
In file included from /tmp/qemu-test/src/include/block/block.h:4:0,
from /tmp/qemu-test/src/include/monitor/monitor.h:6,
from /tmp/qemu-test/src/trace/control.c:28:
/tmp/qemu-test/src/include/block/aio.h: In function ‘aio_external_disabled’:
/tmp/qemu-test/src/include/block/aio.h:439:27: error: ‘ptr’ undeclared (first use in this function)
In file included from /tmp/qemu-test/src/include/block/block.h:4:0,
from /tmp/qemu-test/src/include/monitor/monitor.h:6,
from /tmp/qemu-test/src/trace/control.c:28:
/tmp/qemu-test/src/include/block/aio.h: In function ‘aio_node_check’:
/tmp/qemu-test/src/include/block/aio.h:452:44: error: ‘ptr’ undeclared (first use in this function)
make: *** [trace/control.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from /tmp/qemu-test/src/include/block/aio.h:20:0,
from /tmp/qemu-test/src/include/block/block.h:4,
from /tmp/qemu-test/src/include/monitor/monitor.h:6,
from /tmp/qemu-test/src/util/osdep.c:39:
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_lock’:
/tmp/qemu-test/src/include/qemu/thread.h:77:31: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/include/qemu/thread.h:77:31: note: each undeclared identifier is reported only once for each function it appears in
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_locked’:
/tmp/qemu-test/src/include/qemu/thread.h:90:27: error: ‘ptr’ undeclared (first use in this function)
In file included from /tmp/qemu-test/src/include/block/block.h:4:0,
from /tmp/qemu-test/src/include/monitor/monitor.h:6,
from /tmp/qemu-test/src/util/osdep.c:39:
/tmp/qemu-test/src/include/block/aio.h: In function ‘aio_external_disabled’:
/tmp/qemu-test/src/include/block/aio.h:439:27: error: ‘ptr’ undeclared (first use in this function)
In file included from /tmp/qemu-test/src/include/block/block.h:4:0,
from /tmp/qemu-test/src/include/monitor/monitor.h:6,
from /tmp/qemu-test/src/util/osdep.c:39:
/tmp/qemu-test/src/include/block/aio.h: In function ‘aio_node_check’:
/tmp/qemu-test/src/include/block/aio.h:452:44: error: ‘ptr’ undeclared (first use in this function)
make: *** [util/osdep.o] Error 1
In file included from /tmp/qemu-test/src/include/qom/cpu.h:29:0,
from /tmp/qemu-test/src/trace/control-internal.h:15,
from /tmp/qemu-test/src/trace/control.h:243,
from /tmp/qemu-test/src/trace/qmp.c:12:
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_lock’:
/tmp/qemu-test/src/include/qemu/thread.h:77:31: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/include/qemu/thread.h:77:31: note: each undeclared identifier is reported only once for each function it appears in
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_locked’:
/tmp/qemu-test/src/include/qemu/thread.h:90:27: error: ‘ptr’ undeclared (first use in this function)
make: *** [trace/qmp.o] Error 1
In file included from /tmp/qemu-test/src/util/compatfd.c:19:0:
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_lock’:
/tmp/qemu-test/src/include/qemu/thread.h:77:31: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/include/qemu/thread.h:77:31: note: each undeclared identifier is reported only once for each function it appears in
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_locked’:
/tmp/qemu-test/src/include/qemu/thread.h:90:27: error: ‘ptr’ undeclared (first use in this function)
make: *** [util/compatfd.o] Error 1
In file included from /tmp/qemu-test/src/util/qemu-thread-posix.c:18:0:
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_lock’:
/tmp/qemu-test/src/include/qemu/thread.h:77:31: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/include/qemu/thread.h:77:31: note: each undeclared identifier is reported only once for each function it appears in
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_locked’:
/tmp/qemu-test/src/include/qemu/thread.h:90:27: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/util/qemu-thread-posix.c: In function ‘qemu_event_set’:
/tmp/qemu-test/src/util/qemu-thread-posix.c:367:24: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/util/qemu-thread-posix.c: In function ‘qemu_event_reset’:
/tmp/qemu-test/src/util/qemu-thread-posix.c:379:28: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/util/qemu-thread-posix.c: In function ‘qemu_event_wait’:
/tmp/qemu-test/src/util/qemu-thread-posix.c:394:28: error: ‘ptr’ undeclared (first use in this function)
make: *** [util/qemu-thread-posix.o] Error 1
In file included from /tmp/qemu-test/src/include/block/aio.h:20:0,
from /tmp/qemu-test/src/include/sysemu/char.h:8,
from /tmp/qemu-test/src/util/event_notifier-posix.c:17:
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_lock’:
/tmp/qemu-test/src/include/qemu/thread.h:77:31: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/include/qemu/thread.h:77:31: note: each undeclared identifier is reported only once for each function it appears in
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_locked’:
/tmp/qemu-test/src/include/qemu/thread.h:90:27: error: ‘ptr’ undeclared (first use in this function)
In file included from /tmp/qemu-test/src/include/sysemu/char.h:8:0,
from /tmp/qemu-test/src/util/event_notifier-posix.c:17:
/tmp/qemu-test/src/include/block/aio.h: In function ‘aio_external_disabled’:
/tmp/qemu-test/src/include/block/aio.h:439:27: error: ‘ptr’ undeclared (first use in this function)
In file included from /tmp/qemu-test/src/include/sysemu/char.h:8:0,
from /tmp/qemu-test/src/util/event_notifier-posix.c:17:
/tmp/qemu-test/src/include/block/aio.h: In function ‘aio_node_check’:
/tmp/qemu-test/src/include/block/aio.h:452:44: error: ‘ptr’ undeclared (first use in this function)
make: *** [util/event_notifier-posix.o] Error 1
In file included from /tmp/qemu-test/src/include/block/aio.h:20:0,
from /tmp/qemu-test/src/include/qemu/main-loop.h:28,
from /tmp/qemu-test/src/include/sysemu/sysemu.h:10,
from /tmp/qemu-test/src/util/oslib-posix.c:35:
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_lock’:
/tmp/qemu-test/src/include/qemu/thread.h:77:31: error: ‘ptr’ undeclared (first use in this function)
/tmp/qemu-test/src/include/qemu/thread.h:77:31: note: each undeclared identifier is reported only once for each function it appears in
/tmp/qemu-test/src/include/qemu/thread.h: In function ‘qemu_spin_locked’:
/tmp/qemu-test/src/include/qemu/thread.h:90:27: error: ‘ptr’ undeclared (first use in this function)
In file included from /tmp/qemu-test/src/include/qemu/main-loop.h:28:0,
from /tmp/qemu-test/src/include/sysemu/sysemu.h:10,
from /tmp/qemu-test/src/util/oslib-posix.c:35:
/tmp/qemu-test/src/include/block/aio.h: In function ‘aio_external_disabled’:
/tmp/qemu-test/src/include/block/aio.h:439:27: error: ‘ptr’ undeclared (first use in this function)
In file included from /tmp/qemu-test/src/include/qemu/main-loop.h:28:0,
from /tmp/qemu-test/src/include/sysemu/sysemu.h:10,
from /tmp/qemu-test/src/util/oslib-posix.c:35:
/tmp/qemu-test/src/include/block/aio.h: In function ‘aio_node_check’:
/tmp/qemu-test/src/include/block/aio.h:452:44: error: ‘ptr’ undeclared (first use in this function)
make: *** [util/oslib-posix.o] Error 1
/home/alex/lsrc/qemu/qemu.git/tests/docker/Makefile.include:112: recipe for target 'docker-run' failed
make[1]: *** [docker-run] Error 2
make[1]: Leaving directory '/home/alex/lsrc/qemu/qemu.git'
/home/alex/lsrc/qemu/qemu.git/tests/docker/Makefile.include:143: recipe for target 'docker-run-test-build@travis' failed
make: *** [docker-run-test-build@travis] Error 2
Compilation exited abnormally with code 2 at Thu Oct 20 09:46:38
>
>
> r~
>
>
> Alex Bennée (1):
> linux-user: enable parallel code generation on clone
>
> Emilio G. Cota (18):
> atomics: add atomic_xor
> atomics: add atomic_op_fetch variants
> target-i386: emulate LOCK'ed cmpxchg using cmpxchg helpers
> target-i386: emulate LOCK'ed OP instructions using atomic helpers
> target-i386: emulate LOCK'ed INC using atomic helper
> target-i386: emulate LOCK'ed NOT using atomic helper
> target-i386: emulate LOCK'ed NEG using cmpxchg helper
> target-i386: emulate LOCK'ed XADD using atomic helper
> target-i386: emulate LOCK'ed BTX ops using atomic helpers
> target-i386: emulate XCHG using atomic helper
> target-i386: remove helper_lock()
> tests: add atomic_add-bench
> target-arm: emulate LL/SC using cmpxchg helpers
> target-arm: emulate SWP with atomic_xchg helper
> target-arm: emulate aarch64's LL/SC using cmpxchg helpers
> linux-user: remove handling of ARM's EXCP_STREX
> linux-user: remove handling of aarch64's EXCP_STREX
> target-arm: remove EXCP_STREX + cpu_exclusive_{test, info}
>
> Richard Henderson (16):
> exec: Avoid direct references to Int128 parts
> int128: Use __int128 if available
> int128: Add int128_make128
> tcg: Add EXCP_ATOMIC
> cputlb: Replace SHIFT with DATA_SIZE
> cputlb: Move probe_write out of softmmu_template.h
> cputlb: Remove includes from softmmu_template.h
> cputlb: Move most of iotlb code out of line
> cputlb: Tidy some macros
> tcg: Add atomic helpers
> tcg: Add atomic128 helpers
> tcg: Add CONFIG_ATOMIC64
> tcg: Emit barriers with parallel_cpus
> target-arm: Rearrange aa32 load and store functions
> target-alpha: Introduce MMU_PHYS_IDX
> target-alpha: Emulate LL/SC using cmpxchg helpers
>
> Makefile.objs | 2 +-
> Makefile.target | 1 +
> atomic_template.h | 215 +++++++++++++++++++++++++
> configure | 62 +++++++-
> cpu-exec-common.c | 6 +
> cpu-exec.c | 30 ++++
> cpus.c | 2 +
> cputlb.c | 203 ++++++++++++++++++++++--
> exec.c | 4 +-
> include/exec/cpu-all.h | 1 +
> include/exec/exec-all.h | 1 +
> include/qemu-common.h | 1 +
> include/qemu/atomic.h | 67 ++++++--
> include/qemu/int128.h | 171 +++++++++++++++++++-
> linux-user/main.c | 312 ++++++------------------------------
> linux-user/syscall.c | 8 +
> softmmu_template.h | 104 ++----------
> target-alpha/cpu.h | 22 +--
> target-alpha/helper.c | 14 +-
> target-alpha/helper.h | 9 --
> target-alpha/machine.c | 2 -
> target-alpha/mem_helper.c | 73 ---------
> target-alpha/translate.c | 148 +++++++++--------
> target-arm/cpu.h | 17 +-
> target-arm/helper-a64.c | 113 +++++++++++++
> target-arm/helper-a64.h | 2 +
> target-arm/internals.h | 4 +-
> target-arm/translate-a64.c | 106 ++++++-------
> target-arm/translate.c | 344 +++++++++++++++-------------------------
> target-arm/translate.h | 4 -
> target-i386/helper.h | 4 +-
> target-i386/mem_helper.c | 153 ++++++++++++------
> target-i386/translate.c | 386 +++++++++++++++++++++++++++++----------------
> tcg-runtime.c | 74 +++++++--
> tcg/tcg-op.c | 354 +++++++++++++++++++++++++++++++++++++++--
> tcg/tcg-op.h | 44 ++++++
> tcg/tcg-runtime.h | 109 +++++++++++++
> tcg/tcg.h | 85 ++++++++++
> tests/.gitignore | 1 +
> tests/Makefile.include | 4 +-
> tests/atomic_add-bench.c | 163 +++++++++++++++++++
> tests/test-int128.c | 22 +--
> translate-all.c | 1 +
> 43 files changed, 2353 insertions(+), 1095 deletions(-)
> create mode 100644 atomic_template.h
> create mode 100644 tests/atomic_add-bench.c
--
Alex Bennée
prev parent reply other threads:[~2016-10-20 8:50 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-19 17:21 [Qemu-devel] [PATCH v7 00/35] cmpxchg-based emulation of atomics Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 01/35] atomics: add atomic_xor Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 02/35] atomics: add atomic_op_fetch variants Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 03/35] exec: Avoid direct references to Int128 parts Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 04/35] int128: Use __int128 if available Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 05/35] int128: Add int128_make128 Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 07/35] linux-user: enable parallel code generation on clone Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 08/35] cputlb: Replace SHIFT with DATA_SIZE Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 09/35] cputlb: Move probe_write out of softmmu_template.h Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 10/35] cputlb: Remove includes from softmmu_template.h Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 11/35] cputlb: Move most of iotlb code out of line Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 12/35] cputlb: Tidy some macros Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 13/35] tcg: Add atomic helpers Richard Henderson
2016-10-20 10:49 ` Alex Bennée
2016-10-20 14:38 ` Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 14/35] tcg: Add atomic128 helpers Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 15/35] tcg: Add CONFIG_ATOMIC64 Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 16/35] tcg: Emit barriers with parallel_cpus Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 17/35] target-i386: emulate LOCK'ed cmpxchg using cmpxchg helpers Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 18/35] target-i386: emulate LOCK'ed OP instructions using atomic helpers Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 19/35] target-i386: emulate LOCK'ed INC using atomic helper Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 20/35] target-i386: emulate LOCK'ed NOT " Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 21/35] target-i386: emulate LOCK'ed NEG using cmpxchg helper Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 22/35] target-i386: emulate LOCK'ed XADD using atomic helper Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 23/35] target-i386: emulate LOCK'ed BTX ops using atomic helpers Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 24/35] target-i386: emulate XCHG using atomic helper Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 25/35] target-i386: remove helper_lock() Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 26/35] tests: add atomic_add-bench Richard Henderson
2016-10-19 17:21 ` [Qemu-devel] [PATCH v7 27/35] target-arm: Rearrange aa32 load and store functions Richard Henderson
2016-10-19 17:22 ` [Qemu-devel] [PATCH v7 28/35] target-arm: emulate LL/SC using cmpxchg helpers Richard Henderson
2016-10-19 17:22 ` [Qemu-devel] [PATCH v7 29/35] target-arm: emulate SWP with atomic_xchg helper Richard Henderson
2016-10-19 17:22 ` [Qemu-devel] [PATCH v7 30/35] target-arm: emulate aarch64's LL/SC using cmpxchg helpers Richard Henderson
2016-10-19 17:22 ` [Qemu-devel] [PATCH v7 31/35] linux-user: remove handling of ARM's EXCP_STREX Richard Henderson
2016-10-19 17:22 ` [Qemu-devel] [PATCH v7 32/35] linux-user: remove handling of aarch64's EXCP_STREX Richard Henderson
2016-10-19 17:22 ` [Qemu-devel] [PATCH v7 33/35] target-arm: remove EXCP_STREX + cpu_exclusive_{test, info} Richard Henderson
2016-10-19 17:22 ` [Qemu-devel] [PATCH v7 34/35] target-alpha: Introduce MMU_PHYS_IDX Richard Henderson
2016-10-19 17:22 ` [Qemu-devel] [PATCH v7 35/35] target-alpha: Emulate LL/SC using cmpxchg helpers Richard Henderson
2016-10-19 18:05 ` [Qemu-devel] [PATCH v7 06/35] tcg: Add EXCP_ATOMIC Richard Henderson
2016-10-20 8:50 ` Alex Bennée [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d1ivflq6.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=cota@braap.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.