These are the minimal changes to adopt RCU and use it in memory_region_find (and hence in virtio-blk-dataplane). Looks big, but two thirds of it is documentation and tests.
Please review! :) Paolo Jan Kiszka (1): memory: remove assertion on memory_region_destroy Paolo Bonzini (7): tls: require compiler support for __thread rcu: add rcu library rcu: add rcutorture rcu: allow nesting of rcu_read_lock/rcu_read_unlock rcu: add call_rcu memory: protect current_map by RCU memory: avoid ref/unref in memory_region_find configure | 9 +- docs/rcu.txt | 388 +++++++++++++++++++++++++++++++++++++++ exec.c | 2 +- hw/9pfs/virtio-9p-synth.c | 1 + include/exec/memory.h | 5 + include/qemu/atomic.h | 61 +++++++ include/qemu/queue.h | 13 ++ include/qemu/rcu.h | 155 ++++++++++++++++ include/qemu/thread.h | 3 - include/qemu/tls.h | 52 ------ include/qom/cpu.h | 4 +- memory.c | 60 +++---- tests/Makefile | 11 +- tests/rcutorture.c | 449 ++++++++++++++++++++++++++++++++++++++++++++++ tests/test-tls.c | 83 +++++++++ util/Makefile.objs | 1 + util/rcu.c | 290 ++++++++++++++++++++++++++++++ 17 files changed, 1485 insertions(+), 102 deletions(-) create mode 100644 docs/rcu.txt create mode 100644 include/qemu/rcu.h delete mode 100644 include/qemu/tls.h create mode 100644 tests/rcutorture.c create mode 100644 tests/test-tls.c create mode 100644 util/rcu.c -- 1.8.3.1