From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38403) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zjlsz-0005Zb-Oh for qemu-devel@nongnu.org; Wed, 07 Oct 2015 06:23:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zjlsu-0001XZ-SE for qemu-devel@nongnu.org; Wed, 07 Oct 2015 06:23:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:34120) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zjlsu-0001XO-MQ for qemu-devel@nongnu.org; Wed, 07 Oct 2015 06:23:44 -0400 References: <1444161658-15038-1-git-send-email-pbonzini@redhat.com> <1444161658-15038-5-git-send-email-pbonzini@redhat.com> <35633.6639299572$1444206177@news.gmane.org> <5614DD31.4080000@redhat.com> <002e01d100e5$97a8ade0$c6fa09a0$@Dovgaluk@ispras.ru> From: Paolo Bonzini Message-ID: <5614F2AA.5080100@redhat.com> Date: Wed, 7 Oct 2015 12:23:38 +0200 MIME-Version: 1.0 In-Reply-To: <002e01d100e5$97a8ade0$c6fa09a0$@Dovgaluk@ispras.ru> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 4/4] events doubts List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pavel Dovgaluk , qemu-devel@nongnu.org On 07/10/2015 11:50, Pavel Dovgaluk wrote: >> From: Paolo Bonzini [mailto:paolo.bonzini@gmail.com] On Behalf Of Paol= o Bonzini >> On 07/10/2015 10:21, Pavel Dovgaluk wrote: >>> There are two kinds of events: >>> - read from the log and injected immediately (user input, network inp= ut) >>> - read from the log and wait for corresponding event in the queue (BH= ) >>> >>> We cannot inject BH event immediately because we do not have any info= rmation >>> about callback >> >> Actually we do (indirectly, through aio_bh_call). But that may not be >> the central issue, because... >> >>> and to preserve consistency - BH cannot be processed before >>> it is scheduled by qemu core. >> >> ... you are processing them differently anyway between record mode >> (where the BH is scheduled by the core) and replay (where the BH is >> called directly). >=20 > In record it also called through replay. It is scheduled into the repla= y > events queue and called at checkpoint, where queue is flushed. >=20 >> In fact, I don't understand what introduces the difference between >> record and replay that requires special handling of ptimers' bottom >> halves. In both cases, the ptimer triggers at the desired time (based >> on checkpoints) and then the bottom half is called as soon as possible= . >> Why is a separate async event necessary? >=20 > We want to preserve order of all events that affect virtual machine beh= avior, > not only instructions execution. These events include processing of > interrupts, exceptions, and bottom halves. > That is why bottom halves are bind to checkpoints and recorded into the= log. >=20 >> Because we only care about bottom halves from ptimers, their order >> should be the same for both record and replay. >> >> If bottom halves async events could be removed, that would simplify a >> lot the code, and it would make it a lot easier to understand for me. >=20 > I added ptimer handling because replay didn't work when I removed BH qu= euing. Ok, got it. I still want to understand exactly the need for the init and reset checkpoints, and the placement of qemu_clock_warp calls, but apart from that the patches are good to go for 2.5. Thanks for your persistence! Paolo