xemu/include/qemu
Emilio G. Cota 15487aa132 atomics: do not emit consume barrier for atomic_rcu_read
Currently we emit a consume-load in atomic_rcu_read.  Because of
limitations in current compilers, this is overkill for non-Alpha hosts
and it is only useful to make Thread Sanitizer work.

This patch leaves the consume-load in atomic_rcu_read when
compiling with Thread Sanitizer enabled, and resorts to a
relaxed load + smp_read_barrier_depends otherwise.

On an RMO host architecture, such as aarch64, the performance
improvement of this change is easily measurable. For instance,
qht-bench performs an atomic_rcu_read on every lookup. Performance
before and after applying this patch:

$ tests/qht-bench -d 5 -n 1
Before: 9.78 MT/s
After:  10.96 MT/s

Signed-off-by: Emilio G. Cota <cota@braap.org>
Message-Id: <1464120374-8950-4-git-send-email-cota@braap.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2016-05-29 09:11:11 +02:00
..
acl.h misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
atomic.h atomics: do not emit consume barrier for atomic_rcu_read 2016-05-29 09:11:11 +02:00
base64.h util: add base64 decoding function 2015-12-18 16:25:08 +00:00
bcd.h util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
bitmap.h include: Clean up includes 2016-02-23 12:43:05 +00:00
bitops.h include: Clean up includes 2016-02-23 12:43:05 +00:00
bswap.h move const_le{16, 23} to qemu/bswap.h, add comment 2016-04-13 15:52:28 +02:00
buffer.h buffer: allow a buffer to shrink gracefully 2015-11-05 09:09:58 +01:00
compatfd.h include: Clean up includes 2016-02-23 12:43:05 +00:00
compiler.h include: Clean up includes 2016-02-23 12:43:05 +00:00
config-file.h include: Clean up includes 2016-02-23 12:43:05 +00:00
coroutine_int.h coroutine: move into libqemuutil.a library 2015-10-20 14:59:04 +01:00
coroutine.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
crc32c.h include/qemu/crc32c.h: Rename include guards to match filename 2014-02-26 17:20:07 +00:00
cutils.h util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
envlist.h misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
error-report.h include: Clean up includes 2016-02-23 12:43:05 +00:00
event_notifier.h event-notifier: Add "is_external" parameter 2016-04-22 16:43:56 +02:00
fifo8.h util/fifo8: implement push/pop of multiple bytes 2014-02-08 14:50:48 +00:00
fifo32.h FIFO: Add a FIFO32 implementation 2016-05-12 13:22:29 +01:00
fprintf-fn.h include: Clean up includes 2016-02-23 12:43:05 +00:00
hbitmap.h include: Clean up includes 2016-02-23 12:43:05 +00:00
help_option.h util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
host-utils.h include: Clean up includes 2016-02-23 12:43:05 +00:00
id.h util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
int128.h include: Clean up includes 2016-02-23 12:43:05 +00:00
iov.h include/qemu/iov.h: Don't include qemu-common.h 2016-03-22 22:20:16 +01:00
log.h log: do not use CONFIG_USER_ONLY 2016-05-19 13:08:04 +02:00
main-loop.h iohandler: Introduce iohandler_get_aio_context 2016-04-22 16:43:42 +02:00
memfd.h include: Clean up includes 2016-02-23 12:43:05 +00:00
mmap-alloc.h util/mmap-alloc: fix hugetlb support on ppc64 2015-12-02 22:38:23 +02:00
module.h module: Rename machine_init() to opts_init() 2016-03-16 15:54:23 -03:00
notify.h notify: add NotiferWithReturn so notifier list can abort 2013-06-28 09:20:26 +02:00
option_int.h QemuOpts: change opt->name|str from (const char *) to (char *) 2014-06-16 17:23:20 +08:00
option.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
osdep.h osdep: Move default qemu_hw_version() value to a macro 2016-05-23 13:19:36 -03:00
path.h util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
queue.h block: Remove bdrv_swap() 2015-10-16 15:34:30 +02:00
range.h Clean up includes some more 2016-03-22 22:20:16 +01:00
ratelimit.h aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
rcu_queue.h rcu: introduce RCU-enabled QLIST 2015-02-16 17:30:19 +01:00
rcu.h include: Clean up includes 2016-02-23 12:43:05 +00:00
readline.h readline: Add missing GCC_FMT_ATTR 2014-02-01 13:46:06 +04:00
rfifolock.h rfifolock: add recursive FIFO lock 2014-03-13 14:42:21 +01:00
seqlock.h seqlock: read sequence number atomically 2015-09-07 18:12:39 +02:00
sockets.h osdep: add wrappers for socket functions 2016-03-10 17:19:07 +00:00
thread-posix.h qemu-thread: add QemuEvent 2013-10-17 17:30:55 +02:00
thread-win32.h qemu-thread: add a fast path to the Win32 QemuEvent 2015-09-24 20:52:28 +02:00
thread.h include: Clean up includes 2016-02-23 12:43:05 +00:00
throttle.h include: Clean up includes 2016-02-23 12:43:05 +00:00
timed-average.h include: Clean up includes 2016-02-23 12:43:05 +00:00
timer.h include: move CPU-related definitions out of qemu-common.h 2016-05-19 13:08:04 +02:00
typedefs.h migration: delete QEMUSizedBuffer struct 2016-05-26 11:31:58 +05:30
unicode.h util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
uri.h misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
xattr.h include: Clean up includes 2016-02-23 12:43:05 +00:00