unicorn/qemu/include
Stefan Hajnoczi e79e0881cd
memory: RCU ram_list.dirty_memory[] for safe RAM hotplug
Although accesses to ram_list.dirty_memory[] use atomics so multiple
threads can safely dirty the bitmap, the data structure is not fully
thread-safe yet.

This patch handles the RAM hotplug case where ram_list.dirty_memory[] is
grown.  ram_list.dirty_memory[] is change from a regular bitmap to an
RCU array of pointers to fixed-size bitmap blocks.  Threads can continue
accessing bitmap blocks while the array is being extended.  See the
comments in the code for an in-depth explanation of struct
DirtyMemoryBlocks.

I have tested that live migration with virtio-blk dataplane works.

Backports commit 5b82b703b69acc67b78b98a5efc897a3912719eb from qemu
2018-02-22 15:38:03 -05:00
..
crypto Drop unused crypto source files 2018-02-17 15:23:57 -05:00
exec memory: RCU ram_list.dirty_memory[] for safe RAM hotplug 2018-02-22 15:38:03 -05:00
fpu fpu: Remove use of int_fast16_t in conversions to int16 2018-02-20 16:54:04 -05:00
hw qom: Allow properties to be registered against classes 2018-02-21 21:00:56 -05:00
qapi include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
qemu memory: RCU ram_list.dirty_memory[] for safe RAM hotplug 2018-02-22 15:38:03 -05:00
qom include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
sysemu oslib-win32: Change return type of function getpagesize 2018-02-17 19:10:37 -05:00
config.h import 2015-08-21 15:04:50 +08:00
elf.h fix merge conflicts 2017-03-10 21:04:33 +08:00
glib_compat.h glib_compat: backport hashtable iterator interfaces 2018-02-21 13:18:44 -05:00
qemu-common.h util: move declarations out of qemu-common.h 2018-02-22 09:25:48 -05:00