From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:33866) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SuMgQ-0006MF-BU for qemu-devel@nongnu.org; Thu, 26 Jul 2012 07:56:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SuMgP-0005yZ-7V for qemu-devel@nongnu.org; Thu, 26 Jul 2012 07:56:46 -0400 Received: from david.siemens.de ([192.35.17.14]:34202) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SuMgO-0005yA-UC for qemu-devel@nongnu.org; Thu, 26 Jul 2012 07:56:45 -0400 Message-ID: <50113079.1060401@siemens.com> Date: Thu, 26 Jul 2012 13:56:41 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <1343155012-26316-1-git-send-email-quintela@redhat.com> <50112283.70201@siemens.com> <874nou7oy6.fsf@trasno.org> In-Reply-To: <874nou7oy6.fsf@trasno.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC 00/27] Migration thread (WIP) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "quintela@redhat.com" Cc: "qemu-devel@nongnu.org" On 2012-07-26 13:16, Juan Quintela wrote: > Jan Kiszka 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? Ah, indeed. Did you try top make this service ready for such a use case (sorry, didn't look at the code yet)? Something like issuing qemu_system_vmstop_request and then resuming the with the next step on a vmstate change notification? Jan -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux