vl: allow other threads to do qemu_system_vmstop_request
commit74892d2468b9f0c56b915ce94848d6f7fac39740
authorPaolo Bonzini <pbonzini@redhat.com>
Thu, 5 Jun 2014 12:53:58 +0000 (5 14:53 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Mon, 23 Jun 2014 08:36:13 +0000 (23 16:36 +0800)
tree36cc2ea403155751b9ca9fa29ad29f34854102cd
parent5d5da114b39d3cf187a69dcf5eaca7eaf886c041
vl: allow other threads to do qemu_system_vmstop_request

There patch protects vmstop_requested with a lock and introduces
qemu_system_vmstop_request_prepare.

Together with the new call to qemu_vmstop_requested in vm_start,
qemu_system_vmstop_request_prepare avoids a race where the VM could remain
stopped even though the iostatus of a block device has already been set
(for example).

qemu_system_vmstop_request_prepare however also lets the caller thread
delay observation of the state change until it has itself communicated
that change to the user.  This delay avoids any possibility of a wrong
reordering of the BLOCK_IO_ERROR event and the subsequent STOP event.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
cpus.c
include/sysemu/sysemu.h
target-lm32/op_helper.c
vl.c