qemu/include
Mike Day 0dc3f44aca Convert ram_list to RCU
Allow "unlocked" reads of the ram_list by using an RCU-enabled QLIST.

The ramlist mutex is kept.  call_rcu callbacks are run with the iothread
lock taken, but that may change in the future.  Writers still take the
ramlist mutex, but they no longer need to assume that the iothread lock
is taken.

Readers of the list, instead, no longer require either the iothread
or ramlist mutex, but they need to use rcu_read_lock() and
rcu_read_unlock().

One place in arch_init.c was downgrading from write side to read side
like this:

    qemu_mutex_lock_iothread()
    qemu_mutex_lock_ramlist()
    ...
    qemu_mutex_unlock_iothread()
    ...
    qemu_mutex_unlock_ramlist()

and the equivalent idiom is:

    qemu_mutex_lock_ramlist()
    rcu_read_lock()
    ...
    qemu_mutex_unlock_ramlist()
    ...
    rcu_read_unlock()

Reviewed-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Mike Day <ncmike@ncultra.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-02-16 17:31:55 +01:00
..
block block: update string sizes for filename,backing_file,exact_filename 2015-01-23 18:17:06 +01:00
disas
exec Convert ram_list to RCU 2015-02-16 17:31:55 +01:00
fpu softfloat: expand out STATUS macro 2015-02-06 16:11:38 +00:00
hw pci: split shpc_cleanup and shpc_free 2015-02-16 17:30:14 +01:00
libdecnumber
migration migration: Append JSON description of migration stream 2015-02-05 17:16:14 +01:00
monitor block: Rename BlockDriverCompletionFunc to BlockCompletionFunc 2014-10-20 13:41:27 +02:00
net net: remove bootindex property from qdev to qom 2014-10-15 09:52:54 +02:00
qapi balloon: Eliminate silly QERR_ macros 2015-01-29 10:06:02 +01:00
qemu rcu: add g_free_rcu 2015-02-16 17:30:19 +01:00
qom exec: make iotlb RCU-friendly 2015-02-16 17:30:19 +01:00
sysemu kvm: extend kvm_irqchip_add_msi_route to work on s390 2015-01-12 10:14:04 +01:00
ui qmp hmp: Improve error messages when SPICE is not in use 2015-01-29 10:01:31 +01:00
config.h
elf.h tcg-sparc: Use ADDXC in addsub2_i64 2014-09-29 14:55:27 -04:00
glib-compat.h glib: add compatibility interface for g_strcmp0() 2014-10-16 23:02:31 +01:00
qemu-common.h qemu-common.h: optimise muldiv64 if int128 is available 2015-01-14 10:38:57 +01:00
qemu-io.h
qjson.h QJSON: Add JSON writer 2015-02-05 17:16:14 +01:00
trace-tcg.h
trace.h