From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48891) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZPthL-0006Km-C8 for qemu-devel@nongnu.org; Thu, 13 Aug 2015 10:41:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZPthF-0005sd-F4 for qemu-devel@nongnu.org; Thu, 13 Aug 2015 10:41:39 -0400 Received: from greensocs.com ([193.104.36.180]:59573) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZPthF-0005sR-7o for qemu-devel@nongnu.org; Thu, 13 Aug 2015 10:41:33 -0400 Message-ID: <55CCAC99.8030409@greensocs.com> Date: Thu, 13 Aug 2015 16:41:29 +0200 From: Frederic Konrad MIME-Version: 1.0 References: <1439220437-23957-1-git-send-email-fred.konrad@greensocs.com> <1439220437-23957-12-git-send-email-fred.konrad@greensocs.com> <55CC7CBA.6030403@redhat.com> In-Reply-To: <55CC7CBA.6030403@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH V7 11/19] tcg: switch on multithread. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini , qemu-devel@nongnu.org, mttcg@listserver.greensocs.com Cc: mark.burton@greensocs.com, alex.bennee@linaro.org, a.rigo@virtualopensystems.com, guillaume.delbergue@greensocs.com On 13/08/2015 13:17, Paolo Bonzini wrote: > > On 10/08/2015 17:27, fred.konrad@greensocs.com wrote: >> + while (!cpu->exit_request) { >> qemu_clock_enable(QEMU_CLOCK_VIRTUAL, >> (cpu->singlestep_enabled & SSTEP_NOTIMER) == 0); >> >> @@ -1507,7 +1480,7 @@ static void tcg_exec_all(void) >> } >> } >> >> - first_cpu->exit_request = 0; >> + cpu->exit_request = 0; > One issue here is that when tcg_cpu_exec returns EXCP_HALTED, the > function keeps looping. There is no need to set cpu->exit_request in > that case, since in fact there is no request pending, so the while loop > probably should be an "if". Nice catch thanks! I missed the fact that it was running through the list of VCPUs and exited the for(;;) loop. I should rework this patch a little.. Maybe it's better to keep this loop and exit it when necessary eg: when icount elapse or cpu halted. Fred > > Also, cpu->interrupt_request is not protected by any mutex, so > everything apart from the non-zero test must take the iothread mutex. > > Paolo >