Message ID | 20250414144943.1112885-1-zhao1.liu@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | rust/hpet: Initial support for migration | expand |
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(-) >