On 01/04/21 10:19, Pavel Dovgalyuk wrote:
> This patch enables vCPU notification to wake it up
> when new async event comes in replay mode.
>
> The motivation of this patch is the following.
> Consider recorded block async event. It is saved into the log
> with one of the checkpoints. This checkpoint may be passed in
> vCPU loop. In replay mode when this async event is read from
> the log, and block thread task is not finished yet, vCPU thread
> goes to sleep. That is why this patch adds waking up the vCPU
> to process this finished event.
>
> Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
> ---
> replay/replay-events.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/replay/replay-events.c b/replay/replay-events.c
> index a1c6bb934e..15983dd250 100644
> --- a/replay/replay-events.c
> +++ b/replay/replay-events.c
> @@ -15,6 +15,7 @@
> #include "replay-internal.h"
> #include "block/aio.h"
> #include "ui/input.h"
> +#include "hw/core/cpu.h"
>
> typedef struct Event {
> ReplayAsyncEventKind event_kind;
> @@ -126,6 +127,7 @@ void replay_add_event(ReplayAsyncEventKind event_kind,
>
> g_assert(replay_mutex_locked());
> QTAILQ_INSERT_TAIL(&events_list, event, events);
> + qemu_cpu_kick(first_cpu);
> }
>
> void replay_bh_schedule_event(QEMUBH *bh)
>
Queued, thanks.
Paolo