Message ID | 20231205204106.95531-7-alex.bennee@linaro.org |
---|---|
State | New |
Headers | show |
Series | record/replay fixes, maybe for 8.2 or for post release stable? | expand |
On 5/12/23 21:41, Alex Bennée wrote: > Remove the non-standard comment formatting and move the descriptions > into a proper kdoc comment. > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > --- > replay/replay-internal.h | 27 ++++++++++++++++---------- ~~~ > roms/SLOF | 2 +- > tests/tcg/i386/Makefile.softmmu-target | 19 ++++++++++++++++++ > 3 files changed, 37 insertions(+), 11 deletions(-) > > diff --git a/replay/replay-internal.h b/replay/replay-internal.h > index 516147ddbc..98ca3748ed 100644 > --- a/replay/replay-internal.h > +++ b/replay/replay-internal.h > @@ -63,24 +63,31 @@ enum ReplayEvents { > EVENT_COUNT > }; > > +/** > + * typedef ReplayState - global tracking Replay state > + * > + * This structure tracks where we are in the current ReplayState > + * including the logged events from the recorded replay stream. Some > + * of the data is also stored/restored from VMStateDescription when VM > + * save/restore events take place. > + * > + * @cached_clock: Cached clocks values > + * @current_icount: number of processed instructions > + * @instruction_count: number of instructions until next event > + * @data_kind: current event > + * @has_unread_data: 1 if event not yet processed > + * @file_offset: offset into replay log at replay snapshot > + * @block_request_id: current serialised block request id > + * @read_event_id: current async read event id > + */ > typedef struct ReplayState { > - /*! Cached clock values. */ > int64_t cached_clock[REPLAY_CLOCK_COUNT]; > - /*! Current icount - number of processed instructions. */ > uint64_t current_icount; > - /*! Number of instructions to be executed before other events happen. */ > int instruction_count; > - /*! Type of the currently executed event. */ > unsigned int data_kind; > - /*! Flag which indicates that event is not processed yet. */ > unsigned int has_unread_data; > - /*! Temporary variable for saving current log offset. */ > uint64_t file_offset; > - /*! Next block operation id. > - This counter is global, because requests from different > - block devices should not get overlapping ids. */ > uint64_t block_request_id; > - /*! Asynchronous event id read from the log */ > uint64_t read_event_id; > } ReplayState; > extern ReplayState replay_state; Up to here: Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> The rest doesn't belong to this commit: > diff --git a/roms/SLOF b/roms/SLOF > index 3a259df244..6b6c16b4b4 160000 > --- a/roms/SLOF > +++ b/roms/SLOF > @@ -1 +1 @@ > -Subproject commit 3a259df2449fc4a4e43ab5f33f0b2c66484b4bc3 > +Subproject commit 6b6c16b4b40763507cf1f518096f3c3883c5cf2d > diff --git a/tests/tcg/i386/Makefile.softmmu-target b/tests/tcg/i386/Makefile.softmmu-target > index 5266f2335a..b9bef72dcf 100644 > --- a/tests/tcg/i386/Makefile.softmmu-target > +++ b/tests/tcg/i386/Makefile.softmmu-target > @@ -33,5 +33,24 @@ EXTRA_RUNS+=$(MULTIARCH_RUNS) > > memory: CFLAGS+=-DCHECK_UNALIGNED=1 > > +# Simple Record/Replay Test > +.PHONY: memory-record > +run-memory-record: memory-record memory > + $(call run-test, $<, \ > + $(QEMU) -monitor none -display none \ > + -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ > + -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \ > + $(QEMU_OPTS) memory) > + > +.PHONY: memory-replay > +run-memory-replay: memory-replay run-memory-record > + $(call run-test, $<, \ > + $(QEMU) -monitor none -display none \ > + -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ > + -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \ > + $(QEMU_OPTS) memory) > + > +EXTRA_RUNS+=run-memory-replay > + > # Running > QEMU_OPTS+=-device isa-debugcon,chardev=output -device isa-debug-exit,iobase=0xf4,iosize=0x4 -kernel
Philippe Mathieu-Daudé <philmd@linaro.org> writes: > On 5/12/23 21:41, Alex Bennée wrote: >> Remove the non-standard comment formatting and move the descriptions >> into a proper kdoc comment. >> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> >> --- >> replay/replay-internal.h | 27 ++++++++++++++++---------- > > ~~~ > >> roms/SLOF | 2 +- >> tests/tcg/i386/Makefile.softmmu-target | 19 ++++++++++++++++++ >> 3 files changed, 37 insertions(+), 11 deletions(-) >> diff --git a/replay/replay-internal.h b/replay/replay-internal.h >> index 516147ddbc..98ca3748ed 100644 >> --- a/replay/replay-internal.h >> +++ b/replay/replay-internal.h >> @@ -63,24 +63,31 @@ enum ReplayEvents { >> EVENT_COUNT >> }; >> +/** >> + * typedef ReplayState - global tracking Replay state >> + * >> + * This structure tracks where we are in the current ReplayState >> + * including the logged events from the recorded replay stream. Some >> + * of the data is also stored/restored from VMStateDescription when VM >> + * save/restore events take place. >> + * >> + * @cached_clock: Cached clocks values >> + * @current_icount: number of processed instructions >> + * @instruction_count: number of instructions until next event >> + * @data_kind: current event >> + * @has_unread_data: 1 if event not yet processed >> + * @file_offset: offset into replay log at replay snapshot >> + * @block_request_id: current serialised block request id >> + * @read_event_id: current async read event id >> + */ >> typedef struct ReplayState { >> - /*! Cached clock values. */ >> int64_t cached_clock[REPLAY_CLOCK_COUNT]; >> - /*! Current icount - number of processed instructions. */ >> uint64_t current_icount; >> - /*! Number of instructions to be executed before other events happen. */ >> int instruction_count; >> - /*! Type of the currently executed event. */ >> unsigned int data_kind; >> - /*! Flag which indicates that event is not processed yet. */ >> unsigned int has_unread_data; >> - /*! Temporary variable for saving current log offset. */ >> uint64_t file_offset; >> - /*! Next block operation id. >> - This counter is global, because requests from different >> - block devices should not get overlapping ids. */ >> uint64_t block_request_id; >> - /*! Asynchronous event id read from the log */ >> uint64_t read_event_id; >> } ReplayState; >> extern ReplayState replay_state; > > Up to here: > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > > The rest doesn't belong to this commit: Oops, I missed that when rushing this out last night... will delete.
On 05.12.2023 23:41, Alex Bennée wrote: > Remove the non-standard comment formatting and move the descriptions > into a proper kdoc comment. > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > --- > replay/replay-internal.h | 27 ++++++++++++++++---------- > roms/SLOF | 2 +- > tests/tcg/i386/Makefile.softmmu-target | 19 ++++++++++++++++++ > 3 files changed, 37 insertions(+), 11 deletions(-) > > diff --git a/replay/replay-internal.h b/replay/replay-internal.h > index 516147ddbc..98ca3748ed 100644 > --- a/replay/replay-internal.h > +++ b/replay/replay-internal.h > @@ -63,24 +63,31 @@ enum ReplayEvents { > EVENT_COUNT > }; > > +/** > + * typedef ReplayState - global tracking Replay state > + * > + * This structure tracks where we are in the current ReplayState > + * including the logged events from the recorded replay stream. Some > + * of the data is also stored/restored from VMStateDescription when VM > + * save/restore events take place. > + * > + * @cached_clock: Cached clocks values > + * @current_icount: number of processed instructions > + * @instruction_count: number of instructions until next event > + * @data_kind: current event > + * @has_unread_data: 1 if event not yet processed > + * @file_offset: offset into replay log at replay snapshot > + * @block_request_id: current serialised block request id > + * @read_event_id: current async read event id > + */ > typedef struct ReplayState { > - /*! Cached clock values. */ > int64_t cached_clock[REPLAY_CLOCK_COUNT]; > - /*! Current icount - number of processed instructions. */ > uint64_t current_icount; > - /*! Number of instructions to be executed before other events happen. */ > int instruction_count; > - /*! Type of the currently executed event. */ > unsigned int data_kind; > - /*! Flag which indicates that event is not processed yet. */ > unsigned int has_unread_data; > - /*! Temporary variable for saving current log offset. */ > uint64_t file_offset; > - /*! Next block operation id. > - This counter is global, because requests from different > - block devices should not get overlapping ids. */ > uint64_t block_request_id; > - /*! Asynchronous event id read from the log */ > uint64_t read_event_id; > } ReplayState; > extern ReplayState replay_state; Reviewed-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
diff --git a/replay/replay-internal.h b/replay/replay-internal.h index 516147ddbc..98ca3748ed 100644 --- a/replay/replay-internal.h +++ b/replay/replay-internal.h @@ -63,24 +63,31 @@ enum ReplayEvents { EVENT_COUNT }; +/** + * typedef ReplayState - global tracking Replay state + * + * This structure tracks where we are in the current ReplayState + * including the logged events from the recorded replay stream. Some + * of the data is also stored/restored from VMStateDescription when VM + * save/restore events take place. + * + * @cached_clock: Cached clocks values + * @current_icount: number of processed instructions + * @instruction_count: number of instructions until next event + * @data_kind: current event + * @has_unread_data: 1 if event not yet processed + * @file_offset: offset into replay log at replay snapshot + * @block_request_id: current serialised block request id + * @read_event_id: current async read event id + */ typedef struct ReplayState { - /*! Cached clock values. */ int64_t cached_clock[REPLAY_CLOCK_COUNT]; - /*! Current icount - number of processed instructions. */ uint64_t current_icount; - /*! Number of instructions to be executed before other events happen. */ int instruction_count; - /*! Type of the currently executed event. */ unsigned int data_kind; - /*! Flag which indicates that event is not processed yet. */ unsigned int has_unread_data; - /*! Temporary variable for saving current log offset. */ uint64_t file_offset; - /*! Next block operation id. - This counter is global, because requests from different - block devices should not get overlapping ids. */ uint64_t block_request_id; - /*! Asynchronous event id read from the log */ uint64_t read_event_id; } ReplayState; extern ReplayState replay_state; diff --git a/roms/SLOF b/roms/SLOF index 3a259df244..6b6c16b4b4 160000 --- a/roms/SLOF +++ b/roms/SLOF @@ -1 +1 @@ -Subproject commit 3a259df2449fc4a4e43ab5f33f0b2c66484b4bc3 +Subproject commit 6b6c16b4b40763507cf1f518096f3c3883c5cf2d diff --git a/tests/tcg/i386/Makefile.softmmu-target b/tests/tcg/i386/Makefile.softmmu-target index 5266f2335a..b9bef72dcf 100644 --- a/tests/tcg/i386/Makefile.softmmu-target +++ b/tests/tcg/i386/Makefile.softmmu-target @@ -33,5 +33,24 @@ EXTRA_RUNS+=$(MULTIARCH_RUNS) memory: CFLAGS+=-DCHECK_UNALIGNED=1 +# Simple Record/Replay Test +.PHONY: memory-record +run-memory-record: memory-record memory + $(call run-test, $<, \ + $(QEMU) -monitor none -display none \ + -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ + -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \ + $(QEMU_OPTS) memory) + +.PHONY: memory-replay +run-memory-replay: memory-replay run-memory-record + $(call run-test, $<, \ + $(QEMU) -monitor none -display none \ + -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ + -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \ + $(QEMU_OPTS) memory) + +EXTRA_RUNS+=run-memory-replay + # Running QEMU_OPTS+=-device isa-debugcon,chardev=output -device isa-debug-exit,iobase=0xf4,iosize=0x4 -kernel
Remove the non-standard comment formatting and move the descriptions into a proper kdoc comment. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> --- replay/replay-internal.h | 27 ++++++++++++++++---------- roms/SLOF | 2 +- tests/tcg/i386/Makefile.softmmu-target | 19 ++++++++++++++++++ 3 files changed, 37 insertions(+), 11 deletions(-)