qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] d73abd: replay: global variables and function


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] d73abd: replay: global variables and function stubs
Date: Fri, 06 Nov 2015 04:30:06 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: d73abd6dcc105fb5cacc34716046fca63132a264
      
https://github.com/qemu/qemu/commit/d73abd6dcc105fb5cacc34716046fca63132a264
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-05 (Thu, 05 Nov 2015)

  Changed paths:
    M Makefile.objs
    A docs/replay.txt
    A include/sysemu/replay.h
    M qapi-schema.json
    A replay/Makefile.objs
    A replay/replay.c
    M stubs/Makefile.objs
    A stubs/replay-user.c
    A stubs/replay.c

  Log Message:
  -----------
  replay: global variables and function stubs

This patch adds global variables, defines, function declarations,
and function stubs for deterministic VM replay used by external modules.

Reviewed-by: Paolo Bonzini <address@hidden>
Reviewed-by: Eric Blake <address@hidden>

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: c92079f45fec0bc6a2757aa3783dd9b0604089ba
      
https://github.com/qemu/qemu/commit/c92079f45fec0bc6a2757aa3783dd9b0604089ba
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-05 (Thu, 05 Nov 2015)

  Changed paths:
    M replay/Makefile.objs
    A replay/replay-internal.c
    A replay/replay-internal.h

  Log Message:
  -----------
  replay: internal functions for replay log

This patch adds functions to perform read and write operations
with replay log.

Reviewed-by: Paolo Bonzini <address@hidden>

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: c16861ef1b7b27803b4c068ef778ba0f80fba1c2
      
https://github.com/qemu/qemu/commit/c16861ef1b7b27803b4c068ef778ba0f80fba1c2
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-05 (Thu, 05 Nov 2015)

  Changed paths:
    M replay/replay-internal.c
    M replay/replay-internal.h

  Log Message:
  -----------
  replay: introduce mutex to protect the replay log

This mutex will protect read/write operations for replay log.
Using mutex is necessary because most of the events consist of
several fields stored in the log. The mutex will help to avoid races.

Reviewed-by: Paolo Bonzini <address@hidden>

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 26bc60ac82f88d14e65be5387eb4a136edf94f1b
      
https://github.com/qemu/qemu/commit/26bc60ac82f88d14e65be5387eb4a136edf94f1b
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-05 (Thu, 05 Nov 2015)

  Changed paths:
    M include/sysemu/replay.h
    M replay/replay-internal.c
    M replay/replay-internal.h
    M replay/replay.c

  Log Message:
  -----------
  replay: introduce icount event

This patch adds icount event to the replay subsystem. This event corresponds
to execution of several instructions and used to synchronize input events
in the replay phase.

Reviewed-by: Paolo Bonzini <address@hidden>

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 56c0269a9ec105d3848d9f900b5e38e6b35e2478
      
https://github.com/qemu/qemu/commit/56c0269a9ec105d3848d9f900b5e38e6b35e2478
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-05 (Thu, 05 Nov 2015)

  Changed paths:
    M cpu-exec.c
    M include/exec/exec-all.h
    M translate-all.c

  Log Message:
  -----------
  cpu-exec: allow temporary disabling icount

This patch is required for deterministic replay to generate an exception
by trying executing an instruction without changing icount.
It adds new flag to TB for disabling icount while translating it.

Signed-off-by: Paolo Bonzini <address@hidden>

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 8b42704441865611a5ee241ac9fc5cabc47a079b
      
https://github.com/qemu/qemu/commit/8b42704441865611a5ee241ac9fc5cabc47a079b
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-05 (Thu, 05 Nov 2015)

  Changed paths:
    M cpus.c
    M include/sysemu/replay.h
    M replay/replay.c

  Log Message:
  -----------
  cpu: replay instructions sequence

This patch adds calls to replay functions into the icount setup block.
In record mode number of executed instructions is written to the log.
In replay mode number of istructions to execute is taken from the replay log.
When replayed instructions counter is expired qemu_notify_event()
function is called to wake up the iothread.

Reviewed-by: Paolo Bonzini <address@hidden>

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 6f0609697f3670bf755a91477487507a8ffee471
      
https://github.com/qemu/qemu/commit/6f0609697f3670bf755a91477487507a8ffee471
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M cpu-exec.c
    M include/sysemu/replay.h
    M replay/replay-internal.h
    M replay/replay.c
    M stubs/replay-user.c

  Log Message:
  -----------
  replay: interrupts and exceptions

This patch includes modifications of common cpu files. All interrupts and
exceptions occured during recording are written into the replay log.
These events allow correct replaying the execution by kicking cpu thread
when one of these events is found in the log.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: c0c071d05279ec1429352200affc5c70bb4e5980
      
https://github.com/qemu/qemu/commit/c0c071d05279ec1429352200affc5c70bb4e5980
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M include/sysemu/replay.h
    M replay/Makefile.objs
    A replay/replay-events.c
    M replay/replay-internal.h

  Log Message:
  -----------
  replay: asynchronous events infrastructure

This patch adds module for saving and replaying asynchronous events.
These events include network packets, keyboard and mouse input,
USB packets, thread pool and bottom halves callbacks.
All events are stored in the queue to be processed at synchronization points
such as beginning of TB execution, or checkpoint in the iothread.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>

Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: 8eda206e09089914006bfbdd71467d5246c06e4a
      
https://github.com/qemu/qemu/commit/8eda206e09089914006bfbdd71467d5246c06e4a
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M cpus.c
    M include/sysemu/replay.h
    M qemu-timer.c
    M replay/Makefile.objs
    M replay/replay-internal.h
    A replay/replay-time.c
    M stubs/replay.c

  Log Message:
  -----------
  replay: recording and replaying clock ticks

Clock ticks are considered as the sources of non-deterministic data for
virtual machine. This patch implements saving the clock values when they
are acquired (virtual, host clock).
When replaying the execution corresponding values are read from log and
transfered to the module, which wants to read the values.
Such a design required the clock polling to be synchronized. Sometimes
it is not true - e.g. when timeouts for timer lists are checked. In this case
we use a cached value of the clock, passing it to the client code.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: b60c48a7019614902f2debe4d4181ec8cfa60e0d
      
https://github.com/qemu/qemu/commit/b60c48a7019614902f2debe4d4181ec8cfa60e0d
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M include/sysemu/replay.h
    M replay/replay-internal.h
    M replay/replay.c
    M vl.c

  Log Message:
  -----------
  replay: shutdown event

This patch records and replays simulator shutdown event.

Reviewed-by: Paolo Bonzini <address@hidden>

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: efab87cf79077a9624f675fc5fc8f034eaedfe4d
      
https://github.com/qemu/qemu/commit/efab87cf79077a9624f675fc5fc8f034eaedfe4d
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M cpus.c
    M main-loop.c

  Log Message:
  -----------
  icount: improve counting for record/replay

icount_warp_rt function is called by qemu_clock_warp and as
callback of icount_warp timer. This patch adds call to qemu_clock_warp
into main_loop_wait function, because icount warp may be missed
in record/replay mode, when CPU is sleeping.
This patch also disables of calling this function by timer, because
it is not needed after making modifications of main_loop_wait.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: 8bd7f71d794b93ce027b856f5b79a98f4f82e44c
      
https://github.com/qemu/qemu/commit/8bd7f71d794b93ce027b856f5b79a98f4f82e44c
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M cpus.c
    M include/sysemu/replay.h
    M qemu-timer.c
    M replay/replay-internal.h
    M replay/replay.c
    M stubs/replay.c
    M vl.c

  Log Message:
  -----------
  replay: checkpoints

This patch introduces checkpoints that synchronize cpu thread and iothread.
When checkpoint is met in the code all asynchronous events from the queue
are executed.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: df281b80b9ecba65d85795aa738c29e5b94d5ef1
      
https://github.com/qemu/qemu/commit/df281b80b9ecba65d85795aa738c29e5b94d5ef1
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M async.c
    M include/block/aio.h

  Log Message:
  -----------
  bottom halves: introduce bh call function

This patch introduces aio_bh_call function. It is used to execute
bottom halves as callbacks without adding them to the queue.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: 8a354bd935a800dd2d98ac8f30707e2912c80ae6
      
https://github.com/qemu/qemu/commit/8a354bd935a800dd2d98ac8f30707e2912c80ae6
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M hw/core/ptimer.c
    M include/sysemu/replay.h
    M replay/replay-events.c
    M replay/replay-internal.h

  Log Message:
  -----------
  replay: ptimer

This patch adds deterministic replay for hardware periodic countdown timers.
ptimer uses bottom halves layer to execute such an asynchronous callback.
We put this callback into the replay queue instead of bottom halves one.
When checkpoint is met by main loop thread, the replay queue is processed
and callback is executed. Binding callback moment to one of the checkpoints
makes it deterministic.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: 7615936ebf4e60c4565268a30df2356c841526f8
      
https://github.com/qemu/qemu/commit/7615936ebf4e60c4565268a30df2356c841526f8
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M exec.c
    M include/sysemu/replay.h
    M replay/replay-internal.h
    M replay/replay.c
    M stubs/replay.c
    M vl.c

  Log Message:
  -----------
  replay: initialization and deinitialization

This patch introduces the functions for enabling the record/replay and for
freeing the resources when simulator closes.

Reviewed-by: Paolo Bonzini <address@hidden>

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: 0194749ac4131e1bed8e166c5d5cf541678ef204
      
https://github.com/qemu/qemu/commit/0194749ac4131e1bed8e166c5d5cf541678ef204
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M hw/bt/hci.c
    M include/qapi/qmp/qerror.h
    M include/sysemu/replay.h
    M replay/replay.c
    M vl.c

  Log Message:
  -----------
  replay: replay blockers for devices

Some devices are not supported by record/replay subsystem.
This patch introduces replay blocker which denies starting record/replay
if such devices are included into the configuration.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: 4c27b859722089e0270fd4f41b4b3c63b6647439
      
https://github.com/qemu/qemu/commit/4c27b859722089e0270fd4f41b4b3c63b6647439
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M qemu-options.hx
    M replay/replay.c
    M vl.c

  Log Message:
  -----------
  replay: command line options

This patch introduces command line options for enabling recording or replaying
virtual machine behavior. These options are added to icount command line
parameter. They include 'rr' which switches between record and replay
and 'rrfile' for specifying the filename for replay log.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: ee312992a323530ea2cda8680f3a34746c72db8f
      
https://github.com/qemu/qemu/commit/ee312992a323530ea2cda8680f3a34746c72db8f
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M include/sysemu/replay.h
    M include/ui/input.h
    M replay/Makefile.objs
    M replay/replay-events.c
    A replay/replay-input.c
    M replay/replay-internal.h
    M ui/input.c

  Log Message:
  -----------
  replay: recording of the user input

This records user input (keyboard and mouse events) in record mode and replays
these input events in replay mode.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>


  Commit: 9319738080faeb09876ce2017fcaea4937c475ee
      
https://github.com/qemu/qemu/commit/9319738080faeb09876ce2017fcaea4937c475ee
  Author: Peter Maydell <address@hidden>
  Date:   2015-11-06 (Fri, 06 Nov 2015)

  Changed paths:
    M Makefile.objs
    M async.c
    M cpu-exec.c
    M cpus.c
    A docs/replay.txt
    M exec.c
    M hw/bt/hci.c
    M hw/core/ptimer.c
    M include/block/aio.h
    M include/exec/exec-all.h
    M include/qapi/qmp/qerror.h
    A include/sysemu/replay.h
    M include/ui/input.h
    M main-loop.c
    M qapi-schema.json
    M qemu-options.hx
    M qemu-timer.c
    A replay/Makefile.objs
    A replay/replay-events.c
    A replay/replay-input.c
    A replay/replay-internal.c
    A replay/replay-internal.h
    A replay/replay-time.c
    A replay/replay.c
    M stubs/Makefile.objs
    A stubs/replay-user.c
    A stubs/replay.c
    M translate-all.c
    M ui/input.c
    M vl.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream-replay' into 
staging

So here it is, let's see what happens.

# gpg: Signature made Fri 06 Nov 2015 09:30:34 GMT using RSA key ID 78C7AE83
# gpg: Good signature from "Paolo Bonzini <address@hidden>"
# gpg:                 aka "Paolo Bonzini <address@hidden>"

* remotes/bonzini/tags/for-upstream-replay:
  replay: recording of the user input
  replay: command line options
  replay: replay blockers for devices
  replay: initialization and deinitialization
  replay: ptimer
  bottom halves: introduce bh call function
  replay: checkpoints
  icount: improve counting for record/replay
  replay: shutdown event
  replay: recording and replaying clock ticks
  replay: asynchronous events infrastructure
  replay: interrupts and exceptions
  cpu: replay instructions sequence
  cpu-exec: allow temporary disabling icount
  replay: introduce icount event
  replay: introduce mutex to protect the replay log
  replay: internal functions for replay log
  replay: global variables and function stubs

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/3aa88b31290c...9319738080fa

reply via email to

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