All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Pavel Dovgalyuk <dovgaluk@ispras.ru>
Cc: pbonzini@redhat.com, "Pavel Dovgalyuk" <Pavel.Dovgaluk@gmail.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	qemu-devel@nongnu.org, pavel.dovgaluk@ispras.ru
Subject: Re: [PATCH] replay: synchronize on every virtual timer callback
Date: Tue, 19 May 2020 09:11:14 +0100	[thread overview]
Message-ID: <87eergjqe5.fsf@linaro.org> (raw)
In-Reply-To: <b4da7577-8f42-3308-a4d6-05ff6451e944@ispras.ru>


Pavel Dovgalyuk <dovgaluk@ispras.ru> writes:

> On 18.05.2020 18:56, Alex Bennée wrote:
>> Philippe Mathieu-Daudé <philmd@redhat.com> writes:
>>
>>> + Alex
>>>
>>> On 5/6/20 10:17 AM, Pavel Dovgalyuk wrote:
>>>> Sometimes virtual timer callbacks depend on order
>>>> of virtual timer processing and warping of virtual clock.
>>>> Therefore every callback should be logged to make replay deterministic.
>>>> This patch creates a checkpoint before every virtual timer callback.
>>>> With these checkpoints virtual timers processing and clock warping
>>>> events order is completely deterministic.
>>>> Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
>>>> ---
>>>>    util/qemu-timer.c |    5 +++++
>>>>    1 file changed, 5 insertions(+)
>>>> diff --git a/util/qemu-timer.c b/util/qemu-timer.c
>>>> index d548d3c1ad..47833f338f 100644
>>>> --- a/util/qemu-timer.c
>>>> +++ b/util/qemu-timer.c
>>>> @@ -588,6 +588,11 @@ bool timerlist_run_timers(QEMUTimerList *timer_list)
>>>>            qemu_mutex_lock(&timer_list->active_timers_lock);
>>>>              progress = true;
>>>> +        /*
>>>> +         * Callback may insert new checkpoints, therefore add new checkpoint
>>>> +         * for the virtual timers.
>>>> +         */
>>>> +        need_replay_checkpoint = timer_list->clock->type == QEMU_CLOCK_VIRTUAL;
>>>>        }
>>>>        qemu_mutex_unlock(&timer_list->active_timers_lock);
>> So the problem I have with this as with all the record/replay stuff I
>> need want to review is it's very hard to see things in action. I added a
>> *very* basic record/replay test to the aarch64 softmmu tests but they
>> won't exercise any of this code because no timers get fired. I'm
>> assuming the sort of tests that is really needed is something that not
>> only causes QEMU_CLOCK_VIRTUAL timers to fire and trigger logged HW
>> events and ensure that things don't get confused in the process.
>
> I encounter most of the bugs in different OS boot scenarios.
>
> We also have internal tests that include some computational, disk, and
> network interaction tasks.
>
> Is it possible to add a test like booting a "real" OS and replaying
> it?

Yes - for these bigger more complex setups we should use the acceptance
tests that run under Avocado. See "make check-acceptance".

>> If I read up the file I just get more questions than answers. For
>> example why do we release the qemu_timers lock before processing the
>> replay event? Is it that the replay event could cause another timer to
>
> We release the lock, because accessing the replay module may process
> some events and add more timers.

OK. I guess the adding of the timer is a side effect of processing the
event rather than something that gets added directly?

<snip>
-- 
Alex Bennée


  reply	other threads:[~2020-05-19  8:13 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-06  8:17 [PATCH] replay: synchronize on every virtual timer callback Pavel Dovgalyuk
2020-05-18 10:58 ` Pavel Dovgalyuk
2020-05-18 11:24 ` Philippe Mathieu-Daudé
2020-05-18 15:56   ` Alex Bennée
2020-05-19  5:56     ` Pavel Dovgalyuk
2020-05-19  8:11       ` Alex Bennée [this message]
2020-05-19 10:21         ` Pavel Dovgalyuk
2020-05-19 10:32           ` Alex Bennée
2020-05-19 10:38             ` Pavel Dovgalyuk
2020-05-19 15:42               ` Philippe Mathieu-Daudé
2020-05-20  6:54                 ` Pavel Dovgalyuk
2020-05-20  7:18                   ` Philippe Mathieu-Daudé
2020-05-20 10:46                     ` Pavel Dovgalyuk
2020-05-21 13:22 ` Paolo Bonzini
2020-05-22  6:39   ` Pavel Dovgalyuk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87eergjqe5.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=Pavel.Dovgaluk@gmail.com \
    --cc=dovgaluk@ispras.ru \
    --cc=pavel.dovgaluk@ispras.ru \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.