[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/4] more replay fixes
From: |
Pavel Dovgaluk |
Subject: |
Re: [Qemu-devel] [PATCH 2/4] more replay fixes |
Date: |
Wed, 7 Oct 2015 11:11:46 +0300 |
This one is ok too.
Pavel Dovgalyuk
> -----Original Message-----
> From: Paolo Bonzini [mailto:address@hidden On Behalf Of Paolo Bonzini
> Sent: Tuesday, October 06, 2015 11:01 PM
> To: address@hidden
> Cc: address@hidden
> Subject: [PATCH 2/4] more replay fixes
>
> 1) Compile files once
>
> 2) Move include file from replay/replay.h to include/sysemu/replay.h.
>
> 3) Fix Error usage
>
> 4) cleanup timerlistgroup_deadline_ns a bit and allow clock jump
> notifiers to run
>
> 5) move replay-user.c to stubs/
> ---
> Makefile.objs | 2 ++
> Makefile.target | 1 -
> cpu-exec.c | 2 +-
> cpus.c | 2 +-
> exec.c | 2 +-
> hw/bt/hci.c | 4 ++--
> hw/core/ptimer.c | 2 +-
> include/qapi/qmp/qerror.h | 2 +-
> {replay => include/sysemu}/replay.h | 0
> qapi/common.json | 6 +-----
> qemu-timer.c | 14 ++++++--------
> replay/Makefile.objs | 11 +++++------
> replay/replay-events.c | 2 +-
> replay/replay-input.c | 2 +-
> replay/replay-internal.c | 4 ++--
> replay/replay-internal.h | 0
> replay/replay-time.c | 2 +-
> replay/replay.c | 2 +-
> stubs/Makefile.objs | 1 +
> {replay => stubs}/replay-user.c | 6 +-----
> stubs/replay.c | 9 +++++++--
> ui/input.c | 2 +-
> vl.c | 6 +++---
> 23 files changed, 40 insertions(+), 44 deletions(-)
> rename {replay => include/sysemu}/replay.h (100%)
> mode change 100755 => 100644 replay/Makefile.objs
> mode change 100755 => 100644 replay/replay-events.c
> mode change 100755 => 100644 replay/replay-input.c
> mode change 100755 => 100644 replay/replay-internal.c
> mode change 100755 => 100644 replay/replay-internal.h
> mode change 100755 => 100644 replay/replay-time.c
> mode change 100755 => 100644 replay/replay.c
> rename {replay => stubs}/replay-user.c (90%)
>
> diff --git a/Makefile.objs b/Makefile.objs
> index bc43e5c..ba4b45e 100644
> --- a/Makefile.objs
> +++ b/Makefile.objs
> @@ -58,6 +58,8 @@ common-obj-y += audio/
> common-obj-y += hw/
> common-obj-y += accel.o
>
> +common-obj-y += replay/
> +
> common-obj-y += ui/
> common-obj-y += bt-host.o bt-vhci.o
> bt-host.o-cflags := $(BLUEZ_CFLAGS)
> diff --git a/Makefile.target b/Makefile.target
> index ca8f351..962d004 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -88,7 +88,6 @@ obj-y = exec.o translate-all.o cpu-exec.o
> obj-y += translate-common.o
> obj-y += cpu-exec-common.o
> obj-y += tcg/tcg.o tcg/tcg-op.o tcg/optimize.o
> -obj-y += replay/
> obj-$(CONFIG_TCG_INTERPRETER) += tci.o
> obj-y += tcg/tcg-common.o
> obj-$(CONFIG_TCG_INTERPRETER) += disas/tci.o
> diff --git a/cpu-exec.c b/cpu-exec.c
> index 2b83e18..0850f8c 100644
> --- a/cpu-exec.c
> +++ b/cpu-exec.c
> @@ -30,7 +30,7 @@
> #if defined(TARGET_I386) && !defined(CONFIG_USER_ONLY)
> #include "hw/i386/apic.h"
> #endif
> -#include "replay/replay.h"
> +#include "sysemu/replay.h"
>
> /* -icount align implementation. */
>
> diff --git a/cpus.c b/cpus.c
> index 5130806..7e846e3 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -42,7 +42,7 @@
> #include "qemu/seqlock.h"
> #include "qapi-event.h"
> #include "hw/nmi.h"
> -#include "replay/replay.h"
> +#include "sysemu/replay.h"
>
> #ifndef _WIN32
> #include "qemu/compatfd.h"
> diff --git a/exec.c b/exec.c
> index dba9258..38f968a 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -50,7 +50,7 @@
> #include "qemu/rcu_queue.h"
> #include "qemu/main-loop.h"
> #include "translate-all.h"
> -#include "replay/replay.h"
> +#include "sysemu/replay.h"
>
> #include "exec/memory-internal.h"
> #include "exec/ram_addr.h"
> diff --git a/hw/bt/hci.c b/hw/bt/hci.c
> index 93dd1dc..2151d01 100644
> --- a/hw/bt/hci.c
> +++ b/hw/bt/hci.c
> @@ -24,7 +24,7 @@
> #include "sysemu/bt.h"
> #include "hw/bt.h"
> #include "qapi/qmp/qerror.h"
> -#include "replay/replay.h"
> +#include "sysemu/replay.h"
>
> struct bt_hci_s {
> uint8_t *(*evt_packet)(void *opaque);
> @@ -2193,7 +2193,7 @@ struct HCIInfo *bt_new_hci(struct bt_scatternet_s *net)
>
> s->device.handle_destroy = bt_hci_destroy;
>
> - error_set(&s->replay_blocker, ERROR_CLASS_REPLAY_NOT_SUPPORTED, "bt
> hci");
> + error_setg(&s->replay_blocker, QERR_REPLAY_NOT_SUPPORTED, "-bt hci");
> replay_add_blocker(s->replay_blocker);
>
> return &s->info;
> diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c
> index 86d544f..edf077c 100644
> --- a/hw/core/ptimer.c
> +++ b/hw/core/ptimer.c
> @@ -9,7 +9,7 @@
> #include "qemu/timer.h"
> #include "hw/ptimer.h"
> #include "qemu/host-utils.h"
> -#include "replay/replay.h"
> +#include "sysemu/replay.h"
>
> struct ptimer_state
> {
> diff --git a/include/qapi/qmp/qerror.h b/include/qapi/qmp/qerror.h
> index 0781a7f..f601499 100644
> --- a/include/qapi/qmp/qerror.h
> +++ b/include/qapi/qmp/qerror.h
> @@ -107,6 +107,6 @@
> "this feature or command is not currently supported"
>
> #define QERR_REPLAY_NOT_SUPPORTED \
> - ERROR_CLASS_GENERIC_ERROR, "Record/replay feature is not supported for
> '%s'"
> + "Record/replay feature is not supported for '%s'"
>
> #endif /* QERROR_H */
> diff --git a/replay/replay.h b/include/sysemu/replay.h
> similarity index 100%
> rename from replay/replay.h
> rename to include/sysemu/replay.h
> diff --git a/qapi/common.json b/qapi/common.json
> index d80e3d4..bad56bf 100644
> --- a/qapi/common.json
> +++ b/qapi/common.json
> @@ -22,15 +22,11 @@
> # @KVMMissingCap: the requested operation can't be fulfilled because a
> # required KVM capability is missing
> #
> -# @ReplayNotSupported: the requested feature is not supported with
> -# record/replay mode enabled
> -#
> # Since: 1.2
> ##
> { 'enum': 'ErrorClass',
> 'data': [ 'GenericError', 'CommandNotFound', 'DeviceEncrypted',
> - 'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap',
> - 'ReplayNotSupported' ] }
> + 'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap' ] }
>
> ##
> # @VersionTriple
> diff --git a/qemu-timer.c b/qemu-timer.c
> index e7a5c96..3c6e4c3 100644
> --- a/qemu-timer.c
> +++ b/qemu-timer.c
> @@ -24,7 +24,7 @@
>
> #include "qemu/main-loop.h"
> #include "qemu/timer.h"
> -#include "replay/replay.h"
> +#include "sysemu/replay.h"
> #include "sysemu/sysemu.h"
>
> #ifdef CONFIG_POSIX
> @@ -572,15 +572,14 @@ int64_t timerlistgroup_deadline_ns(QEMUTimerListGroup
> *tlg)
> QEMUClockType type;
> bool play = replay_mode == REPLAY_MODE_PLAY;
> for (type = 0; type < QEMU_CLOCK_MAX; type++) {
> - if (qemu_clock_use_for_deadline(tlg->tl[type]->clock->type)) {
> - if (!play || tlg->tl[type]->clock->type == QEMU_CLOCK_REALTIME) {
> + if (qemu_clock_use_for_deadline(type)) {
> + if (!play || type == QEMU_CLOCK_REALTIME) {
> deadline = qemu_soonest_timeout(deadline,
> - timerlist_deadline_ns(
> - tlg->tl[type]));
> +
> timerlist_deadline_ns(tlg->tl[type]));
> } else {
> /* Read clock from the replay file and
> do not calculate the deadline, based on virtual clock. */
> - qemu_clock_get_ns(tlg->tl[type]->clock->type);
> + qemu_clock_get_ns(type);
> }
> }
> }
> @@ -606,8 +605,7 @@ int64_t qemu_clock_get_ns(QEMUClockType type)
> now = REPLAY_CLOCK(REPLAY_CLOCK_HOST, get_clock_realtime());
> last = clock->last;
> clock->last = now;
> - if ((now < last || now > (last + get_max_clock_jump()))
> - && replay_mode == REPLAY_MODE_NONE) {
> + if (now < last || now > (last + get_max_clock_jump())) {
> notifier_list_notify(&clock->reset_notifiers, &now);
> }
> return now;
> diff --git a/replay/Makefile.objs b/replay/Makefile.objs
> old mode 100755
> new mode 100644
> index 1267969..232193a
> --- a/replay/Makefile.objs
> +++ b/replay/Makefile.objs
> @@ -1,6 +1,5 @@
> -obj-$(CONFIG_SOFTMMU) += replay.o
> -obj-$(CONFIG_SOFTMMU) += replay-internal.o
> -obj-$(CONFIG_SOFTMMU) += replay-events.o
> -obj-$(CONFIG_SOFTMMU) += replay-time.o
> -obj-$(CONFIG_SOFTMMU) += replay-input.o
> -obj-$(CONFIG_USER_ONLY) += replay-user.o
> +common-obj-y += replay.o
> +common-obj-y += replay-internal.o
> +common-obj-y += replay-events.o
> +common-obj-y += replay-time.o
> +common-obj-y += replay-input.o
> diff --git a/replay/replay-events.c b/replay/replay-events.c
> old mode 100755
> new mode 100644
> index 06dd4ca..402f644
> --- a/replay/replay-events.c
> +++ b/replay/replay-events.c
> @@ -11,7 +11,7 @@
>
> #include "qemu-common.h"
> #include "qemu/error-report.h"
> -#include "replay.h"
> +#include "sysemu/replay.h"
> #include "replay-internal.h"
> #include "block/aio.h"
> #include "ui/input.h"
> diff --git a/replay/replay-input.c b/replay/replay-input.c
> old mode 100755
> new mode 100644
> index 9c3b45b..de628ea
> --- a/replay/replay-input.c
> +++ b/replay/replay-input.c
> @@ -10,7 +10,7 @@
> */
>
> #include "qemu-common.h"
> -#include "replay.h"
> +#include "sysemu/replay.h"
> #include "replay-internal.h"
> #include "qemu/notify.h"
> #include "ui/input.h"
> diff --git a/replay/replay-internal.c b/replay/replay-internal.c
> old mode 100755
> new mode 100644
> index 69fe49f..35cff44
> --- a/replay/replay-internal.c
> +++ b/replay/replay-internal.c
> @@ -10,7 +10,7 @@
> */
>
> #include "qemu-common.h"
> -#include "replay.h"
> +#include "sysemu/replay.h"
> #include "replay-internal.h"
> #include "qemu/error-report.h"
> #include "sysemu/sysemu.h"
> @@ -196,7 +196,7 @@ 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);
> - if (first_cpu != NULL && diff > 0) {
> + if (diff > 0) {
> replay_put_event(EVENT_INSTRUCTION);
> replay_put_dword(diff);
> replay_state.current_step += diff;
> diff --git a/replay/replay-internal.h b/replay/replay-internal.h
> old mode 100755
> new mode 100644
> diff --git a/replay/replay-time.c b/replay/replay-time.c
> old mode 100755
> new mode 100644
> index f292ab6..6d06951
> --- a/replay/replay-time.c
> +++ b/replay/replay-time.c
> @@ -10,7 +10,7 @@
> */
>
> #include "qemu-common.h"
> -#include "replay.h"
> +#include "sysemu/replay.h"
> #include "replay-internal.h"
> #include "qemu/error-report.h"
>
> diff --git a/replay/replay.c b/replay/replay.c
> old mode 100755
> new mode 100644
> index dfa3d6f..0d33e82
> --- a/replay/replay.c
> +++ b/replay/replay.c
> @@ -10,7 +10,7 @@
> */
>
> #include "qemu-common.h"
> -#include "replay.h"
> +#include "sysemu/replay.h"
> #include "replay-internal.h"
> #include "qemu/timer.h"
> #include "qemu/main-loop.h"
> diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
> index c2f9e51..58de861 100644
> --- a/stubs/Makefile.objs
> +++ b/stubs/Makefile.objs
> @@ -26,6 +26,7 @@ stub-obj-y += notify-event.o
> stub-obj-$(CONFIG_SPICE) += qemu-chr-open-spice.o
> stub-obj-y += qtest.o
> stub-obj-y += replay.o
> +stub-obj-y += replay-user.o
> stub-obj-y += reset.o
> stub-obj-y += runstate-check.o
> stub-obj-y += set-fd-handler.o
> diff --git a/replay/replay-user.c b/stubs/replay-user.c
> similarity index 90%
> rename from replay/replay-user.c
> rename to stubs/replay-user.c
> index eeaa41d..ab8cff7 100755
> --- a/replay/replay-user.c
> +++ b/stubs/replay-user.c
> @@ -9,7 +9,7 @@
> *
> */
>
> -#include "replay.h"
> +#include "sysemu/replay.h"
>
> bool replay_exception(void)
> {
> @@ -30,7 +30,3 @@ bool replay_has_interrupt(void)
> {
> return true;
> }
> -
> -void replay_finish(void)
> -{
> -}
> diff --git a/stubs/replay.c b/stubs/replay.c
> index f7f74c9..71fa7d5 100755
> --- a/stubs/replay.c
> +++ b/stubs/replay.c
> @@ -1,4 +1,4 @@
> -#include "replay/replay.h"
> +#include "sysemu/replay.h"
> #include <stdlib.h>
> #include "sysemu/sysemu.h"
>
> @@ -19,14 +19,19 @@ int64_t replay_read_clock(unsigned int kind)
> bool replay_checkpoint(ReplayCheckpoint checkpoint)
> {
> return 0;
> + return true;
> }
>
> int runstate_is_running(void)
> {
> - return 0;
> + abort();
> }
>
> bool replay_events_enabled(void)
> {
> return false;
> }
> +
> +void replay_finish(void)
> +{
> +}
> diff --git a/ui/input.c b/ui/input.c
> index 9939722..4be7e3c 100644
> --- a/ui/input.c
> +++ b/ui/input.c
> @@ -6,7 +6,7 @@
> #include "trace.h"
> #include "ui/input.h"
> #include "ui/console.h"
> -#include "replay/replay.h"
> +#include "sysemu/replay.h"
>
> struct QemuInputHandlerState {
> DeviceState *dev;
> diff --git a/vl.c b/vl.c
> index 2e5c208..c12fc19 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -122,7 +122,7 @@ int main(int argc, char **argv)
> #include "qapi-event.h"
> #include "exec/semihost.h"
> #include "crypto/init.h"
> -#include "replay/replay.h"
> +#include "sysemu/replay.h"
> #include "qapi/qmp/qerror.h"
>
> #define MAX_VIRTIO_CONSOLES 1
> @@ -851,7 +851,7 @@ static void configure_rtc(QemuOpts *opts)
> } else if (!strcmp(value, "localtime")) {
> Error *blocker = NULL;
> rtc_utc = 0;
> - error_set(&blocker, ERROR_CLASS_REPLAY_NOT_SUPPORTED,
> + error_setg(&blocker, QERR_REPLAY_NOT_SUPPORTED,
> "-rtc base=localtime");
> replay_add_blocker(blocker);
> } else {
> @@ -1258,7 +1258,7 @@ static void smp_parse(QemuOpts *opts)
>
> if (smp_cpus > 1 || smp_cores > 1 || smp_threads > 1) {
> Error *blocker = NULL;
> - error_set(&blocker, ERROR_CLASS_REPLAY_NOT_SUPPORTED, "smp");
> + error_setg(&blocker, QERR_REPLAY_NOT_SUPPORTED, "smp");
> replay_add_blocker(blocker);
> }
> }
> --
> 2.5.0
>
- Re: [Qemu-devel] [PATCH 4/4] events doubts, (continued)
[Qemu-devel] [PATCH 1/4] replay: generalize ptimer event to bottom halves, Paolo Bonzini, 2015/10/08
[Qemu-devel] [PATCH 3/4] why is runstate_is_running needed?, Paolo Bonzini, 2015/10/08
[Qemu-devel] [PATCH 2/4] more replay fixes, Paolo Bonzini, 2015/10/08
Re: [Qemu-devel] [RFH PATCH 0/4] record/replay fixups and doubts, Pavel Dovgaluk, 2015/10/13
Re: [Qemu-devel] [RFH PATCH 0/4] record/replay fixups and doubts, Pavel Dovgaluk, 2015/10/23