qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/11] Rust device model patches and misc cleanups
@ 2024-10-24 14:02 Manos Pitsidianakis
  2024-10-24 14:02 ` [PATCH 01/11] Revert "rust: add PL011 device model" Manos Pitsidianakis
                   ` (11 more replies)
  0 siblings, 12 replies; 25+ messages in thread
From: Manos Pitsidianakis @ 2024-10-24 14:02 UTC (permalink / raw)
  To: qemu-devel
  Cc: Paolo Bonzini, Peter Maydell, Marc-André Lureau,
	Daniel P. Berrangé, Philippe Mathieu-Daudé,
	Alex Bennée, Thomas Huth, Junjie Mao, Junjie Mao, Zhao Liu,
	Kevin Wolf, Philippe Mathieu-Daudé, Richard Henderson,
	Gustavo Romero, Pierrick Bouvier

Hello everyone, the pathological corrosion of QEMU code continues.

This series expands the device model harness work performed in the
initial Rust work from the previous month. In particular:

- A new derive proc macro, Device, is introduced and the Object derive
  macro is heavily expanded upon. Many hack-like macros and fixups to
  declare FFI code for QEMU to consume were removed and now everything
  is generated by macros in the qemu-api-macros procmacro crate.
- Add support for device migration by allowing device models to declare
  their VMState description, fields, subsections like in C code. This
  should also allow new qemu versions to transparently migrate any VMs
  that used C device models that were afterwards ported to Rust.
- Add a small logging interface in qemu-api crate to allow calling
  qemu_log() and qemu_log_mask() from Rust code.
- Some minor code cleanups in the Rust pl011 device, and also port of
  one fix patch and one log prints addition patch that was added in the
  C pl011.

  In the future if we go forward with rewriting device models in Rust,
  and keep having both of them in-tree while Rust is not required for
  building QEMU, we could alter checkpatch.pl to produce a warning if a
  C device model has changes but the corresponding Rust implementation
  doesn't.

  Code and functionality duplication is not fun, and pl011 was mostly
  done as a proof of concept for a Rust device because of its small
  complexity. As of this moment we have not decided on a policy for how
  to handle these things and it is not in **scope for this patch series
  anyway**.

In the meantime there are lots of TODOs written in my personal notes, my
personal repos, in the QEMU wiki, in mailing list threads. I plan on
consolidating them all in gitlab issues to streamline things and
who-does-what to avoid duplicating work.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
---
Manos Pitsidianakis (11):
      Revert "rust: add PL011 device model"
      rust: add PL011 device model
      rust/qemu-api-macros: introduce Device proc macro
      rust: add support for migration in device models
      rust/pl011: move CLK_NAME static to function scope
      rust/pl011: add TYPE_PL011_LUMINARY device
      rust/pl011: move pub callback decl to local scope
      rust/pl011: remove commented out C code
      rust/pl011: Use correct masks for IBRD and FBRD
      rust/qemu-api: add log module
      rust/pl011: log guest/unimp errors

 rust/wrapper.h                                |   1 +
 rust/hw/char/pl011/src/device.rs              | 419 +++++++++++++++++---------
 rust/hw/char/pl011/src/device_class.rs        |  70 -----
 rust/hw/char/pl011/src/lib.rs                 |   2 +-
 rust/qemu-api-macros/src/device.rs            | 370 +++++++++++++++++++++++
 rust/qemu-api-macros/src/lib.rs               |  46 +--
 rust/qemu-api-macros/src/object.rs            | 107 +++++++
 rust/qemu-api-macros/src/symbols.rs           |  57 ++++
 rust/qemu-api-macros/src/utilities.rs         | 152 ++++++++++
 rust/qemu-api-macros/src/vmstate.rs           | 113 +++++++
 rust/qemu-api/meson.build                     |   5 +-
 rust/qemu-api/src/definitions.rs              |  97 ------
 rust/qemu-api/src/device_class.rs             | 128 --------
 rust/qemu-api/src/lib.rs                      |  10 +-
 rust/qemu-api/src/log.rs                      | 140 +++++++++
 rust/qemu-api/src/objects.rs                  |  90 ++++++
 rust/qemu-api/src/tests.rs                    |  49 ---
 rust/qemu-api/src/vmstate.rs                  | 403 +++++++++++++++++++++++++
 subprojects/packagefiles/syn-2-rs/meson.build |   1 +
 19 files changed, 1726 insertions(+), 534 deletions(-)
---
base-commit: 55522f72149fbf95ee3b057f1419da0cad46d0dd
change-id: 20241024-rust-round-2-69fa10c9a0c9

--
γαῖα πυρί μιχθήτω



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

end of thread, other threads:[~2024-10-28  7:09 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-24 14:02 [PATCH 00/11] Rust device model patches and misc cleanups Manos Pitsidianakis
2024-10-24 14:02 ` [PATCH 01/11] Revert "rust: add PL011 device model" Manos Pitsidianakis
2024-10-24 14:03 ` [PATCH 02/11] rust: add PL011 device model Manos Pitsidianakis
2024-10-24 14:03 ` [PATCH 03/11] rust/qemu-api-macros: introduce Device proc macro Manos Pitsidianakis
2024-10-24 15:13   ` Alex Bennée
2024-10-24 17:06     ` Manos Pitsidianakis
2024-10-25 12:01   ` Paolo Bonzini
2024-10-25 14:04     ` Manos Pitsidianakis
2024-10-25 15:22       ` Paolo Bonzini
2024-10-25 16:22         ` Manos Pitsidianakis
2024-10-27 20:58   ` Paolo Bonzini
2024-10-27 22:39     ` Manos Pitsidianakis
2024-10-28  7:07       ` Paolo Bonzini
2024-10-24 14:03 ` [PATCH 04/11] rust: add support for migration in device models Manos Pitsidianakis
2024-10-24 14:03 ` [PATCH 05/11] rust/pl011: move CLK_NAME static to function scope Manos Pitsidianakis
2024-10-24 14:03 ` [PATCH 06/11] rust/pl011: add TYPE_PL011_LUMINARY device Manos Pitsidianakis
2024-10-24 17:27   ` Zhao Liu
2024-10-24 14:03 ` [PATCH 07/11] rust/pl011: move pub callback decl to local scope Manos Pitsidianakis
2024-10-24 14:03 ` [PATCH 08/11] rust/pl011: remove commented out C code Manos Pitsidianakis
2024-10-24 14:03 ` [PATCH 09/11] rust/pl011: Use correct masks for IBRD and FBRD Manos Pitsidianakis
2024-10-24 14:03 ` [PATCH 10/11] rust/qemu-api: add log module Manos Pitsidianakis
2024-10-24 14:03 ` [PATCH 11/11] rust/pl011: log guest/unimp errors Manos Pitsidianakis
2024-10-25  9:33 ` [PATCH 00/11] Rust device model patches and misc cleanups Paolo Bonzini
2024-10-26 10:06   ` Manos Pitsidianakis
2024-10-27  8:13     ` Paolo Bonzini

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