[PATCH 06/11] replay: add proper kdoc for ReplayState

Alex Bennée posted 11 patches 11 months, 3 weeks ago
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>, John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>, Eduardo Habkost <eduardo@habkost.net>
[PATCH 06/11] replay: add proper kdoc for ReplayState
Posted by Alex Bennée 11 months, 3 weeks ago
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;
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
-- 
2.39.2


Re: [PATCH 06/11] replay: add proper kdoc for ReplayState
Posted by Pavel Dovgalyuk 11 months, 3 weeks ago
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>


Re: [PATCH 06/11] replay: add proper kdoc for ReplayState
Posted by Philippe Mathieu-Daudé 11 months, 3 weeks ago
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


Re: [PATCH 06/11] replay: add proper kdoc for ReplayState
Posted by Alex Bennée 11 months, 3 weeks ago
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.

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro