Paolo Bonzini
8abea41ecd
rust: pull error_fatal out of SysbusDeviceMethods::sysbus_realize
...
Return a Result<()> from the method, and "unwrap" it into error_fatal
in the caller.
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-11-04 17:13:22 +01:00
Paolo Bonzini
56dbf087a8
rust/util: add ensure macro
...
The macro is similar to anyhow::ensure but uses QEMU's variation
on anyhow::Error. It can be used to easily check a condition
and format an error message.
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-11-04 17:13:00 +01:00
Zhao Liu and Paolo Bonzini
59d8f86442
rust/qemu-macros: Convert bit value to u8 within #[property]
...
For bit property, make the type conversion within the #[property] macro
so that users do not need to handle the conversion.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com >
Signed-off-by: Zhao Liu <zhao1.liu@intel.com >
Link: https://lore.kernel.org/r/20251024041344.1389488-1-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-10-28 14:50:07 +01:00
Marc-André Lureau and Paolo Bonzini
1b21518f73
char: rename CharBackend->CharFrontend
...
The actual backend is "Chardev", CharBackend is the frontend side of
it (whatever talks to the backend), let's rename it for readability.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Link: https://lore.kernel.org/r/20251022074612.1258413-1-marcandre.lureau@redhat.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-10-28 14:49:52 +01:00
Martin Kletzander and Paolo Bonzini
80a3c9c01a
rust: remove useless glib_sys bindings
...
The definition of types needed for g_autolist(), g_autoslist(),
g_autoqueue() need the imports for GList, GSList and GQueue
to appear everything. Rust code is never going to see those,
since they are not used in structs. Block the types from
appearing in the bindings.
Co-authored-by: Martin Kletzander <mkletzan@redhat.com >
Signed-off-by: Martin Kletzander <mkletzan@redhat.com >
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-10-28 13:02:21 +01:00
Paolo Bonzini
414ac7e057
rust: hpet: fix fw_cfg handling
...
HPET ids for fw_cfg are not assigned correctly, because there
is a read but no write. This is caught by nightly Rust as
an unused-assignments warning, so fix it.
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-10-14 11:03:43 +02:00
Paolo Bonzini
18beee5c6b
rust: pl011: fix warning with new clippy
...
Newer versions of clippy are able to see that all the variants in
the PL011 word length enum end with "Bits", and complain about it.
Allow it.
Reported-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-10-09 23:11:33 +02:00
Marc-André Lureau and Paolo Bonzini
9c40c1ff97
rust: use glib-sys
...
Don't generate FFI for glib, rely on glib-sys crate.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-10-03 15:14:48 +02:00
Paolo Bonzini and Stefan Hajnoczi
357f926979
rust: pl011: add tracepoints
...
Finally bring parity between C and Rust versions of the PL011 device model.
Changing some types of the arguments makes for nicer Rust code; C does not
care. :)
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Message-ID: <20250929154938.594389-12-pbonzini@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2025-10-01 11:22:07 -04:00
Paolo Bonzini and Stefan Hajnoczi
fe791b4004
rust: qdev: add minimal clock bindings
...
Add the minimal support that is needed by pl011's event and tracepoint.
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Message-ID: <20250929154938.594389-11-pbonzini@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2025-10-01 11:22:07 -04:00
Marc-André Lureau
582a39beea
build-sys: pass -fvisibility=default for wasm bindgen
...
Otherwise, no functions are generated:
https://github.com/rust-lang/rust-bindgen/issues/2989
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Kohei Tokunaga <ktokunaga.mail@gmail.com >
Message-ID: <20250924120426.2158655-27-marcandre.lureau@redhat.com >
2025-09-30 19:33:25 +04:00
Zhao Liu and Paolo Bonzini
0a7fe8d407
rust/qdev: Drop declare_properties & define_property macros
...
After HPET's #property conversion, there's no use case for
declare_properties & define_property. So get rid of them for now.
In future, if there's something that #property really cannot resolve,
they can be brought back.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Signed-off-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Link: https://lore.kernel.org/r/20250920160520.3699591-13-zhao1.liu@intel.com
2025-09-22 17:17:19 +02:00
Zhao Liu and Paolo Bonzini
b160ebadc1
rust/hpet: Convert qdev properties to #property macro
...
Convert HPET's properties to #property macro:
* num_timers: usize property.
* flags: u32 bit property.
* int_route_cap: u32 property.
* hpet_offset_saved: bool property.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Signed-off-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Link: https://lore.kernel.org/r/20250920160520.3699591-12-zhao1.liu@intel.com
2025-09-22 17:17:19 +02:00
Zhao Liu and Paolo Bonzini
4f09cf54fa
rust/hpet: Clean up type mismatch for num_timers property
...
Now `num_timers` is `usize` other than `u8`. Although the type field in
`declare_properties` macro hasn't been used, it's better to explicitly
point this out and clean up this before doing other property work.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Link: https://lore.kernel.org/r/20250920160520.3699591-11-zhao1.liu@intel.com
2025-09-22 17:17:19 +02:00
Zhao Liu and Paolo Bonzini
9686aa9a05
rust/qdev: Support bit property in #property macro
...
Add BIT_INFO to QDevProp trait, so that bit related property info could
be bound to u32 & u64.
Then add "bit=*" field in #property attributes macro to allow device to
configure bit property.
In addtion, convert the #property field parsing from `if-else` pattern
to `match` pattern, to help readability. And note, the `bitnr` member of
`Property` struct is generated by manual TokenStream construction,
instead of conditional repetition (like #(bitnr: #bitnr,)?) since
`quote` doesn't support this.
In addtion, rename VALUE member of QDevProp trait to BASE_INFO.
And update the test cases about qdev property.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Link: https://lore.kernel.org/r/20250920160520.3699591-9-zhao1.liu@intel.com
2025-09-22 17:17:19 +02:00
Zhao Liu and Paolo Bonzini
b4221e88a9
rust/qdev: Support property info for more common types
...
Add a helper macro to implement QDevProp trait for u8/u16/u32/usize/i32
/i64.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Link: https://lore.kernel.org/r/20250920160520.3699591-8-zhao1.liu@intel.com
2025-09-22 17:17:19 +02:00
Manos Pitsidianakis and Paolo Bonzini
bed2a37b20
rust/qdev: Refine the documentation for QDevProp trait
...
Refine the documentation to clarify:
* `unsfae` requires that `VALUE` must be valid.
* using `*const` instead of `&` because the latter will cause compiler
error.
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Signed-off-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Link: https://lore.kernel.org/r/20250920160520.3699591-7-zhao1.liu@intel.com
2025-09-22 17:17:19 +02:00
Manos Pitsidianakis and Paolo Bonzini
51d736cd71
rust/qdev: use addr_of! in QDevProp
...
We want a &raw pointer, so unsafe { &_ } is not needed.
Suggested-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Signed-off-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Link: https://lore.kernel.org/r/20250920160520.3699591-6-zhao1.liu@intel.com
2025-09-22 17:17:18 +02:00
Paolo Bonzini
efe8d07383
rust: meson: remove unnecessary complication in device crates
...
It is not necessary anymore to explicitly list procedural macro crates
when doing the final link using rustc.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Link: https://lore.kernel.org/r/20250908105005.2119297-33-pbonzini@redhat.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-09-17 19:00:58 +02:00
Marc-André Lureau and Paolo Bonzini
e4444d71e8
rust: re-export qemu macros from common/qom/hwcore
...
This is just a bit nicer.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Link: https://lore.kernel.org/r/20250827104147.717203-22-marcandre.lureau@redhat.com
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-09-17 19:00:58 +02:00
Marc-André Lureau and Paolo Bonzini
966b1c302e
rust/pl011: drop dependency on qemu_api
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Link: https://lore.kernel.org/r/20250827104147.717203-19-marcandre.lureau@redhat.com
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-09-17 19:00:57 +02:00
Marc-André Lureau and Paolo Bonzini
960aaeb023
rust/hpet: drop now unneeded qemu_api dep
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Link: https://lore.kernel.org/r/20250827104147.717203-18-marcandre.lureau@redhat.com
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-09-17 19:00:57 +02:00
Marc-André Lureau and Paolo Bonzini
0d93f81773
rust: rename qemu_api_macros -> qemu_macros
...
Since "qemu_api" is no longer the unique crate to provide APIs.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Link: https://lore.kernel.org/r/20250827104147.717203-17-marcandre.lureau@redhat.com
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-09-17 19:00:57 +02:00
Marc-André Lureau and Paolo Bonzini
5e588c9d08
rust: split "hwcore" crate
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Link: https://lore.kernel.org/r/20250827104147.717203-16-marcandre.lureau@redhat.com
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-09-17 19:00:57 +02:00
Marc-André Lureau and Paolo Bonzini
ee4ffbf239
rust: split "system" crate
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Link: https://lore.kernel.org/r/20250827104147.717203-15-marcandre.lureau@redhat.com
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-09-17 19:00:57 +02:00