On Sat, Aug 27, 2011 at 7:09 PM, Umesh Deshpande <udeshpan@xxxxxxxxxx> wrote: > This patch implements migrate_ram mutex, which protects the RAMBlock list > traversal in the migration thread during the transfer of a ram from their > addition/removal from the iothread. > > Note: Combination of iothread mutex and migration thread mutex works as a > rw-lock. Both mutexes are acquired while modifying the ram_list members or RAM > block list. > > Signed-off-by: Umesh Deshpande <udeshpan@xxxxxxxxxx> > --- > arch_init.c | 21 +++++++++++++++++++++ > cpu-all.h | 3 +++ > exec.c | 23 +++++++++++++++++++++++ > qemu-common.h | 2 ++ > 4 files changed, 49 insertions(+), 0 deletions(-) > > diff --git a/arch_init.c b/arch_init.c > index 484b39d..9d02270 100644 > --- a/arch_init.c > +++ b/arch_init.c > @@ -109,6 +109,7 @@ static int is_dup_page(uint8_t *page, uint8_t ch) > > static RAMBlock *last_block; > static ram_addr_t last_offset; > +static uint64_t last_version; [...] > typedef struct RAMList { > + QemuMutex mutex; /* Protects RAM block list */ > uint8_t *phys_dirty; > + uint32_t version; /* To detect ram block addition/removal */ Is there a reason why RAMList.version is uint32_t but last_version is uint64_t? Stefan -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html