Jan Kiszka <[email protected]> wrote:
> On 2012-07-24 20:36, Juan Quintela wrote:
>> Hi
>> Appart of the review:
>> - Are there any locking issues that I have missed (I guess so)
>> - stop all cpus correctly. vm_stop should be called from the iothread,
>> I use the trick of using a bottom half to get that working correctly.
>> but this _implementation_ is ugly as hell. Is there an easy way
>> of doing it?
>
> vm_stop is prepared to be called from vcpu context as well. I'm not sure
> right now if we actually do, but the code is there.
But this is a migation_thread (i.e. neither iothread of vcpu), and we
need to wait for vm_stop to finish. My reading is that in vcpu context,
we just ask the iothread to stop all cpus.
void vm_stop(RunState state)
{
if (!qemu_thread_is_self(&io_thread)) {
qemu_system_vmstop_request(state);
/*
* FIXME: should not return to device code in case
* vm_stop() has been requested.
*/
cpu_stop_current();
return;
}
do_vm_stop(state);
}
Or I am reading it wrong?
Later, Juan.