From: Paolo Bonzini <pbonzini@redhat.com>
To: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Cc: peter.maydell@linaro.org, igor.rubinov@gmail.com,
mark.burton@greensocs.com, qemu-devel@nongnu.org, hines@cert.org,
Peter Crosthwaite <peter.crosthwaite@petalogix.com>,
maria.klimushenkova@ispras.ru, real@ispras.ru,
batuzovk@ispras.ru, alex.bennee@linaro.org,
fred.konrad@greensocs.com
Subject: Re: [Qemu-devel] [PATCH v16 00/21] Deterministic replay core
Date: Mon, 17 Aug 2015 13:14:02 +0200 [thread overview]
Message-ID: <55D1C1FA.2040109@redhat.com> (raw)
In-Reply-To: <55CF0E89.7070701@redhat.com>
On 15/08/2015 12:03, Paolo Bonzini wrote:
>
>
> On 15/08/2015 11:57, Pavel Dovgalyuk wrote:
>> Hi, Paolo!
>>
>> Will you apply these patches to 2.5?
>
> Yes, I'll put them in my next pull request.
Hi Pavel,
unfortunately I do have some more review comments; that can happen when
going back to the code after a few months, and it's also a good thing
because it means that the code _is_ actually getting cleaner.
However, I am fairly sure that v17 is going to be the good one and will
be in 2.5 if I get it by mid September when I'll be back from vacation.
In particular:
* patch 3 seems to be unnecessary (for now at least)
* replay_next_event_is is modified in patch 8 ("cpu: replay instructions
sequence") after it's introduced in patch 6 ("replay: introduce icount
event"). Please fold the change in patch 6.
* replay_add_event is not used; please remove it, rename
replay_add_event_internal to replay_add_event, and add an assertion that
the rr mode is the right one (e.g. RECORD only?)
* a couple of comments say "grteater" instead of "greater"
* the replay_save_clock and replay_read_clock stubs should abort
* please inline replay_input_event into qemu_input_event_send and
replay_input_sync_event into qemu_input_event_sync, so that the
corresponding *_impl functions can be static; this also means moving the
prototypes of replay_add_input_event and replay_add_input_sync_event to
replay/replay.h (I acknowledge this might undo a request from a previous
review of mine; I don't remember)
* most stubs are unnecessary (replay_get_current_step,
replay_checkpoint, qemu_system_shutdown_request,
qemu_input_event_send_impl, qemu_input_event_sync_impl)
* please squash this in "replay: checkpoints"
diff --git a/vl.c b/vl.c
index 5a509dc..3c69563 100644
--- a/vl.c
+++ b/vl.c
@@ -1662,8 +1662,11 @@ static void qemu_kill_report(void)
static int qemu_reset_requested(void)
{
int r = reset_requested;
- reset_requested = 0;
- return r;
+ if (r && replay_checkpoint(CHECKPOINT_RESET_REQUESTED)) {
+ reset_requested = 0;
+ return r;
+ }
+ return false;
}
static int qemu_suspend_requested(void)
@@ -1862,9 +1865,7 @@ static bool main_loop_should_exit(void)
return true;
}
}
- if (qemu_reset_requested_get()
- && replay_checkpoint(CHECKPOINT_RESET_REQUESTED)) {
- qemu_reset_requested();
+ if (qemu_reset_requested()) {
pause_all_vcpus();
cpu_synchronize_all_states();
qemu_system_reset(VMRESET_REPORT);
And a few questions. The first three are the "if the answer is yes,
please do this" kind to questions, the others can have more
open/subjective answers:
* does it make sense to call replay_check_error from
replay_finish_event, and remove the call from replay_read_next_clock?
* should qemu_clock_use_for_deadline always return false in replay mode?
The clocks are all deterministic, so it doesn't make sense to take them
into account in the poll() deadline.
* now that qemu_clock_warp has to be called in main_loop_wait, should
the icount_warp_timer have a dummy callback? icount_warp_rt is then
only called from qemu_clock_warp. If so, this (adding the call to
qemu_clock_warp in main_loop_wait, making the icount_warp_timer dummy,
removing the now-unnecessary argument of icount_warp_rt) should be a
separate patch before "replay: checkpoints"
* can you explain why both CHECKPOINT_INIT and CHECKPOINT_RESET are
needed? What events are typically found in each of them?
* would it make sense to test "replay_mode != REPLAY_MODE_NONE &&
!runstate_is_running()" in replay_checkpoint, for all checkpoints, like
if (replay_mode != REPLAY_MODE_NONE && !runstate_is_running()) {
return false;
}
?
* do we need an event for suspend?
Thanks,
Paolo
next prev parent reply other threads:[~2015-08-17 11:14 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-04 8:43 [Qemu-devel] [PATCH v16 00/21] Deterministic replay core Pavel Dovgalyuk
2015-08-04 8:43 ` [Qemu-devel] [PATCH v16 01/21] i386: partial revert of interrupt poll fix Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 02/21] replay: global variables and function stubs Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 03/21] sysemu: system functions for replay Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 04/21] replay: internal functions for replay log Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 05/21] replay: introduce mutex to protect the " Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 06/21] replay: introduce icount event Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 07/21] cpu-exec: allow temporary disabling icount Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 08/21] cpu: replay instructions sequence Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 09/21] i386: interrupt poll processing Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 10/21] replay: interrupts and exceptions Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 11/21] replay: asynchronous events infrastructure Pavel Dovgalyuk
2015-08-04 8:44 ` [Qemu-devel] [PATCH v16 12/21] replay: recording and replaying clock ticks Pavel Dovgalyuk
2015-08-04 8:45 ` [Qemu-devel] [PATCH v16 13/21] replay: shutdown event Pavel Dovgalyuk
2015-08-04 8:45 ` [Qemu-devel] [PATCH v16 14/21] replay: checkpoints Pavel Dovgalyuk
2015-08-04 8:45 ` [Qemu-devel] [PATCH v16 15/21] bottom halves: introduce bh call function Pavel Dovgalyuk
2015-08-04 8:45 ` [Qemu-devel] [PATCH v16 16/21] replay: ptimer Pavel Dovgalyuk
2015-08-04 8:45 ` [Qemu-devel] [PATCH v16 17/21] typedef: add typedef for QemuOpts Pavel Dovgalyuk
2015-08-04 8:45 ` [Qemu-devel] [PATCH v16 18/21] replay: initialization and deinitialization Pavel Dovgalyuk
2015-08-04 8:45 ` [Qemu-devel] [PATCH v16 19/21] replay: replay blockers for devices Pavel Dovgalyuk
2015-08-04 8:45 ` [Qemu-devel] [PATCH v16 20/21] replay: command line options Pavel Dovgalyuk
2015-08-04 8:45 ` [Qemu-devel] [PATCH v16 21/21] replay: recording of the user input Pavel Dovgalyuk
2015-08-15 9:57 ` [Qemu-devel] [PATCH v16 00/21] Deterministic replay core Pavel Dovgalyuk
2015-08-15 10:03 ` Paolo Bonzini
2015-08-17 11:14 ` Paolo Bonzini [this message]
2015-08-27 13:04 ` Pavel Dovgaluk
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=55D1C1FA.2040109@redhat.com \
--to=pbonzini@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=batuzovk@ispras.ru \
--cc=fred.konrad@greensocs.com \
--cc=hines@cert.org \
--cc=igor.rubinov@gmail.com \
--cc=maria.klimushenkova@ispras.ru \
--cc=mark.burton@greensocs.com \
--cc=pavel.dovgaluk@ispras.ru \
--cc=peter.crosthwaite@petalogix.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=real@ispras.ru \
/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.