Branch: refs/heads/staging Home: https://github.com/qemu/qemu Commit: 588ffa75eba30baf75d1ba246c5f917e8716fcaa https://github.com/qemu/qemu/commit/588ffa75eba30baf75d1ba246c5f917e8716fcaa Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025)
Changed paths: M target/ppc/helper_regs.c Log Message: ----------- target/ppc: limit cpu_interrupt_exittb to system emulation It is not used by user-mode emulation and is the only caller of cpu_interrupt() in qemu-ppc* binaries. Reviewed-by: Igor Mammedov <imamm...@redhat.com> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: a445d3b85c4119aac7ecb7771b5da0709ee1f1a4 https://github.com/qemu/qemu/commit/a445d3b85c4119aac7ecb7771b5da0709ee1f1a4 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M target/sparc/int32_helper.c M target/sparc/int64_helper.c Log Message: ----------- target/sparc: limit cpu_check_irqs to system emulation It is not used by user-mode emulation and is the only caller of cpu_interrupt() in qemu-sparc* binaries. Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 3efe1a0f604cb7c4afd0381294acbdec75c65325 https://github.com/qemu/qemu/commit/3efe1a0f604cb7c4afd0381294acbdec75c65325 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M target/i386/helper.c Log Message: ----------- target/i386: limit a20 to system emulation It is not used by user-mode emulation and is the only caller of cpu_interrupt() in qemu-i386 and qemu-x86_64. Reviewed-by: Igor Mammedov <imamm...@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: bd1cefdd9f18bfbdcb597d7d552fbf31dee47a28 https://github.com/qemu/qemu/commit/bd1cefdd9f18bfbdcb597d7d552fbf31dee47a28 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: A target/arm/cpu-irq.c M target/arm/cpu.c A target/arm/el2-stubs.c M target/arm/helper.c M target/arm/internals.h M target/arm/meson.build Log Message: ----------- target-arm: remove uses of cpu_interrupt() for user-mode emulation Arm leaves around some functions that use cpu_interrupt(), even for user-mode emulation when the code is unreachable. Pull out the system-mode implementation to a separate file, and add stubs for CONFIG_USER_ONLY. Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 11a73c6ea37483f7be85f6afebb4334d97d3050c https://github.com/qemu/qemu/commit/11a73c6ea37483f7be85f6afebb4334d97d3050c Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/tcg/user-exec.c Log Message: ----------- user-exec: remove cpu_interrupt() stub Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 602d5ebba26b245730a0b6a4855b1812d587725c https://github.com/qemu/qemu/commit/602d5ebba26b245730a0b6a4855b1812d587725c Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/tcg/cpu-exec.c M hw/core/cpu-system.c M target/avr/helper.c M target/i386/hvf/x86hvf.c M target/i386/kvm/kvm.c M target/i386/nvmm/nvmm-all.c M target/i386/tcg/system/seg_helper.c M target/i386/tcg/system/svm_helper.c M target/i386/whpx/whpx-all.c M target/openrisc/sys_helper.c M target/rx/helper.c M target/s390x/tcg/excp_helper.c Log Message: ----------- treewide: clear bits of cs->interrupt_request with cpu_reset_interrupt() Open coding cpu_reset_interrupt() can cause bugs if the BQL is not taken, for example i386 has the call chain kvm_cpu_exec() -> kvm_put_vcpu_events() -> kvm_arch_put_registers(). Reviewed-by: Igor Mammedov <imamm...@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 27e76d010104646c997d20ca0996fb5a046587b0 https://github.com/qemu/qemu/commit/27e76d010104646c997d20ca0996fb5a046587b0 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M hw/core/cpu-common.c M include/hw/core/cpu.h M system/cpus.c Log Message: ----------- cpu-common: use atomic access for interrupt_request Writes to interrupt_request used non-atomic accesses, but there are a few cases where the access was not protected by the BQL. Now that there is a full set of helpers, it's easier to guarantee that interrupt_request accesses are fully atomic, so just drop the requirement instead of fixing them. Reviewed-by: Igor Mammedov <imamm...@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 9e1ecd4aaaf9aa2f5b7caf364a10241a2cba02a8 https://github.com/qemu/qemu/commit/9e1ecd4aaaf9aa2f5b7caf364a10241a2cba02a8 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M include/hw/core/cpu.h Log Message: ----------- cpus: document that qemu_cpu_kick() can be used for BQL-less operation Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: ac6c8a390b451913995ee784ef7261b8928e5ace https://github.com/qemu/qemu/commit/ac6c8a390b451913995ee784ef7261b8928e5ace Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/kvm/kvm-all.c M accel/tcg/cpu-exec.c M accel/tcg/tcg-accel-ops-rr.c M hw/core/cpu-common.c M target/i386/nvmm/nvmm-all.c M target/i386/whpx/whpx-all.c Log Message: ----------- accel: use store_release/load_acquire for cross-thread exit_request Reads and writes cpu->exit_request do not use a load-acquire/store-release pair right now, but this means that cpu_exit() may not write cpu->exit_request after any flags that are read by the vCPU thread. Probably everything is protected one way or the other by the BQL, because cpu->exit_request leads to the slow path, where the CPU thread often takes the BQL (for example, to go to sleep by waiting on the BQL-protected cpu->halt_cond); but it's not clear, so use load-acquire/store-release consistently. Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Reviewed-by: Peter Xu <pet...@redhat.com> Reviewed-by: Igor Mammedov <imamm...@redhat.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: f084ff128b6136e1aebfd73e1cf7066a077a79bf https://github.com/qemu/qemu/commit/f084ff128b6136e1aebfd73e1cf7066a077a79bf Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/kvm/kvm-all.c M accel/tcg/tcg-accel-ops-mttcg.c M accel/tcg/tcg-accel-ops-rr.c M hw/ppc/spapr_hcall.c M include/hw/core/cpu.h M target/i386/kvm/kvm.c M target/i386/nvmm/nvmm-accel-ops.c M target/i386/nvmm/nvmm-all.c M target/i386/whpx/whpx-all.c Log Message: ----------- accel: use atomic accesses for exit_request CPU threads write exit_request as a "note to self" that they need to go out to a slow path. This write happens out of the BQL and can be a data race with another threads' cpu_exit(); use atomic accesses consistently. While at it, change the source argument from int ("1") to bool ("true"). Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Peter Xu <pet...@redhat.com> Reviewed-by: Igor Mammedov <imamm...@redhat.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 9cf342b491f6872d316b7b0c3cbc0f6157f28797 https://github.com/qemu/qemu/commit/9cf342b491f6872d316b7b0c3cbc0f6157f28797 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/tcg/cpu-exec.c M accel/tcg/tcg-accel-ops-mttcg.c M accel/tcg/tcg-accel-ops-mttcg.h M accel/tcg/tcg-accel-ops-rr.c M accel/tcg/tcg-accel-ops.c M accel/tcg/tcg-accel-ops.h M accel/tcg/user-exec.c M bsd-user/main.c M docs/devel/tcg-icount.rst M linux-user/main.c Log Message: ----------- accel/tcg: create a thread-kick function for TCG Round-robin TCG is calling into cpu_exit() directly. In preparation for making cpu_exit() usable from all accelerators, define a generic thread-kick function for TCG which is used directly in the multi-threaded case, and through CPU_FOREACH in the round-robin case. Use it also for user-mode emulation, and take the occasion to move the implementation to accel/tcg/user-exec.c. Reviewed-by: Igor Mammedov <imamm...@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 61d996da508fe4082f1cbfd9b51c8c47f535a993 https://github.com/qemu/qemu/commit/61d996da508fe4082f1cbfd9b51c8c47f535a993 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/tcg/cpu-exec.c Log Message: ----------- accel/tcg: inline cpu_exit() Right now, cpu_exit() is not usable from all accelerators because it includes a TCG-specific thread kick. In fact, cpu_exit() doubles as the TCG thread-kick via tcg_kick_vcpu_thread(). In preparation for changing that, inline cpu_exit() into tcg_kick_vcpu_thread(). The direction of the calls can then be reversed, with an accelerator-independent cpu_exit() calling into qemu_vcpu_kick() rather than the opposite. Reviewed-by: Igor Mammedov <imamm...@redhat.com> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: dcb46ecb2e90d532fcdc04702c92e732a0ef77e8 https://github.com/qemu/qemu/commit/dcb46ecb2e90d532fcdc04702c92e732a0ef77e8 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M hw/core/cpu-common.c Log Message: ----------- cpus: remove TCG-ism from cpu_exit() Now that TCG has its own kick function, make cpu_exit() do the right kick for all accelerators. Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Reviewed-by: Igor Mammedov <imamm...@redhat.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: f8217ae54e4c44a7f0d20d56a5368ec1818f1cc2 https://github.com/qemu/qemu/commit/f8217ae54e4c44a7f0d20d56a5368ec1818f1cc2 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M cpu-common.c M hw/ppc/ppc.c M hw/ppc/spapr_hcall.c M hw/ppc/spapr_rtas.c M replay/replay-events.c M system/cpu-timers.c M system/cpus.c M target/arm/tcg/mte_helper.c M target/i386/kvm/hyperv.c Log Message: ----------- cpus: properly kick CPUs out of inner execution loop Now that cpu_exit() actually kicks all accelerators, use it whenever the message to another thread is processed in qemu_wait_io_event(). Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 871de7078fcaf597605576b97b32fab14722ea43 https://github.com/qemu/qemu/commit/871de7078fcaf597605576b97b32fab14722ea43 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/dummy-cpus.c M accel/hvf/hvf-accel-ops.c M accel/kvm/kvm-accel-ops.c M accel/tcg/tcg-accel-ops-mttcg.c M accel/tcg/tcg-accel-ops-rr.c M cpu-common.c M include/hw/core/cpu.h M include/system/cpus.h M system/cpus.c M target/i386/nvmm/nvmm-accel-ops.c M target/i386/whpx/whpx-accel-ops.c Log Message: ----------- treewide: rename qemu_wait_io_event/qemu_wait_io_event_common Do so before extending it to the user-mode emulators, where there is no such thing as an "I/O thread". Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 758e5de501f78d4ef53a43e0c5a4783cd807b5be https://github.com/qemu/qemu/commit/758e5de501f78d4ef53a43e0c5a4783cd807b5be Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/tcg/user-exec.c M bsd-user/aarch64/target_arch_cpu.h M bsd-user/arm/target_arch_cpu.h M bsd-user/i386/target_arch_cpu.h M bsd-user/riscv/target_arch_cpu.h M bsd-user/x86_64/target_arch_cpu.h M include/hw/core/cpu.h M include/system/cpus.h M linux-user/aarch64/cpu_loop.c M linux-user/alpha/cpu_loop.c M linux-user/arm/cpu_loop.c M linux-user/hexagon/cpu_loop.c M linux-user/hppa/cpu_loop.c M linux-user/i386/cpu_loop.c M linux-user/loongarch64/cpu_loop.c M linux-user/m68k/cpu_loop.c M linux-user/microblaze/cpu_loop.c M linux-user/mips/cpu_loop.c M linux-user/openrisc/cpu_loop.c M linux-user/ppc/cpu_loop.c M linux-user/riscv/cpu_loop.c M linux-user/s390x/cpu_loop.c M linux-user/sh4/cpu_loop.c M linux-user/sparc/cpu_loop.c M linux-user/xtensa/cpu_loop.c Log Message: ----------- bsd-user, linux-user: introduce qemu_process_cpu_events Add a user-mode emulation version of the function. More will be added later, for now it is just process_queued_cpu_work. Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 9a191d3782d707062c42b9fc9f22d9f55d4ed375 https://github.com/qemu/qemu/commit/9a191d3782d707062c42b9fc9f22d9f55d4ed375 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/kvm/kvm-all.c M accel/tcg/cpu-exec.c M accel/tcg/tcg-accel-ops-rr.c M accel/tcg/tcg-accel-ops.c M accel/tcg/user-exec.c M system/cpus.c M target/i386/nvmm/nvmm-all.c M target/i386/whpx/whpx-all.c Log Message: ----------- cpus: clear exit_request in qemu_process_cpu_events Make the code common to all accelerators: after seeing cpu->exit_request set to true, accelerator code needs to reach qemu_process_cpu_events_common(). So for the common cases where they use qemu_process_cpu_events(), go ahead and clear it in there. Note that the cheap qatomic_set() is enough because at this point the thread has taken the BQL; qatomic_set_mb() is not needed. In particular, this is the ordering of the communication between I/O and vCPU threads is always the same. In the I/O thread: (a) store other memory locations that will be checked if cpu->exit_request or cpu->interrupt_request is 1 (for example cpu->stop or cpu->work_list for cpu->exit_request) (b) cpu_exit(): store-release cpu->exit_request, or (b) cpu_interrupt(): store-release cpu->interrupt_request >>> at this point, cpu->halt_cond is broadcast and the BQL released (c) do the accelerator-specific kick (e.g. write icount_decr for TCG, pthread_kill for KVM, etc.) In the vCPU thread instead the opposite order is respected: (c) the accelerator's execution loop exits thanks to the kick (b) then the inner execution loop checks cpu->interrupt_request and cpu->exit_request. If needed cpu->interrupt_request is converted into cpu->exit_request when work is needed outside the execution loop. (a) then the other memory locations are checked. Some may need to be read under the BQL, but the vCPU thread may also take other locks (e.g. for queued work items) or none at all. qatomic_set_mb() would only be needed if the halt sleep was done outside the BQL (though in that case, cpu->exit_request probably would be replaced by a QemuEvent or something like that). Reviewed-by: Igor Mammedov <imamm...@redhat.com> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: d5e33b5f8f5a787bc4bb38bd0b9a8c3e3a0aa9f0 https://github.com/qemu/qemu/commit/d5e33b5f8f5a787bc4bb38bd0b9a8c3e3a0aa9f0 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/dummy-cpus.c M accel/hvf/hvf-accel-ops.c M accel/kvm/kvm-accel-ops.c M accel/tcg/tcg-accel-ops-mttcg.c M accel/tcg/tcg-accel-ops-rr.c M target/i386/nvmm/nvmm-accel-ops.c M target/i386/whpx/whpx-accel-ops.c Log Message: ----------- accel: make all calls to qemu_process_cpu_events look the same There is no reason for some accelerators to use qemu_process_cpu_events_common (which is separated from qemu_process_cpu_events() specifically for round robin TCG). They can also check for events directly on the first pass through the loop, instead of setting cpu->exit_request to true. Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: b422a7bff64eaf55b8250225533ca1df42c3777e https://github.com/qemu/qemu/commit/b422a7bff64eaf55b8250225533ca1df42c3777e Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/tcg/cpu-exec.c Log Message: ----------- tcg/user: do not set exit_request gratuitously Whenever user-mode emulation needs to go all the way out of the cpu exec loop, it uses cpu_exit(), which already sets cpu->exit_request. Therefore, there is no need for tcg_kick_vcpu_thread() to set cpu->exit_request again outside system emulation. Reviewed-by: Igor Mammedov <imamm...@redhat.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 614fff7c0a2e28ed8675bbc3385ad88a76d4ee3a https://github.com/qemu/qemu/commit/614fff7c0a2e28ed8675bbc3385ad88a76d4ee3a Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M .gitlab-ci.d/buildtest.yml Log Message: ----------- ci: temporarily remove rust from Ubuntu This is for the purpose of getting an easy-to-use base for future development. The plan is: - that Debian will require trixie to enable Rust usage - that Ubuntu will backport 1.83 to its 22.04 and 24.04 versions (https://bugs.launchpad.net/ubuntu/+source/rustc-1.83/+bug/2120318) Marc-André is working on adding Rust to other CI jobs. Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-2-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 091f115ea5d40880e74123f2a7cd12f3dd32d624 https://github.com/qemu/qemu/commit/091f115ea5d40880e74123f2a7cd12f3dd32d624 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M configure M python/scripts/vendor.py R python/wheels/meson-1.8.1-py3-none-any.whl A python/wheels/meson-1.9.0-py3-none-any.whl M pythondeps.toml Log Message: ----------- configure: bump Meson to 1.9.0 for use with Rust Meson 1.9.0 provides mixed linking of Rust and C objects. As a side effect, this also allows adding dependencies with "sources: ..." files to Rust crates that use structured_sources(). It can also clean up up the meson.build files for Rust noticeably, but due to an issue with doctests (see https://github.com/mesonbuild/meson/pull/14973) that will have to wait for 1.9.1. Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-3-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: e1c689c2189087bcab258f0a99019bb900986af7 https://github.com/qemu/qemu/commit/e1c689c2189087bcab258f0a99019bb900986af7 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M clippy.toml M docs/about/build-platforms.rst M docs/devel/rust.rst M meson.build M rust/Cargo.toml Log Message: ----------- meson, cargo: require Rust 1.83.0 Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-4-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 71e84e5ae87b8e6adce3af7dd2a490c7b2f39772 https://github.com/qemu/qemu/commit/71e84e5ae87b8e6adce3af7dd2a490c7b2f39772 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/bits/src/lib.rs M rust/qemu-api/src/assertions.rs M rust/qemu-api/src/cell.rs M rust/qemu-api/src/qom.rs M rust/qemu-api/src/timer.rs M rust/qemu-api/src/uninit.rs Log Message: ----------- rust: add missing const markers for MSRV==1.83.0 Rust 1.83 allows more functions to be marked const. Fix clippy with bumped minimum supported Rust version. Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-5-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: aecca0676ddd9e032de4eeda371b81598d3257bb https://github.com/qemu/qemu/commit/aecca0676ddd9e032de4eeda371b81598d3257bb Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M docs/devel/rust.rst M rust/qemu-api/src/callbacks.rs M rust/qemu-api/src/chardev.rs M rust/qemu-api/src/qdev.rs M rust/qemu-api/src/timer.rs M rust/qemu-api/src/vmstate.rs Log Message: ----------- rust: use inline const expressions They were stabilized in Rust 1.79.0. Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-6-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: a71df7e143b57427c1f8a917654e7b0ed1ceb919 https://github.com/qemu/qemu/commit/a71df7e143b57427c1f8a917654e7b0ed1ceb919 Author: Manos Pitsidianakis <manos.pitsidiana...@linaro.org> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/hw/char/pl011/src/device.rs M rust/hw/timer/hpet/src/device.rs M rust/qemu-api-macros/src/lib.rs M rust/qemu-api-macros/src/tests.rs M rust/qemu-api/src/qdev.rs M rust/qemu-api/tests/tests.rs Log Message: ----------- rust: add qdev Device derive macro Add derive macro for declaring qdev properties directly above the field definitions. To do this, we split DeviceImpl::properties method on a separate trait so we can implement only that part in the derive macro expansion (we cannot partially implement the DeviceImpl trait). Adding a `property` attribute above the field declaration will generate a `qemu_api::bindings::Property` array member in the device's property list. Signed-off-by: Manos Pitsidianakis <manos.pitsidiana...@linaro.org> Link: https://lore.kernel.org/r/20250711-rust-qdev-properties-v3-1-e19862441...@linaro.org Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 7da9ee9207c55a783567eb46c71fa89cb5b43461 https://github.com/qemu/qemu/commit/7da9ee9207c55a783567eb46c71fa89cb5b43461 Author: Zhao Liu <zhao1....@intel.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M docs/devel/rust.rst M rust/hw/char/pl011/src/device.rs M rust/hw/timer/hpet/src/device.rs M rust/qemu-api/src/errno.rs M rust/qemu-api/src/qdev.rs M rust/qemu-api/src/vmstate.rs M rust/qemu-api/tests/tests.rs M rust/qemu-api/tests/vmstate_tests.rs Log Message: ----------- rust: vmstate: convert to use builder pattern Similar to MemoryRegionOps, the builder pattern has two advantages: 1) it makes it possible to build a VMStateDescription that knows which types it will be invoked on; 2) it provides a way to wrap the callbacks and let devices avoid "unsafe". Unfortunately, building a static VMStateDescription requires the builder methods to be "const", and because the VMStateFields are *also* static, this requires const_refs_static. So this requires Rust 1.83.0. Signed-off-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-8-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: dcdee1e718f9400a2bf523f2b009fb936370ae4b https://github.com/qemu/qemu/commit/dcdee1e718f9400a2bf523f2b009fb936370ae4b Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M docs/devel/rust.rst M rust/hw/char/pl011/src/device.rs M rust/hw/timer/hpet/src/device.rs M rust/qemu-api/src/assertions.rs M rust/qemu-api/src/vmstate.rs M rust/qemu-api/tests/vmstate_tests.rs Log Message: ----------- rust: vmstate: use const_refs_to_static The VMStateDescriptionBuilder already needs const_refs_static, so use it to remove the need for vmstate_clock! and vmstate_struct!, as well as to simplify the implementation for scalars. If the consts in the VMState trait can reference to static VMStateDescription, scalars do not need the info_enum_to_ref! indirection and structs can implement the VMState trait themselves. Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-9-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 2a8a7bb8aaf54c3c878a616884a2e4bb239b6095 https://github.com/qemu/qemu/commit/2a8a7bb8aaf54c3c878a616884a2e4bb239b6095 Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/hw/char/pl011/src/device.rs M rust/hw/timer/hpet/src/device.rs M rust/qemu-api-macros/src/lib.rs M rust/qemu-api-macros/src/tests.rs M rust/qemu-api/src/qdev.rs M rust/qemu-api/tests/tests.rs Log Message: ----------- rust: qdev: const_refs_to_static Now that const_refs_static can be assumed, convert the members of the DeviceImpl trait from functions to constants. This lets the compiler know that they have a 'static lifetime, and removes the need for the weird "Box::leak()". Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-10-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 945bf29aa82a2dfca3f69a19b7d048cddcc095bf https://github.com/qemu/qemu/commit/945bf29aa82a2dfca3f69a19b7d048cddcc095bf Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M docs/devel/rust.rst M rust/Cargo.toml Log Message: ----------- docs/rust: update msrv Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-2-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: f665219b03dda114539c637c50c748a2ebd73c82 https://github.com/qemu/qemu/commit/f665219b03dda114539c637c50c748a2ebd73c82 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M meson.build M rust/Cargo.toml M rust/qemu-api/Cargo.toml M rust/qemu-api/meson.build M rust/qemu-api/src/lib.rs Log Message: ----------- rust: remove unused global qemu "allocator" The global allocator has always been disabled. There is no clear reason Rust and C should use the same allocator. Allocations made from Rust must be freed by Rust, and same for C, otherwise we head into troubles. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-3-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: d85df9a8e2436d1243a28f580e1bf155519dfdfe https://github.com/qemu/qemu/commit/d85df9a8e2436d1243a28f580e1bf155519dfdfe Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/Cargo.toml Log Message: ----------- rust: add workspace authors Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-4-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 88cf78e9172850c786d24d298adfadd09ec43a80 https://github.com/qemu/qemu/commit/88cf78e9172850c786d24d298adfadd09ec43a80 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/qemu-api/src/qdev.rs M rust/qemu-api/src/vmstate.rs Log Message: ----------- rust: move vmstate_clock!() to qdev module This will allow to split vmstate to a standalone crate next. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-8-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 0611dd418abbf5d7c011bd465779cb955cea0f39 https://github.com/qemu/qemu/commit/0611dd418abbf5d7c011bd465779cb955cea0f39 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/qemu-api/src/qom.rs M rust/qemu-api/src/vmstate.rs Log Message: ----------- rust: move VMState handling to QOM module This will allow to split vmstate to a standalone crate next. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-9-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: a6765c04beac0a3e20032b619df6afbc70b6ef74 https://github.com/qemu/qemu/commit/a6765c04beac0a3e20032b619df6afbc70b6ef74 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/qemu-api/src/cell.rs M rust/qemu-api/src/vmstate.rs Log Message: ----------- rust: move Cell vmstate impl This will allow to split vmstate to a standalone crate next. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-10-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 593c408a6a8cd8b0af9bf60c7c3625da7910a737 https://github.com/qemu/qemu/commit/593c408a6a8cd8b0af9bf60c7c3625da7910a737 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock M rust/Cargo.toml A rust/common/Cargo.toml A rust/common/meson.build A rust/common/src/assertions.rs A rust/common/src/bitops.rs A rust/common/src/callbacks.rs A rust/common/src/errno.rs A rust/common/src/lib.rs A rust/common/src/opaque.rs A rust/common/src/uninit.rs A rust/common/src/zeroable.rs 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/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/hw/timer/hpet/src/fw_cfg.rs M rust/meson.build M rust/qemu-api-macros/src/lib.rs M rust/qemu-api-macros/src/tests.rs M rust/qemu-api/Cargo.toml M rust/qemu-api/meson.build R rust/qemu-api/src/assertions.rs M rust/qemu-api/src/bindings.rs R rust/qemu-api/src/bitops.rs R rust/qemu-api/src/callbacks.rs M rust/qemu-api/src/cell.rs M rust/qemu-api/src/chardev.rs R rust/qemu-api/src/errno.rs M rust/qemu-api/src/error.rs M rust/qemu-api/src/irq.rs M rust/qemu-api/src/lib.rs M rust/qemu-api/src/log.rs M rust/qemu-api/src/memory.rs M rust/qemu-api/src/prelude.rs M rust/qemu-api/src/qdev.rs M rust/qemu-api/src/qom.rs M rust/qemu-api/src/sysbus.rs M rust/qemu-api/src/timer.rs R rust/qemu-api/src/uninit.rs M rust/qemu-api/src/vmstate.rs R rust/qemu-api/src/zeroable.rs M rust/qemu-api/tests/vmstate_tests.rs Log Message: ----------- rust: split Rust-only "common" crate Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-6-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 1e70d83de4d502759d6e68fbac301c1243088385 https://github.com/qemu/qemu/commit/1e70d83de4d502759d6e68fbac301c1243088385 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/qemu-api/build.rs Log Message: ----------- rust: make build.rs generic over various ./rust/projects Guess the name of the subdir from the manifest directory, instead of hard-coding it. In the following commits, other crates can then link to this file, instead of maintaining their own copy. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-5-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 59869b4d58854190f09a79c5392d60fdc0b55d45 https://github.com/qemu/qemu/commit/59869b4d58854190f09a79c5392d60fdc0b55d45 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock M rust/Cargo.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/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/meson.build M rust/qemu-api-macros/src/lib.rs M rust/qemu-api-macros/src/tests.rs M rust/qemu-api/Cargo.toml R rust/qemu-api/build.rs A rust/qemu-api/build.rs M rust/qemu-api/meson.build M rust/qemu-api/src/bindings.rs R rust/qemu-api/src/error.rs M rust/qemu-api/src/lib.rs R rust/qemu-api/src/log.rs R rust/qemu-api/src/module.rs M rust/qemu-api/src/prelude.rs M rust/qemu-api/src/qdev.rs M rust/qemu-api/src/sysbus.rs R rust/qemu-api/src/timer.rs M rust/qemu-api/src/vmstate.rs M rust/qemu-api/tests/tests.rs M rust/qemu-api/wrapper.h A rust/util/Cargo.toml A rust/util/build.rs A rust/util/meson.build A rust/util/src/bindings.rs A rust/util/src/error.rs A rust/util/src/lib.rs A rust/util/src/log.rs A rust/util/src/module.rs A rust/util/src/timer.rs A rust/util/wrapper.h Log Message: ----------- rust: split "util" crate Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-7-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 4dff343d2312bfec25f95ab99ed1068511ddbebb https://github.com/qemu/qemu/commit/4dff343d2312bfec25f95ab99ed1068511ddbebb Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock M rust/Cargo.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/hw/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/meson.build A rust/migration/Cargo.toml A rust/migration/build.rs A rust/migration/meson.build A rust/migration/src/bindings.rs A rust/migration/src/lib.rs A rust/migration/src/vmstate.rs A rust/migration/wrapper.h M rust/qemu-api/Cargo.toml M rust/qemu-api/meson.build M rust/qemu-api/src/bindings.rs M rust/qemu-api/src/cell.rs M rust/qemu-api/src/lib.rs M rust/qemu-api/src/prelude.rs M rust/qemu-api/src/qdev.rs M rust/qemu-api/src/qom.rs R rust/qemu-api/src/vmstate.rs M rust/qemu-api/tests/tests.rs M rust/qemu-api/tests/vmstate_tests.rs M rust/qemu-api/wrapper.h Log Message: ----------- rust: split "migration" crate Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-11-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: f6b4f0dd9c57079b72ca9ff7569ce4d0dbdcc4d9 https://github.com/qemu/qemu/commit/f6b4f0dd9c57079b72ca9ff7569ce4d0dbdcc4d9 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock M rust/Cargo.toml A rust/bql/Cargo.toml A rust/bql/build.rs A rust/bql/meson.build A rust/bql/src/bindings.rs A rust/bql/src/cell.rs A rust/bql/src/lib.rs A rust/bql/wrapper.h M rust/common/src/opaque.rs 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/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/hw/timer/hpet/src/fw_cfg.rs M rust/meson.build M rust/migration/src/vmstate.rs M rust/qemu-api/Cargo.toml M rust/qemu-api/meson.build R rust/qemu-api/src/cell.rs M rust/qemu-api/src/chardev.rs M rust/qemu-api/src/irq.rs M rust/qemu-api/src/lib.rs M rust/qemu-api/src/prelude.rs M rust/qemu-api/src/qdev.rs M rust/qemu-api/src/qom.rs M rust/qemu-api/src/sysbus.rs M rust/qemu-api/tests/tests.rs M rust/qemu-api/tests/vmstate_tests.rs Log Message: ----------- rust: split "bql" crate Unfortunately, an example had to be compile-time disabled, since it relies on higher level crates (qdev, irq etc). The alternative is probably to move that code to an example in qemu-api or elsewere and make a link to it, or include_str. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-12-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: fcf4c00b4d73185db9239b1a6f03289f6211e142 https://github.com/qemu/qemu/commit/fcf4c00b4d73185db9239b1a6f03289f6211e142 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock M rust/Cargo.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/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/meson.build M rust/migration/src/vmstate.rs M rust/qemu-api-macros/src/lib.rs M rust/qemu-api-macros/src/tests.rs M rust/qemu-api/Cargo.toml M rust/qemu-api/meson.build M rust/qemu-api/src/bindings.rs M rust/qemu-api/src/chardev.rs M rust/qemu-api/src/irq.rs M rust/qemu-api/src/lib.rs M rust/qemu-api/src/memory.rs M rust/qemu-api/src/prelude.rs M rust/qemu-api/src/qdev.rs R rust/qemu-api/src/qom.rs M rust/qemu-api/src/sysbus.rs M rust/qemu-api/tests/tests.rs A rust/qom/Cargo.toml A rust/qom/build.rs A rust/qom/meson.build A rust/qom/src/bindings.rs A rust/qom/src/lib.rs A rust/qom/src/prelude.rs A rust/qom/src/qom.rs A rust/qom/wrapper.h Log Message: ----------- rust: split "qom" crate Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250827104147.717203-13-marcandre.lur...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: fef932ef09c82c3831ff3336d1b2d566cd6ccae4 https://github.com/qemu/qemu/commit/fef932ef09c82c3831ff3336d1b2d566cd6ccae4 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock A rust/chardev/Cargo.toml A rust/chardev/build.rs A rust/chardev/meson.build A rust/chardev/src/bindings.rs A rust/chardev/src/chardev.rs A rust/chardev/src/lib.rs A rust/chardev/wrapper.h M rust/hw/char/pl011/Cargo.toml M rust/hw/char/pl011/meson.build M rust/hw/char/pl011/src/device.rs M rust/meson.build M rust/qemu-api/Cargo.toml M rust/qemu-api/meson.build M rust/qemu-api/src/bindings.rs R rust/qemu-api/src/chardev.rs M rust/qemu-api/src/lib.rs M rust/qemu-api/src/qdev.rs M rust/qemu-api/wrapper.h Log Message: ----------- rust: split "chardev" crate Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-14-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: ee4ffbf239cbd9de8c6b6cc33283b7a64a95a956 https://github.com/qemu/qemu/commit/ee4ffbf239cbd9de8c6b6cc33283b7a64a95a956 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock M rust/Cargo.toml M rust/bql/src/cell.rs 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/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/meson.build M rust/qemu-api/Cargo.toml M rust/qemu-api/meson.build M rust/qemu-api/src/bindings.rs M rust/qemu-api/src/lib.rs R rust/qemu-api/src/memory.rs M rust/qemu-api/src/sysbus.rs M rust/qemu-api/wrapper.h A rust/system/Cargo.toml A rust/system/build.rs A rust/system/meson.build A rust/system/src/bindings.rs A rust/system/src/lib.rs A rust/system/src/memory.rs A rust/system/wrapper.h Log Message: ----------- rust: split "system" crate Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-15-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 5e588c9d08b0da64fab7f370e65744cb7a4174ef https://github.com/qemu/qemu/commit/5e588c9d08b0da64fab7f370e65744cb7a4174ef Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock M rust/Cargo.toml A rust/bindings/src/lib.rs M rust/hw/char/pl011/Cargo.toml M rust/hw/char/pl011/meson.build M rust/hw/char/pl011/src/device.rs A rust/hw/core/Cargo.toml A rust/hw/core/build.rs A rust/hw/core/meson.build A rust/hw/core/src/bindings.rs A rust/hw/core/src/irq.rs A rust/hw/core/src/lib.rs A rust/hw/core/src/qdev.rs A rust/hw/core/src/sysbus.rs A rust/hw/core/tests/tests.rs A rust/hw/core/wrapper.h M rust/hw/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/meson.build M rust/qemu-api-macros/src/lib.rs M rust/qemu-api-macros/src/tests.rs M rust/qemu-api/Cargo.toml M rust/qemu-api/meson.build M rust/qemu-api/src/bindings.rs R rust/qemu-api/src/irq.rs M rust/qemu-api/src/lib.rs M rust/qemu-api/src/prelude.rs R rust/qemu-api/src/qdev.rs R rust/qemu-api/src/sysbus.rs R rust/qemu-api/tests/tests.rs M rust/qemu-api/wrapper.h Log Message: ----------- rust: split "hwcore" crate Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-16-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 0d93f8177310515ae2d8aea8e1320e53818d70bd https://github.com/qemu/qemu/commit/0d93f8177310515ae2d8aea8e1320e53818d70bd Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock M rust/Cargo.toml M rust/bits/Cargo.toml M rust/bits/meson.build M rust/bits/src/lib.rs M rust/chardev/Cargo.toml M rust/chardev/meson.build M rust/chardev/src/chardev.rs M rust/common/src/opaque.rs 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/hw/core/Cargo.toml M rust/hw/core/meson.build M rust/hw/core/src/irq.rs M rust/hw/core/src/qdev.rs M rust/hw/core/src/sysbus.rs M rust/hw/core/tests/tests.rs M rust/hw/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/meson.build M rust/migration/Cargo.toml R rust/qemu-api-macros/Cargo.toml R rust/qemu-api-macros/meson.build R rust/qemu-api-macros/src/bits.rs R rust/qemu-api-macros/src/lib.rs R rust/qemu-api-macros/src/tests.rs M rust/qemu-api/Cargo.toml M rust/qemu-api/meson.build A rust/qemu-macros/Cargo.toml A rust/qemu-macros/meson.build A rust/qemu-macros/src/bits.rs A rust/qemu-macros/src/lib.rs A rust/qemu-macros/src/tests.rs M rust/qom/Cargo.toml M rust/qom/meson.build M rust/qom/src/qom.rs M rust/system/Cargo.toml M rust/system/meson.build M rust/system/src/memory.rs M rust/util/Cargo.toml M rust/util/meson.build M rust/util/src/timer.rs Log Message: ----------- 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.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-17-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 960aaeb0238612cf7d7a8f17937e860da3d23cb3 https://github.com/qemu/qemu/commit/960aaeb0238612cf7d7a8f17937e860da3d23cb3 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/Cargo.lock M rust/hw/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build Log Message: ----------- rust/hpet: drop now unneeded qemu_api dep Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-18-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 966b1c302e1bab3b20a356f1a6678dd1bee5575c https://github.com/qemu/qemu/commit/966b1c302e1bab3b20a356f1a6678dd1bee5575c Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/Cargo.lock M rust/hw/char/pl011/Cargo.toml A rust/hw/char/pl011/build.rs M rust/hw/char/pl011/meson.build A rust/hw/char/pl011/src/bindings.rs M rust/hw/char/pl011/src/device.rs M rust/hw/char/pl011/src/lib.rs A rust/hw/char/pl011/wrapper.h Log Message: ----------- rust/pl011: drop dependency on qemu_api Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-19-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: d58fcd05ffc682fbad02cd8d0bee840cb7997e3e https://github.com/qemu/qemu/commit/d58fcd05ffc682fbad02cd8d0bee840cb7997e3e Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M MAINTAINERS M rust/Cargo.lock M rust/Cargo.toml M rust/meson.build R rust/qemu-api/.gitignore R rust/qemu-api/Cargo.toml R rust/qemu-api/README.md R rust/qemu-api/build.rs R rust/qemu-api/meson.build R rust/qemu-api/src/bindings.rs R rust/qemu-api/src/lib.rs R rust/qemu-api/src/prelude.rs R rust/qemu-api/tests/vmstate_tests.rs R rust/qemu-api/wrapper.h A rust/tests/Cargo.toml A rust/tests/meson.build A rust/tests/tests/vmstate_tests.rs Log Message: ----------- rust: repurpose qemu_api -> tests The crate purpose is only to provide integration tests at this point, that can't easily be moved to a specific crate. It's also often a good practice to have a single integration test crate (see for ex https://github.com/rust-lang/cargo/issues/4867) Drop README.md, use docs/devel/rust.rst instead. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-20-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: b0f6bf8a5b3b3a9dd4a11f792084d39a76b4b007 https://github.com/qemu/qemu/commit/b0f6bf8a5b3b3a9dd4a11f792084d39a76b4b007 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/bits/src/lib.rs Log Message: ----------- rust: re-export qemu_macros internal helper in "bits" Avoid the need to import "qemu_macros". Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-21-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: e4444d71e85b5f5ea8311eb59fea3e52f5fc5a14 https://github.com/qemu/qemu/commit/e4444d71e85b5f5ea8311eb59fea3e52f5fc5a14 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M docs/devel/rust.rst M rust/Cargo.lock M rust/chardev/Cargo.toml M rust/chardev/meson.build M rust/chardev/src/chardev.rs M rust/common/Cargo.toml M rust/common/meson.build M rust/common/src/lib.rs M rust/common/src/opaque.rs 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/hw/core/Cargo.toml M rust/hw/core/meson.build M rust/hw/core/src/irq.rs M rust/hw/core/src/lib.rs M rust/hw/core/src/qdev.rs M rust/hw/core/src/sysbus.rs M rust/hw/core/tests/tests.rs M rust/hw/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/meson.build M rust/migration/Cargo.toml M rust/qom/src/lib.rs M rust/qom/src/qom.rs M rust/system/Cargo.toml M rust/system/meson.build M rust/system/src/memory.rs M rust/tests/Cargo.toml M rust/util/Cargo.toml M rust/util/meson.build M rust/util/src/timer.rs Log Message: ----------- rust: re-export qemu macros from common/qom/hwcore This is just a bit nicer. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-22-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 31b35e78be99ae0c9b7a50fa4f29c0041538ceea https://github.com/qemu/qemu/commit/31b35e78be99ae0c9b7a50fa4f29c0041538ceea Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M docs/devel/rust.rst Log Message: ----------- docs: update rust.rst Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Link: https://lore.kernel.org/r/20250827104147.717203-23-marcandre.lur...@redhat.com Reviewed-by: Zhao Liu <zhao1....@intel.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: efe8d07383e22e39e4dafbc08855956a459b395f https://github.com/qemu/qemu/commit/efe8d07383e22e39e4dafbc08855956a459b395f Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/hw/char/pl011/meson.build M rust/hw/timer/hpet/meson.build Log Message: ----------- 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 <pbonz...@redhat.com> Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-33-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 7c83e501565a57560aa1d87109819f46effeb7fc https://github.com/qemu/qemu/commit/7c83e501565a57560aa1d87109819f46effeb7fc Author: Paolo Bonzini <pbonz...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M rust/system/src/memory.rs Log Message: ----------- rust: do not inline do_init_io This is now possible since the hwcore integration tests do not link the system crate anymore. Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Reviewed-by: Zhao Liu <zhao1....@intel.com> Link: https://lore.kernel.org/r/20250908105005.2119297-34-pbonz...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: d99041a20328423bc6819ddd69b60cf98d8d84f1 https://github.com/qemu/qemu/commit/d99041a20328423bc6819ddd69b60cf98d8d84f1 Author: Igor Mammedov <imamm...@redhat.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M hw/timer/hpet.c Log Message: ----------- hpet: guard IRQ handling with BQL Commit [1] made qemu fail with abort: xen_evtchn_set_gsi: Assertion `bql_locked()' failed. when running ./tests/functional/x86_64/test_kvm_xen.py tests. To fix it make sure that BQL is held when manipulating IRQs. Fixes: 7defb58baf (hpet: switch to fine-grained device locking) Reported-by: Daniel P. Berrangé <berra...@redhat.com> Signed-off-by: Igor Mammedov <imamm...@redhat.com> Link: https://lore.kernel.org/r/20250910142506.86274-1-imamm...@redhat.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 0516f4b70264b9710a25718d21bd35ef463c875e https://github.com/qemu/qemu/commit/0516f4b70264b9710a25718d21bd35ef463c875e Author: Xiaoyao Li <xiaoyao...@intel.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M system/physmem.c M target/i386/kvm/kvm-cpu.c M target/i386/kvm/kvm.c Log Message: ----------- i386/cpu: Enable SMM cpu address space under KVM Kirill Martynov reported assertation in cpu_asidx_from_attrs() being hit when x86_cpu_dump_state() is called to dump the CPU state[*]. It happens when the CPU is in SMM and KVM emulation failure due to misbehaving guest. The root cause is that QEMU i386 never enables the SMM address space for cpu since KVM SMM support has been added. Enable the SMM cpu address space under KVM when the SMM is enabled for the x86machine. [*] https://lore.kernel.org/qemu-devel/20250523154431.506993-1-stdcalll...@yandex-team.ru/ Reported-by: Kirill Martynov <stdcalll...@yandex-team.ru> Reviewed-by: Zhao Liu <zhao1....@intel.com> Tested-by: Kirill Martynov <stdcalll...@yandex-team.ru> Signed-off-by: Xiaoyao Li <xiaoyao...@intel.com> Link: https://lore.kernel.org/r/20250730095253.1833411-2-xiaoyao...@intel.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 591f817d819f5511fd9001dc863a326d23088811 https://github.com/qemu/qemu/commit/591f817d819f5511fd9001dc863a326d23088811 Author: Xiaoyao Li <xiaoyao...@intel.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M target/i386/cpu.h M target/i386/kvm/kvm-cpu.c M target/i386/kvm/kvm.c M target/i386/tcg/system/tcg-cpu.c Log Message: ----------- target/i386: Define enum X86ASIdx for x86's address spaces Define X86ASIdx as enum, like ARM's ARMASIdx, so that it's clear index 0 is for memory and index 1 is for SMM. Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Zhao Liu <zhao1....@intel.com> Tested-By: Kirill Martynov <stdcalll...@yandex-team.ru> Signed-off-by: Xiaoyao Li <xiaoyao...@intel.com> Link: https://lore.kernel.org/r/20250730095253.1833411-3-xiaoyao...@intel.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 4c8f69b94839f72314c69902312068d0b9b05a34 https://github.com/qemu/qemu/commit/4c8f69b94839f72314c69902312068d0b9b05a34 Author: Xiaoyao Li <xiaoyao...@intel.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M pc-bios/multiboot_dma.bin M pc-bios/optionrom/multiboot.S Log Message: ----------- multiboot: Fix the split lock While running the kvm-unit-tests on Intel platforms with "split lock disable" feature, every test triggers a kernel warning of x86/split lock detection: #AC: qemu-system-x86_64/373232 took a split_lock trap at address: 0x1e3 Hack KVM by exiting to QEMU on split lock #AC, we get KVM: exception 17 exit (error code 0x0) EAX=00000001 EBX=00000000 ECX=00000014 EDX=0001fb80 ESI=00000000 EDI=000000a8 EBP=00000000 ESP=00006f10 EIP=000001e3 EFL=00010002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 ES =0900 00009000 0000ffff 00009300 DPL=0 DS16 [-WA] CS =c000 000c0000 0000ffff 00009b00 DPL=0 CS16 [-RA] SS =0000 00000000 0000ffff 00009300 DPL=0 DS16 [-WA] DS =c000 000c0000 0000ffff 00009300 DPL=0 DS16 [-WA] FS =0950 00009500 0000ffff 00009300 DPL=0 DS16 [-WA] GS =06f2 00006f20 0000ffff 00009300 DPL=0 DS16 [-WA] LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy GDT= 000c02b4 00000027 IDT= 00000000 000003ff CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 DR6=00000000ffff0ff0 DR7=0000000000000400 EFER=0000000000000000 Code=89 16 08 00 65 66 0f 01 16 06 00 66 b8 01 00 00 00 0f 22 c0 <65> 66 ff 2e 00 00 b8 10 00 00 00 8e d0 8e d8 8e c0 8e e0 8e e8 66 b8 08 00 66 ba 10 05 66 And it matches with what disassembled from multiboo_dma.bin: #objdump -b binary -m i386 -D pc-bios/multiboot_dma.bin 1d1: 08 00 or %al,(%eax) 1d3: 65 66 0f 01 16 lgdtw %gs:(%esi) 1d8: 06 push %es 1d9: 00 66 b8 add %ah,-0x48(%esi) 1dc: 01 00 add %eax,(%eax) 1de: 00 00 add %al,(%eax) 1e0: 0f 22 c0 mov %eax,%cr0 > 1e3: 65 66 ff 2e ljmpw *%gs:(%esi) 1e7: 00 00 add %al,(%eax) 1e9: b8 10 00 00 00 mov $0x10,%eax 1ee: 8e d0 mov %eax,%ss 1f0: 8e d8 mov %eax,%ds 1f2: 8e c0 mov %eax,%es 1f4: 8e e0 mov %eax,%fs 1f6: 8e e8 mov %eax,%gs 1f8: 66 b8 08 00 mov $0x8,%ax 1fc: 66 ba 10 05 mov $0x510,%dx We can see that the instruction at 0x1e3 is a far jmp through the GDT. However, the GDT is not 8 byte aligned, the base is 0xc02b4. Intel processors follow the LOCK semantics to set the accessed flag of the segment descriptor when loading a segment descriptor. If the the segment descriptor crosses two cache line, it causes split lock. Fix it by aligning the GDT on 8 bytes, so that segment descriptor cannot span two cache lines. Signed-off-by: Xiaoyao Li <xiaoyao...@intel.com> Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Link: https://lore.kernel.org/r/20250808035027.2194673-1-xiaoyao...@intel.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: b5ff08e64e73207d435ca720ce1e917dd2faee3c https://github.com/qemu/qemu/commit/b5ff08e64e73207d435ca720ce1e917dd2faee3c Author: Xiaoyao Li <xiaoyao...@intel.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M target/i386/kvm/kvm.c Log Message: ----------- i386/kvm: Drop KVM_CAP_X86_SMM check in kvm_arch_init() x86_machine_is_smm_enabled() checks the KVM_CAP_X86_SMM for KVM case. No need to check KVM_CAP_X86_SMM in kvm_arch_init(). So just drop the check of KVM_CAP_X86_SMM to simplify the code. Signed-off-by: Xiaoyao Li <xiaoyao...@intel.com> Link: https://lore.kernel.org/r/20250729062014.1669578-3-xiaoyao...@intel.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 706cc708656c91552b355faa9b72dfa7ad64571e https://github.com/qemu/qemu/commit/706cc708656c91552b355faa9b72dfa7ad64571e Author: Xiaoyao Li <xiaoyao...@intel.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/kvm/kvm-all.c Log Message: ----------- accel/kvm: Switch to check KVM_CAP_GUEST_MEMFD and KVM_CAP_USER_MEMORY2 on VM It returns more accruate result on checking KVM_CAP_GUEST_MEMFD and KVM_CAP_USER_MEMORY2 on VM instance instead of on KVM platform. Signed-off-by: Xiaoyao Li <xiaoyao...@intel.com> Link: https://lore.kernel.org/r/20250728115707.1374614-2-xiaoyao...@intel.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 80030f66ad15c1534f5e3700b0acefd6d0d92e37 https://github.com/qemu/qemu/commit/80030f66ad15c1534f5e3700b0acefd6d0d92e37 Author: Xiaoyao Li <xiaoyao...@intel.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/kvm/kvm-all.c Log Message: ----------- accel/kvm: Zero out mem explicitly in kvm_set_user_memory_region() Zero out the entire mem explicitly before it's used, to ensure the unused feilds (pad1, pad2) are all zeros. Otherwise, it might cause problem when the pad fields are extended by future KVM. Fixes: ce5a983233b4 ("kvm: Enable KVM_SET_USER_MEMORY_REGION2 for memslot") Signed-off-by: Xiaoyao Li <xiaoyao...@intel.com> Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> Link: https://lore.kernel.org/r/20250728115707.1374614-3-xiaoyao...@intel.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 00c0911c68e5bd664de1a261b74c390f4c0be83d https://github.com/qemu/qemu/commit/00c0911c68e5bd664de1a261b74c390f4c0be83d Author: Xiaoyao Li <xiaoyao...@intel.com> Date: 2025-09-17 (Wed, 17 Sep 2025) Changed paths: M accel/kvm/kvm-all.c Log Message: ----------- accel/kvm: Set guest_memfd_offset to non-zero value only when guest_memfd is valid Current QEMU unconditionally sets the guest_memfd_offset of KVMSlot in kvm_set_phys_mem(), which leads to the trace of kvm_set_user_memory looks: kvm_set_user_memory AddrSpace#0 Slot#4 flags=0x2 gpa=0xe0000 size=0x20000 ua=0x7f5840de0000 guest_memfd=-1 guest_memfd_offset=0x3e0000 ret=0 It's confusing that the guest_memfd_offset has a non-zero value while the guest_memfd is invalid (-1). Change to only set guest_memfd_offset when guest_memfd is valid and leave it as 0 when no valid guest_memfd. Signed-off-by: Xiaoyao Li <xiaoyao...@intel.com> Link: https://lore.kernel.org/r/20250728115707.1374614-4-xiaoyao...@intel.com Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Commit: 0c042601a638c37a95690c6429af5a1b5a35d1dd https://github.com/qemu/qemu/commit/0c042601a638c37a95690c6429af5a1b5a35d1dd Author: Bibo Mao <maob...@loongson.cn> Date: 2025-09-18 (Thu, 18 Sep 2025) Changed paths: M hw/loongarch/boot.c Log Message: ----------- hw/loongarch/virt: Add BSP support with aux boot code If system boots directly from Linux kernel, BSP core jumps to kernel entry of Linux kernel image and other APs jump to aux boot code. Instead BSP and APs can all jump to aux boot code like UEFI bios. With aux boot code, BSP core is judged from physical cpu id, whose cpu id is 0. With BSP core, load data to register A0-A2 and PC. Signed-off-by: Bibo Mao <maob...@loongson.cn> Reviewed-by: Song Gao <gaos...@loongson.cn> Message-ID: <20250906070200.3749326-2-maob...@loongson.cn> Signed-off-by: Song Gao <gaos...@loongson.cn> Commit: 6ca2df47c9b85f630faacaba8a042cb095075599 https://github.com/qemu/qemu/commit/6ca2df47c9b85f630faacaba8a042cb095075599 Author: Bibo Mao <maob...@loongson.cn> Date: 2025-09-18 (Thu, 18 Sep 2025) Changed paths: M hw/loongarch/boot.c M target/loongarch/cpu.h Log Message: ----------- hw/loongarch/virt: Remove unnecessay pre-boot setting with BSP With BSP core, it boots from aux boot code and loads data into register A0-A2 and PC. Pre-boot setting is not unnecessary and can be removed. Signed-off-by: Bibo Mao <maob...@loongson.cn> Reviewed-by: Song Gao <gaos...@loongson.cn> Message-ID: <20250906070200.3749326-3-maob...@loongson.cn> Signed-off-by: Song Gao <gaos...@loongson.cn> Commit: cb5ee0017fc9909916383634a3f13eae05e6fe5c https://github.com/qemu/qemu/commit/cb5ee0017fc9909916383634a3f13eae05e6fe5c Author: Bibo Mao <maob...@loongson.cn> Date: 2025-09-18 (Thu, 18 Sep 2025) Changed paths: M hw/loongarch/boot.c M hw/loongarch/virt.c Log Message: ----------- hw/loongarch/virt: Register reset interface with cpu plug callback With cpu hotplug is implemented on LoongArch virt machine, reset interface with hot-added CPU should be registered. Otherwise there will be problem if system reboots after cpu is hot-added. Now register reset interface with CPU plug callback, so that all cold/hot added CPUs let their reset interface registered. And remove reset interface with CPU unplug callback. Signed-off-by: Bibo Mao <maob...@loongson.cn> Reviewed-by: Igor Mammedov <imamm...@redhat.com> Tested-by: Song Gao <gaos...@loongson.cn> Message-ID: <20250906070200.3749326-4-maob...@loongson.cn> Signed-off-by: Song Gao <gaos...@loongson.cn> Commit: ccafa85a97e38698b798115bba6c18c849846e25 https://github.com/qemu/qemu/commit/ccafa85a97e38698b798115bba6c18c849846e25 Author: Richard Henderson <richard.hender...@linaro.org> Date: 2025-09-18 (Thu, 18 Sep 2025) Changed paths: M .gitlab-ci.d/buildtest.yml M MAINTAINERS M accel/dummy-cpus.c M accel/hvf/hvf-accel-ops.c M accel/kvm/kvm-accel-ops.c M accel/kvm/kvm-all.c M accel/tcg/cpu-exec.c M accel/tcg/tcg-accel-ops-mttcg.c M accel/tcg/tcg-accel-ops-mttcg.h M accel/tcg/tcg-accel-ops-rr.c M accel/tcg/tcg-accel-ops.c M accel/tcg/tcg-accel-ops.h M accel/tcg/user-exec.c M bsd-user/aarch64/target_arch_cpu.h M bsd-user/arm/target_arch_cpu.h M bsd-user/i386/target_arch_cpu.h M bsd-user/main.c M bsd-user/riscv/target_arch_cpu.h M bsd-user/x86_64/target_arch_cpu.h M clippy.toml M configure M cpu-common.c M docs/about/build-platforms.rst M docs/devel/rust.rst M docs/devel/tcg-icount.rst M hw/core/cpu-common.c M hw/core/cpu-system.c M hw/ppc/ppc.c M hw/ppc/spapr_hcall.c M hw/ppc/spapr_rtas.c M hw/timer/hpet.c M include/hw/core/cpu.h M include/system/cpus.h M linux-user/aarch64/cpu_loop.c M linux-user/alpha/cpu_loop.c M linux-user/arm/cpu_loop.c M linux-user/hexagon/cpu_loop.c M linux-user/hppa/cpu_loop.c M linux-user/i386/cpu_loop.c M linux-user/loongarch64/cpu_loop.c M linux-user/m68k/cpu_loop.c M linux-user/main.c M linux-user/microblaze/cpu_loop.c M linux-user/mips/cpu_loop.c M linux-user/openrisc/cpu_loop.c M linux-user/ppc/cpu_loop.c M linux-user/riscv/cpu_loop.c M linux-user/s390x/cpu_loop.c M linux-user/sh4/cpu_loop.c M linux-user/sparc/cpu_loop.c M linux-user/xtensa/cpu_loop.c M meson.build M pc-bios/multiboot_dma.bin M pc-bios/optionrom/multiboot.S M python/scripts/vendor.py R python/wheels/meson-1.8.1-py3-none-any.whl A python/wheels/meson-1.9.0-py3-none-any.whl M pythondeps.toml M replay/replay-events.c M rust/Cargo.lock M rust/Cargo.toml A rust/bindings/src/lib.rs M rust/bits/Cargo.toml M rust/bits/meson.build M rust/bits/src/lib.rs A rust/bql/Cargo.toml A rust/bql/build.rs A rust/bql/meson.build A rust/bql/src/bindings.rs A rust/bql/src/cell.rs A rust/bql/src/lib.rs A rust/bql/wrapper.h A rust/chardev/Cargo.toml A rust/chardev/build.rs A rust/chardev/meson.build A rust/chardev/src/bindings.rs A rust/chardev/src/chardev.rs A rust/chardev/src/lib.rs A rust/chardev/wrapper.h A rust/common/Cargo.toml A rust/common/meson.build A rust/common/src/assertions.rs A rust/common/src/bitops.rs A rust/common/src/callbacks.rs A rust/common/src/errno.rs A rust/common/src/lib.rs A rust/common/src/opaque.rs A rust/common/src/uninit.rs A rust/common/src/zeroable.rs M rust/hw/char/pl011/Cargo.toml A rust/hw/char/pl011/build.rs M rust/hw/char/pl011/meson.build A rust/hw/char/pl011/src/bindings.rs M rust/hw/char/pl011/src/device.rs M rust/hw/char/pl011/src/lib.rs M rust/hw/char/pl011/src/registers.rs A rust/hw/char/pl011/wrapper.h A rust/hw/core/Cargo.toml A rust/hw/core/build.rs A rust/hw/core/meson.build A rust/hw/core/src/bindings.rs A rust/hw/core/src/irq.rs A rust/hw/core/src/lib.rs A rust/hw/core/src/qdev.rs A rust/hw/core/src/sysbus.rs A rust/hw/core/tests/tests.rs A rust/hw/core/wrapper.h M rust/hw/timer/hpet/Cargo.toml M rust/hw/timer/hpet/meson.build M rust/hw/timer/hpet/src/device.rs M rust/hw/timer/hpet/src/fw_cfg.rs M rust/meson.build A rust/migration/Cargo.toml A rust/migration/build.rs A rust/migration/meson.build A rust/migration/src/bindings.rs A rust/migration/src/lib.rs A rust/migration/src/vmstate.rs A rust/migration/wrapper.h R rust/qemu-api-macros/Cargo.toml R rust/qemu-api-macros/meson.build R rust/qemu-api-macros/src/bits.rs R rust/qemu-api-macros/src/lib.rs R rust/qemu-api-macros/src/tests.rs R rust/qemu-api/.gitignore R rust/qemu-api/Cargo.toml R rust/qemu-api/README.md R rust/qemu-api/build.rs R rust/qemu-api/meson.build R rust/qemu-api/src/assertions.rs R rust/qemu-api/src/bindings.rs R rust/qemu-api/src/bitops.rs R rust/qemu-api/src/callbacks.rs R rust/qemu-api/src/cell.rs R rust/qemu-api/src/chardev.rs R rust/qemu-api/src/errno.rs R rust/qemu-api/src/error.rs R rust/qemu-api/src/irq.rs R rust/qemu-api/src/lib.rs R rust/qemu-api/src/log.rs R rust/qemu-api/src/memory.rs R rust/qemu-api/src/module.rs R rust/qemu-api/src/prelude.rs R rust/qemu-api/src/qdev.rs R rust/qemu-api/src/qom.rs R rust/qemu-api/src/sysbus.rs R rust/qemu-api/src/timer.rs R rust/qemu-api/src/uninit.rs R rust/qemu-api/src/vmstate.rs R rust/qemu-api/src/zeroable.rs R rust/qemu-api/tests/tests.rs R rust/qemu-api/tests/vmstate_tests.rs R rust/qemu-api/wrapper.h A rust/qemu-macros/Cargo.toml A rust/qemu-macros/meson.build A rust/qemu-macros/src/bits.rs A rust/qemu-macros/src/lib.rs A rust/qemu-macros/src/tests.rs A rust/qom/Cargo.toml A rust/qom/build.rs A rust/qom/meson.build A rust/qom/src/bindings.rs A rust/qom/src/lib.rs A rust/qom/src/prelude.rs A rust/qom/src/qom.rs A rust/qom/wrapper.h A rust/system/Cargo.toml A rust/system/build.rs A rust/system/meson.build A rust/system/src/bindings.rs A rust/system/src/lib.rs A rust/system/src/memory.rs A rust/system/wrapper.h A rust/tests/Cargo.toml A rust/tests/meson.build A rust/tests/tests/vmstate_tests.rs A rust/util/Cargo.toml A rust/util/build.rs A rust/util/meson.build A rust/util/src/bindings.rs A rust/util/src/error.rs A rust/util/src/lib.rs A rust/util/src/log.rs A rust/util/src/module.rs A rust/util/src/timer.rs A rust/util/wrapper.h M system/cpu-timers.c M system/cpus.c M system/physmem.c A target/arm/cpu-irq.c M target/arm/cpu.c A target/arm/el2-stubs.c M target/arm/helper.c M target/arm/internals.h M target/arm/meson.build M target/arm/tcg/mte_helper.c M target/avr/helper.c M target/i386/cpu.h M target/i386/helper.c M target/i386/hvf/x86hvf.c M target/i386/kvm/hyperv.c M target/i386/kvm/kvm-cpu.c M target/i386/kvm/kvm.c M target/i386/nvmm/nvmm-accel-ops.c M target/i386/nvmm/nvmm-all.c M target/i386/tcg/system/seg_helper.c M target/i386/tcg/system/svm_helper.c M target/i386/tcg/system/tcg-cpu.c M target/i386/whpx/whpx-accel-ops.c M target/i386/whpx/whpx-all.c M target/openrisc/sys_helper.c M target/ppc/helper_regs.c M target/rx/helper.c M target/s390x/tcg/excp_helper.c M target/sparc/int32_helper.c M target/sparc/int64_helper.c Log Message: ----------- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * cpu-exec: more cleanups to CPU loop exits * python: bump bundled Meson to 1.9.0 * rust: require Rust 1.83.0 * rust: temporarily remove from Ubuntu CI * rust: vmstate: convert to use builder pattern * rust: split "qemu-api" crate * rust: rename qemu_api_macros -> qemu_macros * rust: re-export qemu macros from other crates * x86: fix functional test failure for Xen emulation * x86: cleanups # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCgAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmjK6ZsUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroNBKwf/aadInCT4vASOfpxbwZgYfYgR2m2m # BJE9oYKxZJ6MlEOU/1Wfywf9fg4leMSh3XxkDKkEIL19yS6emwin8n3SNYrdAFn3 # 6u4IIWO4NI1Ht3NKytrqFk9wtbH9pAs/gVHLlnmpMxIqtOtZLumPAKNz8rlantmK # UVDYL3Y0L4pD9i5FK1ObMNpk5AsWNr8Tr64fmb+nTkHutld3sBrEMCLI0+EByGyN # lQ16sLn9PGqHOr210zuQP7wP2T3NCI3YokFSPQrUUL8LZGxRdXoNF4hI4uZDKGdn # UbtRu9EkM052qzfsFMrEw5JSbdxEfIjKlPoFKseMv+aWvNAuximAraD3Vg== # =Lr+x # -----END PGP SIGNATURE----- # gpg: Signature made Wed 17 Sep 2025 10:02:19 AM PDT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonz...@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonz...@gnu.org>" [unknown] # gpg: aka "Paolo Bonzini <pbonz...@redhat.com>" [unknown] # gpg: WARNING: The key's User ID is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # 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: (60 commits) accel/kvm: Set guest_memfd_offset to non-zero value only when guest_memfd is valid accel/kvm: Zero out mem explicitly in kvm_set_user_memory_region() accel/kvm: Switch to check KVM_CAP_GUEST_MEMFD and KVM_CAP_USER_MEMORY2 on VM i386/kvm: Drop KVM_CAP_X86_SMM check in kvm_arch_init() multiboot: Fix the split lock target/i386: Define enum X86ASIdx for x86's address spaces i386/cpu: Enable SMM cpu address space under KVM hpet: guard IRQ handling with BQL rust: do not inline do_init_io rust: meson: remove unnecessary complication in device crates docs: update rust.rst rust: re-export qemu macros from common/qom/hwcore rust: re-export qemu_macros internal helper in "bits" rust: repurpose qemu_api -> tests rust/pl011: drop dependency on qemu_api rust/hpet: drop now unneeded qemu_api dep rust: rename qemu_api_macros -> qemu_macros rust: split "hwcore" crate rust: split "system" crate rust: split "chardev" crate ... Signed-off-by: Richard Henderson <richard.hender...@linaro.org> Commit: e7c1e8043a69c5a8efa39d4f9d111f7c72c076e6 https://github.com/qemu/qemu/commit/e7c1e8043a69c5a8efa39d4f9d111f7c72c076e6 Author: Richard Henderson <richard.hender...@linaro.org> Date: 2025-09-18 (Thu, 18 Sep 2025) Changed paths: M hw/loongarch/boot.c M hw/loongarch/virt.c M target/loongarch/cpu.h Log Message: ----------- Merge tag 'pull-loongarch-20250918' of https://github.com/gaosong715/qemu into staging pull-loongarch-20250918 # -----BEGIN PGP SIGNATURE----- # # iLMEAAEIAB0WIQTKRzxE1qCcGJoZP81FK5aFKyaCFgUCaMvTpQAKCRBFK5aFKyaC # Fkk0BACDkaQa6jDON8aLcTFcwpIlrnblqlYo6EK7TaGqpI866EhTX09BscRF5bvp # 3JtGARKy5a6s5GJ64KItIl4n5Z6xvt4ME1KjyqeUTpD99c7J1krgxl6+W/NthK/K # cLbSnlfvcw/L6KfIsGP6i2F6Y+riyZf6OYMc9IF/xFEAIMKJyA== # =EgXn # -----END PGP SIGNATURE----- # gpg: Signature made Thu 18 Sep 2025 02:40:53 AM PDT # gpg: using RSA key CA473C44D6A09C189A193FCD452B96852B268216 # gpg: Good signature from "Song Gao <gaos...@loongson.cn>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: CA47 3C44 D6A0 9C18 9A19 3FCD 452B 9685 2B26 8216 * tag 'pull-loongarch-20250918' of https://github.com/gaosong715/qemu: hw/loongarch/virt: Register reset interface with cpu plug callback hw/loongarch/virt: Remove unnecessay pre-boot setting with BSP hw/loongarch/virt: Add BSP support with aux boot code Signed-off-by: Richard Henderson <richard.hender...@linaro.org> Compare: https://github.com/qemu/qemu/compare/f0007b7f03e2...e7c1e8043a69 To unsubscribe from these emails, change your notification settings at https://github.com/qemu/qemu/settings/notifications