qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v7 00/35] cmpxchg-based emulation of atomics


From: Alex Bennée
Subject: Re: [Qemu-devel] [PATCH v7 00/35] cmpxchg-based emulation of atomics
Date: Thu, 20 Oct 2016 09:50:09 +0100
User-agent: mu4e 0.9.17; emacs 25.1.50.9

Richard Henderson <address@hidden> 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 address@hidden

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 'address@hidden' failed
make: *** address@hidden 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]