From: "Pavel Dovgalyuk" <dovgaluk@ispras.ru>
To: "'Alex Bennée'" <alex.bennee@linaro.org>,
rth@twiddle.net, pbonzini@redhat.com
Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org,
mttcg@listserver.greensocs.com, fred.konrad@greensocs.com,
a.rigo@virtualopensystems.com, cota@braap.org,
bobby.prani@gmail.com, nikunj@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH v2 12/12] replay: assert time only goes forward
Date: Wed, 5 Apr 2017 16:33:32 +0300 [thread overview]
Message-ID: <001001d2ae11$386f9700$a94ec500$@ru> (raw)
In-Reply-To: <20170405132503.32125-13-alex.bennee@linaro.org>
> From: Alex Bennée [mailto:alex.bennee@linaro.org]
>
> If we find ourselves trying to add an event to the log where time has
> gone backwards it is because a vCPU event has occurred and the
> main-loop is not yet aware of time moving forward. This should not
> happen and if it does its better to fail early than generate a log
> that will have weird behaviour.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> replay/replay-internal.c | 4 ++++
> replay/replay.c | 4 ++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/replay/replay-internal.c b/replay/replay-internal.c
> index bea7b4aa6b..fca8514012 100644
> --- a/replay/replay-internal.c
> +++ b/replay/replay-internal.c
> @@ -195,6 +195,10 @@ void replay_save_instructions(void)
> if (replay_file && replay_mode == REPLAY_MODE_RECORD) {
> replay_mutex_lock();
> int diff = (int)(replay_get_current_step() - replay_state.current_step);
> +
> + /* Time can only go forward */
> + assert(diff >= 0);
> +
> if (diff > 0) {
This "if" is useless then.
> replay_put_event(EVENT_INSTRUCTION);
> replay_put_dword(diff);
> diff --git a/replay/replay.c b/replay/replay.c
> index 9e0724e756..f810628cac 100644
> --- a/replay/replay.c
> +++ b/replay/replay.c
> @@ -84,6 +84,10 @@ void replay_account_executed_instructions(void)
> if (replay_state.instructions_count > 0) {
> int count = (int)(replay_get_current_step()
> - replay_state.current_step);
> +
> + /* Time can only go forward */
> + assert(count >= 0);
> +
> replay_state.instructions_count -= count;
> replay_state.current_step += count;
> if (replay_state.instructions_count == 0) {
> --
> 2.11.0
Pavel Dovgalyuk
next prev parent reply other threads:[~2017-04-05 13:33 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-05 13:24 [Qemu-devel] [PATCH v2 00/12] icount and misc MTTCG fixes for 2.9-rc4 Alex Bennée
2017-04-05 13:24 ` [Qemu-devel] [PATCH v2 01/12] scripts/qemugdb/mtree.py: fix up mtree dump Alex Bennée
2017-04-05 13:24 ` [Qemu-devel] [PATCH v2 02/12] scripts/qemu-gdb/timers.py: new helper to dump timer state Alex Bennée
2017-04-05 13:24 ` [Qemu-devel] [PATCH v2 03/12] scripts/replay-dump.py: replay log dumper Alex Bennée
2017-04-05 13:24 ` [Qemu-devel] [PATCH v2 04/12] target/i386/misc_helper: wrap BQL around another IRQ generator Alex Bennée
2017-04-05 13:24 ` [Qemu-devel] [PATCH v2 05/12] cpus: remove icount handling from qemu_tcg_cpu_thread_fn Alex Bennée
2017-04-05 13:24 ` [Qemu-devel] [PATCH v2 06/12] cpus: check cpu->running in cpu_get_icount_raw() Alex Bennée
2017-04-05 13:24 ` [Qemu-devel] [PATCH v2 07/12] cpus: move icount preparation out of tcg_exec_cpu Alex Bennée
2017-04-05 13:24 ` [Qemu-devel] [PATCH v2 08/12] cpus: don't credit executed instructions before they have run Alex Bennée
2017-04-05 13:25 ` [Qemu-devel] [PATCH v2 09/12] cpus: introduce cpu_update_icount helper Alex Bennée
2017-04-05 14:08 ` Paolo Bonzini
2017-04-05 14:34 ` Alex Bennée
2017-04-05 15:00 ` Paolo Bonzini
2017-04-05 13:25 ` [Qemu-devel] [PATCH v2 10/12] cpu-exec: update icount after each TB_EXIT Alex Bennée
2017-04-05 13:25 ` [Qemu-devel] [PATCH v2 11/12] cpus: call cpu_update_icount on read Alex Bennée
2017-04-05 14:07 ` Paolo Bonzini
2017-04-07 11:35 ` Alex Bennée
2017-04-07 12:19 ` Paolo Bonzini
2017-04-07 13:14 ` Alex Bennée
2017-04-07 18:42 ` Richard Henderson
2017-04-05 13:25 ` [Qemu-devel] [PATCH v2 12/12] replay: assert time only goes forward Alex Bennée
2017-04-05 13:33 ` Pavel Dovgalyuk [this message]
2017-04-05 13:49 ` Paolo Bonzini
2017-04-05 14:37 ` Alex Bennée
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='001001d2ae11$386f9700$a94ec500$@ru' \
--to=dovgaluk@ispras.ru \
--cc=a.rigo@virtualopensystems.com \
--cc=alex.bennee@linaro.org \
--cc=bobby.prani@gmail.com \
--cc=cota@braap.org \
--cc=fred.konrad@greensocs.com \
--cc=mttcg@listserver.greensocs.com \
--cc=nikunj@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.