From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42758) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XwrIy-0001IX-Nh for qemu-devel@nongnu.org; Fri, 05 Dec 2014 06:44:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XwrIs-0001J1-Jv for qemu-devel@nongnu.org; Fri, 05 Dec 2014 06:44:12 -0500 Received: from mx1.redhat.com ([209.132.183.28]:36115) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XwrIs-0001Iw-Ck for qemu-devel@nongnu.org; Fri, 05 Dec 2014 06:44:06 -0500 Message-ID: <54819A74.9090607@redhat.com> Date: Fri, 05 Dec 2014 12:43:48 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <20141126103841.7772.11864.stgit@PASHA-ISP> <20141126103925.7772.13043.stgit@PASHA-ISP> <547EE34D.4000500@redhat.com> <000c01d00fb1$c2010860$46031920$@Dovgaluk@ispras.ru> <548082E2.2060602@redhat.com> <000301d0104d$29dc3d10$7d94b730$@Dovgaluk@ispras.ru> <54818AC0.50400@redhat.com> <001301d0107a$0388b5d0$0a9a2170$@Dovgaluk@ispras.ru> In-Reply-To: <001301d0107a$0388b5d0$0a9a2170$@Dovgaluk@ispras.ru> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH v5 07/31] icount: implement icount requesting List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pavel Dovgaluk , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, peter.crosthwaite@xilinx.com, mark.burton@greensocs.com, real@ispras.ru, batuzovk@ispras.ru, maria.klimushenkova@ispras.ru, alex.bennee@linaro.org, afaerber@suse.de, fred.konrad@greensocs.com On 05/12/2014 11:55, Pavel Dovgaluk wrote: >> > >> > And why is can_do_io zero? :) Is the fix to move the place where >> > can_do_io becomes nonzero? > can_do_io is set by gen_io_start function. > As I understand, it is used to protect determinism in icount mode, > because it allows non-deterministic (port io, raising interrupt) > operations only at the end of the translation blocks. > When someone tries to use MMIO in the middle of TB, that TB is > recompiled to place this instruction at the end of the block. > > Do you mean that we can set can_do_io before execution of the block > and reset it at the beginning of the execution? Yes, we could try setting it after execution of the block and clearing it afterwards. Peter knows that part of icount better though (I know mostly the timer/warping parts). Paolo