qemu-rust
[Top][All Lists]
Advanced

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

[PATCH 0/9] rust/hpet: Initial support for migration


From: Zhao Liu
Subject: [PATCH 0/9] rust/hpet: Initial support for migration
Date: Mon, 14 Apr 2025 22:49:34 +0800

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.

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(-)

-- 
2.34.1




reply via email to

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