qemu/include/exec
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
..
user abitypes.h: Remove incorrect ARM ABI_LLONG_ALIGNMENT 2013-09-10 19:09:33 +01:00
address-spaces.h
cpu_ldst_template.h cpu_ldst_template.h: Drop unused cpu_ldfq/stfq/ldfl/stfl accessors 2015-01-20 15:19:34 +00:00
cpu_ldst_useronly_template.h cpu_ldst.h: Use inline functions for usermode cpu_ld/st accessors 2015-01-20 15:19:34 +00:00
cpu_ldst.h cpu_ldst.h: Allow NB_MMU_MODES to be 7 2015-02-05 13:37:23 +00:00
cpu-all.h Convert ram_list to RCU 2015-02-16 17:31:55 +01:00
cpu-common.h softmmu: provide softmmu access type enum 2014-11-03 11:48:34 +00:00
cpu-defs.h implementing victim TLB for QEMU system emulated TLB 2014-09-01 17:43:06 +01:00
cputlb.h exec: make iotlb RCU-friendly 2015-02-16 17:30:19 +01:00
exec-all.h exec: RCUify AddressSpaceDispatch 2015-02-16 17:30:19 +01:00
gdbstub.h Add the "-semihosting-config" option. 2014-12-11 12:07:48 +00:00
gen-icount.h gen-icount: check cflags instead of use_icount global 2015-01-03 09:22:12 +01:00
helper-gen.h trace: [tcg] Include TCG-tracing helpers 2014-08-12 14:26:12 +01:00
helper-head.h tcg: Move size effects out of dh_arg 2014-05-28 09:33:55 -07:00
helper-proto.h trace: [tcg] Include TCG-tracing helpers 2014-08-12 14:26:12 +01:00
helper-tcg.h trace: [tcg] Include TCG-tracing helpers 2014-08-12 14:26:12 +01:00
hwaddr.h
ioport.h portio: Allow to mark portio lists as coalesced MMIO flushing 2013-10-17 17:24:15 +02:00
memory-internal.h memory: unregister AddressSpace MemoryListener within BQL 2015-02-10 10:25:44 -07:00
memory.h memory: protect current_map by RCU 2015-02-02 16:55:10 +01:00
poison.h exec: Remove env from list of poisoned names 2013-07-27 11:22:54 +04:00
ram_addr.h exec: qemu_ram_alloc_resizeable, qemu_ram_resize 2015-01-08 13:17:54 +02:00
softmmu-semi.h exec: Change cpu_memory_rw_debug() argument to CPUState 2013-07-23 02:41:33 +02:00
spinlock.h