On 4/14/25 16:49, Zhao Liu wrote:
> Hi all,
>
> This series add the *initial* support for HPET migration.
>
> This is *initial* because the current migration implementation
> introduces multiple *unsafe* callbacks (please refer Patch 8).
>
> Before the vmstate builder, one possible cleanup approach is to wrap
> callbacks in the vmstate binding using a method similar to the
> vmstate_exist_fn macro.
>
> However, this approach would also create a lot of repetitive code (since
> vmstate has so many callbacks: pre_load, post_load, pre_save, post_save,
> needed and dev_unplug_pending). Although it would be cleaner, it would
> somewhat deviate from the path of the vmstate builder.
>
> Therefore, firstly focus on completing the functionality of HPET, and
> those current unsafe callbacks can at least clearly indicate the needed
> functionality of vmstate. The next step is to consider refactoring
> vmstate to move towards the vmstate builder direction.
Merged 4/6/7/9 for now, thanks! I'll reply to patch 2 with a review.
Paolo
> Test this series with 3 migration cases:
> * q35 (Rust HPET) -> q35 (Rust HPET)
> * q35 (Rust HPET) -> q35 (C HPET)
> * q35 (C HPET) -> q35 (Rust HPET)
>
> Thanks and Best Regards,
> Zhao
> ---
> Zhao Liu (9):
> rust/vmstate: Support field_exists check in vmstate_struct macro
> rust/vmstate: Support varray's num field wrapped in BqlCell
> rust/vmstate_test: Test varray with num field wrapped in BqlCell
> rust/vmstate_test: Fix typo in
> test_vmstate_macro_array_of_pointer_wrapped()
> rust/timer: Define NANOSECONDS_PER_SECOND binding as u64
> rust/hpet: convert num_timers to u8 type
> rust/hpet: convert HPETTimer index to u8 type
> rust/hpet: Support migration
> rust/hpet: Fix a clippy error
>
> docs/devel/rust.rst | 3 +-
> rust/hw/timer/hpet/src/hpet.rs | 189 ++++++++++++++++++++++++---
> rust/qemu-api/src/assertions.rs | 30 ++++-
> rust/qemu-api/src/cell.rs | 23 ++++
> rust/qemu-api/src/timer.rs | 2 +
> rust/qemu-api/src/vmstate.rs | 67 +++++-----
> rust/qemu-api/tests/vmstate_tests.rs | 45 +++++--
> 7 files changed, 294 insertions(+), 65 deletions(-)
>