qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH v6 00/14] Reverse execution.


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [RFC PATCH v6 00/14] Reverse execution.
Date: Mon, 01 Sep 2014 18:22:51 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

Il 03/07/2014 16:33, address@hidden ha scritto:
> From: KONRAD Frederic <address@hidden>
> 
> Hi everybody,
> 
> This is the sixth version of this RFC (see the changes below).
> 
> Those are the two first patch-set we have been worked on for reverse 
> execution.
> 
> The first part is fully reviewed except the "icount: introduce icount timer"
> patch maybe we can merge them?
> 
> The first series:
>   icount: put icount variables into TimerState.
>   migration: migrate icount fields.
>   migration: make qemu_savevm_state public.
>   icount: introduce icount timer.
>   icount: check for icount clock deadline when cpu loop exits.
>   icount: make icount extra computed on icount clock as well.
>   timer: add cpu_icount_to_ns function.
> 
> are various preparation patches for reverse execution.
> 
> The last patches:
>   trace-events: add reverse-execution events.
>   introduce reverse execution mechanism.
>   gdbstub: allow reverse execution in gdb stub.
>   cpu-exec: trigger a debug request when rexec stops.
>   rexec: synchronize icount on the next event.
>   rexec: allow to enable reverse execution.
> 
> are reverse execution introduction.
> 
> They can be clone at: git://git.greensocs.com/qemu_cexe.git:cexe_2_3_v6
> 
> The third series will be sent as soon as possible and have some issues with
> QEMU's thread as it use fork.
> 
> This implementation of reverse execution works with instruction counting:
> 
> A new clock is implemented which is icount clock. It grows each time an
> instruction is executed and is totally independant of host clock.
> 
> Snapshots are taken regularly (based on icount clock) with help of migration
> code and written on the disk.
> 
> When user wants to use reverse-stepi:
>  * Last snapshot is reloaded.
>  * A stop callback is created to be triggered at the previous instruction.
> 
> This stop callback generates a debug exception so QEMU stops in debug mode.
> 
> Command line:
>  * rexec suboption is added to icount to enable reverse execution, it needs
>    icount=N and doesn't support auto mode.
> 
> About non determinism in QEMU:
>  * This implementation doesn't take IO in account so any IO will cause non
>    determinism and break reverse execution.
> 
>  * The icount warp mechanism have been disabled when reverse execution is
>    enabled so the time grow differently inside the VM.
> 
> Testing:
>  * It has been tested on ARM without any IO such as network or asynchronous 
> file
>    access to keep the deterministic behaviour of icount.
> 
> Known issues:
>  * On ARM stepi seems to do some additional steps which are added to icount
>    counter so reverse-stepi just after stepi is broken.
> 
>  * The IO replay explained above.

Hi, can you rebase and repost these patches?  It would be nice to have a
discussion of the different approaches to record/replay in your patches
and Pavel's (perhaps before Pavel presents at KVM Forum).

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]