qemu-rust.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/7] rust: migration: add high-level migration wrappers
@ 2025-09-20 14:29 Paolo Bonzini
  2025-09-20 14:29 ` [PATCH 1/7] rust: bql: add BqlRefCell::get_mut() Paolo Bonzini
                   ` (6 more replies)
  0 siblings, 7 replies; 21+ messages in thread
From: Paolo Bonzini @ 2025-09-20 14:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: qemu-rust, zhao1.liu, manos.pitsidianakis

This series adds high-level wrappers to handle migration state; they consist
of a Migratable<> type that implements the snapshotting technique mentioned
at KVM Forum.  The concepts are also discussed at
https://lore.kernel.org/qemu-devel/8076a298-1cd9-4c90-a64c-f65004753975@redhat.com/T/

The wrappers (should) make it possible to easily implement migration of
thread-safe devices.  I say "should" because, even though there are tests
included in the series, they are anything but "battle tested".  The first
device to use this will be HPET.

This is an interesting step in enabling usage of Rust in QEMU; instead of
just wrapping existing C APIs, it provides a new interface that deals
better with unique features of the Rust language.  In other words,
something like Migratable<> and ToMigrationState might hypothetically
exist even if QEMU was written in Rust from scratch.

Paolo


Paolo Bonzini (7):
  rust: bql: add BqlRefCell::get_mut()
  rust: move VMState from bql to migration
  rust: migration: extract vmstate_fields_ref
  rust: migration: add high-level migration wrappers
  rust: qemu-macros: add ToMigrationState derive macro
  rust: migration: implement ToMigrationState for Timer
  rust: migration: implement ToMigrationState as part of
    impl_vmstate_bitsized

 rust/Cargo.lock                         |   5 +-
 rust/bql/Cargo.toml                     |   3 -
 rust/bql/meson.build                    |   1 -
 rust/bql/src/cell.rs                    |  25 +-
 rust/meson.build                        |   2 +-
 rust/migration/Cargo.toml               |   2 +
 rust/migration/meson.build              |   7 +-
 rust/migration/src/lib.rs               |   5 +
 rust/migration/src/migratable.rs        | 469 ++++++++++++++++++++++++
 rust/migration/src/vmstate.rs           |  44 ++-
 rust/qemu-macros/src/lib.rs             |  88 +++++
 rust/qemu-macros/src/migration_state.rs | 296 +++++++++++++++
 rust/qemu-macros/src/tests.rs           | 112 +++++-
 13 files changed, 1034 insertions(+), 25 deletions(-)
 create mode 100644 rust/migration/src/migratable.rs
 create mode 100644 rust/qemu-macros/src/migration_state.rs

-- 
2.51.0



^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2025-09-30  6:32 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-20 14:29 [RFC PATCH 0/7] rust: migration: add high-level migration wrappers Paolo Bonzini
2025-09-20 14:29 ` [PATCH 1/7] rust: bql: add BqlRefCell::get_mut() Paolo Bonzini
2025-09-23 15:12   ` Zhao Liu
2025-09-24 12:14     ` Paolo Bonzini
2025-09-20 14:29 ` [PATCH 2/7] rust: move VMState from bql to migration Paolo Bonzini
2025-09-23 14:46   ` Zhao Liu
2025-09-20 14:29 ` [PATCH 3/7] rust: migration: extract vmstate_fields_ref Paolo Bonzini
2025-09-24 15:21   ` Zhao Liu
2025-09-24 15:27     ` Zhao Liu
2025-09-25  9:24       ` Paolo Bonzini
2025-09-20 14:29 ` [PATCH 4/7] rust: migration: add high-level migration wrappers Paolo Bonzini
2025-09-25  9:05   ` Zhao Liu
2025-09-25  9:26     ` Paolo Bonzini
2025-09-20 14:29 ` [PATCH 5/7] rust: qemu-macros: add ToMigrationState derive macro Paolo Bonzini
2025-09-25 12:35   ` Zhao Liu
2025-09-25 16:56     ` Paolo Bonzini
2025-09-20 14:29 ` [PATCH 6/7] rust: migration: implement ToMigrationState for Timer Paolo Bonzini
2025-09-29 16:12   ` Zhao Liu
2025-09-29 16:11     ` Paolo Bonzini
2025-09-20 14:29 ` [PATCH 7/7] rust: migration: implement ToMigrationState as part of impl_vmstate_bitsized Paolo Bonzini
2025-09-30  6:53   ` Zhao Liu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).