Branch: refs/heads/staging
Home: https://github.com/qemu/qemu
Commit: b652d512855997ec89c78aa540aceadd5af13724
https://github.com/qemu/qemu/commit/b652d512855997ec89c78aa540aceadd5af13724
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M rust/qemu-api/src/bindings.rs
Log Message:
-----------
rust: bindings: allow ptr_offset_with_cast
This is produced by recent versions of bindgen:
warning: use of `offset` with a `usize` casted to an `isize`
-->
/builds/bonzini/qemu/rust/target/debug/build/qemu_api-35cb647f4db404b8/out/bindings.inc.rs:39:21
|
39 | let byte = *(core::ptr::addr_of!((*this).storage) as *const
u8).offset(byte_index as isize);
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: try: `(core::ptr::addr_of!((*this).storage) as *const u8).add(byte_index)`
|
= help: for further information visit
https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
= note: `#[warn(clippy::ptr_offset_with_cast)]` on by default
warning: use of `offset` with a `usize` casted to an `isize`
-->
/builds/bonzini/qemu/rust/target/debug/build/qemu_api-35cb647f4db404b8/out/bindings.inc.rs:68:13
|
68 | (core::ptr::addr_of_mut!((*this).storage) as *mut
u8).offset(byte_index as isize);
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: try: `(core::ptr::addr_of_mut!((*this).storage) as *mut
u8).add(byte_index)`
|
= help: for further information visit
https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
This seems to be new in bindgen 0.71.0, possibly related to bindgen
commit 33006185b7878 ("Add raw_ref_macros feature", 2024-11-22).
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 0074a471477d56723bd6fd044b78c30ff5958f56
https://github.com/qemu/qemu/commit/0074a471477d56723bd6fd044b78c30ff5958f56
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M configure
M python/scripts/vendor.py
R python/wheels/meson-1.5.0-py3-none-any.whl
A python/wheels/meson-1.8.1-py3-none-any.whl
M pythondeps.toml
M tests/lcitool/mappings.yml
Log Message:
-----------
meson: update to version 1.8.1
This adds several improvements to Rust support, including
native clippy and rustdoc targets, the "objects" keyword,
and running doctests.
Require it only when Rust support is requested, to avoid
putting a strict requirement on all build platforms for the
sake of an experimental feature.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 4f04a4eaf0576a5a5a1c347b63d17b4d5244c979
https://github.com/qemu/qemu/commit/4f04a4eaf0576a5a5a1c347b63d17b4d5244c979
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M docs/devel/rust.rst
M rust/meson.build
M rust/qemu-api/meson.build
Log Message:
-----------
rust: use "objects" for Rust executables as well
libqemuutil is not meant be linked as a whole; if modules are enabled, doing
so results in undefined symbols (corresponding to QMP commands) in
rust/qemu-api/rust-qemu-api-integration.
Support for "objects" in Rust executables is available in Meson 1.8.0; use it
to switching to the same dependencies that C targets use: link_with for
libqemuutil, and objects for everything else.
Reported-by: Bernhard Beschow <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 53de966c3e8e6b9db3a81e8081be8e8275a0c6ee
https://github.com/qemu/qemu/commit/53de966c3e8e6b9db3a81e8081be8e8275a0c6ee
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M configure
M meson.build
M tests/docker/dockerfiles/fedora-rust-nightly.docker
M tests/docker/dockerfiles/ubuntu2204.docker
M tests/lcitool/refresh
Log Message:
-----------
build, dockerfiles: add support for detecting rustdoc
rustdoc is effectively a custom version of rustc, and it is necessary to
specify it in order to run doctests from Meson. Add the relevant configure
option and environment variables.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: f620cadc0c24ae414b46204e57a82f7bf586d2c4
https://github.com/qemu/qemu/commit/f620cadc0c24ae414b46204e57a82f7bf586d2c4
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M .gitlab-ci.d/buildtest-template.yml
M .gitlab-ci.d/buildtest.yml
M docs/devel/rust.rst
M rust/qemu-api/meson.build
Log Message:
-----------
rust: add qemu-api doctests to "meson test"
Doctests are weird. They are essentially integration tests, but they're
"ran" by executing rustdoc --test, which takes a compiler-ish
command line. This is supported by Meson 1.8.0.
Because they run the linker and need all the .o files, run them in the
build jobs rather than the test jobs.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 18c9f4a1729db1389218983379f6d62a9e550754
https://github.com/qemu/qemu/commit/18c9f4a1729db1389218983379f6d62a9e550754
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M rust/qemu-api/src/cell.rs
Log Message:
-----------
rust: cell: remove support for running doctests with "cargo test --doc"
This is not needed anymore now that tests link with libqemuutil.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 2409089b87692700deb38fc0b8ac94e31b70ffc3
https://github.com/qemu/qemu/commit/2409089b87692700deb38fc0b8ac94e31b70ffc3
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
A clippy.toml
M docs/devel/rust.rst
M meson.build
M rust/Cargo.toml
R rust/clippy.toml
M rust/meson.build
M scripts/rust/rustc_args.py
Log Message:
-----------
rust: use native Meson support for clippy and rustdoc
Meson has support for invoking clippy and rustdoc on all crates (1.7.0 for
clippy, 1.8.0 for rustdoc). Use it instead of the homegrown version; this
requires disabling the multiple_crate_versions lint (the only one that was
enabled from the "cargo" group)---which was not particularly useful anyway
because all dependencies are converted by hand into Meson subprojects.
rustfmt is still not supported.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 0b901459a87a7fdbed36e574aae33e0635a3e9af
https://github.com/qemu/qemu/commit/0b901459a87a7fdbed36e574aae33e0635a3e9af
Author: Xin Li (Intel) <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M target/i386/cpu.c
Log Message:
-----------
target/i386: Remove FRED dependency on WRMSRNS
WRMSRNS doesn't become a required feature for FERD, and Linux has
removed the dependency, as such remove it from Qemu.
Cc: [email protected]
Signed-off-by: Xin Li (Intel) <[email protected]>
Reviewed-by: Xiaoyao Li <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 99216748fd4e2b25dc0a7609e8a4fecea4c3eaf4
https://github.com/qemu/qemu/commit/99216748fd4e2b25dc0a7609e8a4fecea4c3eaf4
Author: Xin Li (Intel) <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M target/i386/cpu.c
M target/i386/cpu.h
Log Message:
-----------
target/i386: Add a new CPU feature word for CPUID.7.1.ECX
The immediate form of MSR access instructions will use this new CPU
feature word.
Signed-off-by: Xin Li (Intel) <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 91084f3b44b1da4935eec85b79c1f97d1c140ada
https://github.com/qemu/qemu/commit/91084f3b44b1da4935eec85b79c1f97d1c140ada
Author: Xin Li (Intel) <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M target/i386/cpu.c
M target/i386/cpu.h
Log Message:
-----------
target/i386: Add the immediate form MSR access instruction support
The immediate form of MSR access instructions are primarily motivated by
performance, not code size: by having the MSR number in an immediate, it
is available *much* earlier in the pipeline, which allows the hardware
much more leeway about how a particular MSR is handled.
Signed-off-by: Xin Li (Intel) <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 34d697f427d853e4cc14bb369b9134fe4b663cda
https://github.com/qemu/qemu/commit/34d697f427d853e4cc14bb369b9134fe4b663cda
Author: Pierrick Bouvier <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M meson.build
Log Message:
-----------
meson: use config_base_arch for target libraries
Fixed commit introduced common dependencies for target libraries. Alas,
it wrongly reused the 'target' variable, which was previously set from
another loop.
Thus, some dependencies were missing depending on order of target list,
as found here [1].
The fix is to use the correct config_base_arch instead.
Kudos to Thomas Huth who had this right, before I reimplement it, and
introduce this bug.
[1]
https://lore.kernel.org/qemu-devel/[email protected]/
Fixes: 4fb54de823e9 (meson: build target libraries with common dependencies)
Signed-off-by: Pierrick Bouvier <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Tested-by: Cédric Le Goater <[email protected]>
Link:
https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: e7f926eb7f5b81c709313974b476ed181c9c76d5
https://github.com/qemu/qemu/commit/e7f926eb7f5b81c709313974b476ed181c9c76d5
Author: Cédric Le Goater <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M target/i386/kvm/tdx.c
Log Message:
-----------
i386/tdx: Fix build on 32-bit host
Use PRI formats where required and fix pointer cast.
Cc: Xiaoyao Li <[email protected]>
Signed-off-by: Cédric Le Goater <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 6f1035fc65406c4e72e1dbd76e64924415edd616
https://github.com/qemu/qemu/commit/6f1035fc65406c4e72e1dbd76e64924415edd616
Author: Cédric Le Goater <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M hw/i386/tdvf.c
Log Message:
-----------
i386/tdvf: Fix build on 32-bit host
Use PRI formats where required.
Cc: Isaku Yamahata <[email protected]>
Signed-off-by: Cédric Le Goater <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 648fe157d33436f042d6b6434b9b88079f67fa33
https://github.com/qemu/qemu/commit/648fe157d33436f042d6b6434b9b88079f67fa33
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M rust/Cargo.lock
M rust/Cargo.toml
A rust/bits/Cargo.toml
A rust/bits/meson.build
A rust/bits/src/lib.rs
M rust/meson.build
A rust/qemu-api-macros/src/bits.rs
M rust/qemu-api-macros/src/lib.rs
Log Message:
-----------
rust: add "bits", a custom bitflags implementation
One common thing that device emulation does is manipulate bitmasks, for example
to check whether two bitmaps have common bits. One example in the pl011 crate
is the checks for pending interrupts, where an interrupt cause corresponds to
at least one interrupt source from a fixed set.
Unfortunately, this is one case where Rust *can* provide some kind of
abstraction but it does so with a rather Perl-ish There Is More Way To
Do It. It is not something where a crate like "bilge" helps, because
it only covers the packing of bits in a structure; operations like "are
all bits of Y set in X" almost never make sense for bit-packed structs;
you need something else, there are several crates that do it and of course
we're going to roll our own.
In particular I examined three:
- bitmask (https://docs.rs/bitmask/0.5.0/bitmask/) does not support const
at all. This is a showstopper because one of the ugly things in the
current pl011 code is the ugliness of code that defines interrupt masks
at compile time:
pub const E: Self = Self(Self::OE.0 | Self::BE.0 | Self::PE.0 | Self::FE.0);
or even worse:
const IRQMASK: [u32; 6] = [
Interrupt::E.0 | Interrupt::MS.0 | Interrupt::RT.0 | Interrupt::TX.0 |
Interrupt::RX.0,
...
}
You would have to use roughly the same code---"bitmask" only helps with
defining the struct.
- bitmask_enum (https://docs.rs/bitmask-enum/2.2.5/bitmask_enum/) does not
have a good separation of "valid" and "invalid" bits, so for example "!x"
will invert all 16 bits if you choose u16 as the representation -- even if
you only defined 10 bits. This makes it easier to introduce subtle bugs
in comparisons.
- bitflags (https://docs.rs/bitflags/2.6.0/bitflags/) is generally the most
used such crate and is the one that I took most inspiration from with
respect to the syntax. It's a pretty sophisticated implementation,
with a lot of bells and whistles such as an implementation of "Iter"
that returns the bits one at a time.
The main thing that all of them lack, however, is a way to simplify the
ugly definitions like the above. "bitflags" includes const methods that
perform AND/OR/XOR of masks (these are necessary because Rust operator
overloading does not support const yet, and therefore overloaded operators
cannot be used in the definition of a "static" variable), but they become
even more verbose and unmanageable, like
Interrupt::E.union(Interrupt::MS).union(Interrupt::RT).union(Interrupt::TX).union(Interrupt::RX)
This was the main reason to create "bits", which allows something like
bits!(Interrupt: E | MS | RT | TX | RX)
and expands it 1) add "Interrupt::" in front of all identifiers 2) convert
operators to the wordy const functions like "union". It supports boolean
operators "&", "|", "^", "!" and parentheses, with a relatively simple
recursive descent parser that's implemented in qemu_api_macros.
Since I don't remember exactly how the macro was developed, I cannot exclude
that it contains code from "bitflags". Therefore, I am conservatively leaving
in the MIT and Apache 2.0 licenses from bitflags. In fact, I think there
would be a benefit in being able to push code back to "bitflags" anyway
whenever applicable, so that the two libraries do not diverge too much,
so that's another reason to use this.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 9c8ff2a1ed51b52ac64b80d35bdbd239b7b5d8e5
https://github.com/qemu/qemu/commit/9c8ff2a1ed51b52ac64b80d35bdbd239b7b5d8e5
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M rust/Cargo.lock
M rust/hw/char/pl011/Cargo.toml
M rust/hw/char/pl011/meson.build
M rust/hw/char/pl011/src/device.rs
M rust/hw/char/pl011/src/registers.rs
Log Message:
-----------
rust: pl011: use the bits macro
This avoids the repeated ".0" when using the Interrupt struct.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 214518614c1ce7eb7a002452cd43a7597f90d543
https://github.com/qemu/qemu/commit/214518614c1ce7eb7a002452cd43a7597f90d543
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-03 (Tue, 03 Jun 2025)
Changed paths:
M rust/qemu-api-macros/src/lib.rs
Log Message:
-----------
rust: qemu-api-macros: add from_bits and into_bits to #[derive(TryInto)]
These const functions make it possible to use enums easily together
with the bitfield-struct crate.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: f8a113701dd2d28f3bedb216e59125ddcb77fd05
https://github.com/qemu/qemu/commit/f8a113701dd2d28f3bedb216e59125ddcb77fd05
Author: Stefan Hajnoczi <[email protected]>
Date: 2025-06-04 (Wed, 04 Jun 2025)
Changed paths:
M .gitlab-ci.d/buildtest-template.yml
M .gitlab-ci.d/buildtest.yml
A clippy.toml
M configure
M docs/devel/rust.rst
M hw/i386/tdvf.c
M meson.build
M python/scripts/vendor.py
R python/wheels/meson-1.5.0-py3-none-any.whl
A python/wheels/meson-1.8.1-py3-none-any.whl
M pythondeps.toml
M rust/Cargo.lock
M rust/Cargo.toml
A rust/bits/Cargo.toml
A rust/bits/meson.build
A rust/bits/src/lib.rs
R rust/clippy.toml
M rust/hw/char/pl011/Cargo.toml
M rust/hw/char/pl011/meson.build
M rust/hw/char/pl011/src/device.rs
M rust/hw/char/pl011/src/registers.rs
M rust/meson.build
A rust/qemu-api-macros/src/bits.rs
M rust/qemu-api-macros/src/lib.rs
M rust/qemu-api/meson.build
M rust/qemu-api/src/bindings.rs
M rust/qemu-api/src/cell.rs
M scripts/rust/rustc_args.py
M target/i386/cpu.c
M target/i386/cpu.h
M target/i386/kvm/tdx.c
M tests/docker/dockerfiles/fedora-rust-nightly.docker
M tests/docker/dockerfiles/ubuntu2204.docker
M tests/lcitool/mappings.yml
M tests/lcitool/refresh
Log Message:
-----------
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging
* rust: use native Meson support for clippy and rustdoc
* rust: add "bits", a custom bitflags implementation
* target/i386: Remove FRED dependency on WRMSRNS
* target/i386: Add the immediate form MSR access instruction support
* TDX fixes
# -----BEGIN PGP SIGNATURE-----
#
# iQFIBAABCgAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmg/XrsUHHBib256aW5p
# QHJlZGhhdC5jb20ACgkQv/vSX3jHroOPIwf/VXh98Wd+7BJLkNJVFpczSF7YhJ5J
# a5BcWLOdVrzEJoqvfc9lkubgpShgzYDYJH99F/FloHddkPvZ1NRB2JXtDB1O3sSC
# NGaI4YM8uA/k21pt1jQtDJkk3Az7GNIBIcvi4HR5GjTOvOKGOXLpYErK52lM4GNG
# Aa17/Rb9Ug+QzyuS1M+mDPFdY2X6Hore2jXsp3ZH+U8hs+khecHEPsZUZ/Nlr1Z7
# UoiYks4U29wtVJ/BCjNkgXoMJC6uqL/nOP5dLJBgboOodrtwdwpDMIUcyPLrOnjf
# ugJx0zYHIVdqpdft72EvLD92bzB8WoUiPsUA/dG45gGmhzuYWDmOqSdaKg==
# =l0gm
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 03 Jun 2025 16:44:43 EDT
# gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg: issuer "[email protected]"
# gpg: Good signature from "Paolo Bonzini <[email protected]>" [full]
# gpg: aka "Paolo Bonzini <[email protected]>" [full]
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1
# Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83
* tag 'for-upstream' of https://gitlab.com/bonzini/qemu:
rust: qemu-api-macros: add from_bits and into_bits to #[derive(TryInto)]
rust: pl011: use the bits macro
rust: add "bits", a custom bitflags implementation
i386/tdvf: Fix build on 32-bit host
i386/tdx: Fix build on 32-bit host
meson: use config_base_arch for target libraries
target/i386: Add the immediate form MSR access instruction support
target/i386: Add a new CPU feature word for CPUID.7.1.ECX
target/i386: Remove FRED dependency on WRMSRNS
rust: use native Meson support for clippy and rustdoc
rust: cell: remove support for running doctests with "cargo test --doc"
rust: add qemu-api doctests to "meson test"
build, dockerfiles: add support for detecting rustdoc
rust: use "objects" for Rust executables as well
meson: update to version 1.8.1
rust: bindings: allow ptr_offset_with_cast
Signed-off-by: Stefan Hajnoczi <[email protected]>
Compare: https://github.com/qemu/qemu/compare/09be8a511a2e...f8a113701dd2
To unsubscribe from these emails, change your notification settings at
https://github.com/qemu/qemu/settings/notifications