mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
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>
This commit is contained in:
parent
5d5da114b3
commit
74892d2468
4 changed files with 57 additions and 32 deletions
|
@ -42,7 +42,7 @@ void HELPER(ill)(CPULM32State *env)
|
|||
fprintf(stderr, "VM paused due to illegal instruction. "
|
||||
"Connect a debugger or switch to the monitor console "
|
||||
"to find out more.\n");
|
||||
qemu_system_vmstop_request(RUN_STATE_PAUSED);
|
||||
vm_stop(RUN_STATE_PAUSED);
|
||||
cs->halted = 1;
|
||||
raise_exception(env, EXCP_HALTED);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue