[PULL v2 00/60] CPU, Rust, x86 changes for 2025-09-13

Paolo Bonzini posted 60 patches 1 week, 3 days ago
Only 1 patches received!
MAINTAINERS                                        |  12 +-
docs/about/build-platforms.rst                     |  15 +-
docs/devel/rust.rst                                |  93 ++--
docs/devel/tcg-icount.rst                          |   2 +-
configure                                          |   4 +-
meson.build                                        |  10 +-
accel/tcg/tcg-accel-ops-mttcg.h                    |   3 -
accel/tcg/tcg-accel-ops.h                          |   1 +
bsd-user/aarch64/target_arch_cpu.h                 |   2 +-
bsd-user/arm/target_arch_cpu.h                     |   2 +-
bsd-user/i386/target_arch_cpu.h                    |   2 +-
bsd-user/riscv/target_arch_cpu.h                   |   2 +-
bsd-user/x86_64/target_arch_cpu.h                  |   2 +-
include/hw/core/cpu.h                              |  22 +-
include/system/cpus.h                              |   3 +-
rust/bql/wrapper.h                                 |  27 ++
rust/chardev/wrapper.h                             |  28 ++
rust/hw/char/pl011/wrapper.h                       |  51 ++
rust/hw/core/wrapper.h                             |  32 ++
rust/{qemu-api => migration}/wrapper.h             |  20 -
rust/qom/wrapper.h                                 |  27 ++
rust/system/wrapper.h                              |  29 ++
rust/util/wrapper.h                                |  32 ++
target/arm/internals.h                             |   5 +
target/i386/cpu.h                                  |   5 +
accel/dummy-cpus.c                                 |   2 +-
accel/hvf/hvf-accel-ops.c                          |   2 +-
accel/kvm/kvm-accel-ops.c                          |   3 +-
accel/kvm/kvm-all.c                                |  32 +-
accel/tcg/cpu-exec.c                               |  34 +-
accel/tcg/tcg-accel-ops-mttcg.c                    |  12 +-
accel/tcg/tcg-accel-ops-rr.c                       |  55 ++-
accel/tcg/tcg-accel-ops.c                          |   4 +-
accel/tcg/user-exec.c                              |  11 +-
bsd-user/main.c                                    |   5 -
cpu-common.c                                       |   3 +-
hw/core/cpu-common.c                               |  19 +-
hw/core/cpu-system.c                               |   2 +-
hw/ppc/ppc.c                                       |   2 +
hw/ppc/spapr_hcall.c                               |   7 +-
hw/ppc/spapr_rtas.c                                |   2 +-
hw/timer/hpet.c                                    |   8 +
linux-user/aarch64/cpu_loop.c                      |   2 +-
linux-user/alpha/cpu_loop.c                        |   2 +-
linux-user/arm/cpu_loop.c                          |   2 +-
linux-user/hexagon/cpu_loop.c                      |   2 +-
linux-user/hppa/cpu_loop.c                         |   2 +-
linux-user/i386/cpu_loop.c                         |   2 +-
linux-user/loongarch64/cpu_loop.c                  |   2 +-
linux-user/m68k/cpu_loop.c                         |   2 +-
linux-user/main.c                                  |   5 -
linux-user/microblaze/cpu_loop.c                   |   2 +-
linux-user/mips/cpu_loop.c                         |   2 +-
linux-user/openrisc/cpu_loop.c                     |   2 +-
linux-user/ppc/cpu_loop.c                          |   2 +-
linux-user/riscv/cpu_loop.c                        |   2 +-
linux-user/s390x/cpu_loop.c                        |   2 +-
linux-user/sh4/cpu_loop.c                          |   2 +-
linux-user/sparc/cpu_loop.c                        |   2 +-
linux-user/xtensa/cpu_loop.c                       |   2 +-
replay/replay-events.c                             |   3 +-
system/cpu-timers.c                                |   6 +-
system/cpus.c                                      |  15 +-
system/physmem.c                                   |   5 -
target/arm/cpu-irq.c                               | 381 +++++++++++++++
target/arm/cpu.c                                   | 370 ---------------
target/arm/el2-stubs.c                             |  37 ++
target/arm/helper.c                                |   4 +
target/arm/tcg/mte_helper.c                        |   2 +-
target/avr/helper.c                                |   4 +-
target/i386/helper.c                               |   2 +
target/i386/hvf/x86hvf.c                           |   8 +-
target/i386/kvm/hyperv.c                           |   1 -
target/i386/kvm/kvm-cpu.c                          |  10 +
target/i386/kvm/kvm.c                              |  30 +-
target/i386/nvmm/nvmm-accel-ops.c                  |   8 +-
target/i386/nvmm/nvmm-all.c                        |  19 +-
target/i386/tcg/system/seg_helper.c                |  13 +-
target/i386/tcg/system/svm_helper.c                |   2 +-
target/i386/tcg/system/tcg-cpu.c                   |   4 +-
target/i386/whpx/whpx-accel-ops.c                  |   6 +-
target/i386/whpx/whpx-all.c                        |  23 +-
target/openrisc/sys_helper.c                       |   2 +-
target/ppc/helper_regs.c                           |   2 +
target/rx/helper.c                                 |   4 +-
target/s390x/tcg/excp_helper.c                     |   2 +-
target/sparc/int32_helper.c                        |   2 +
target/sparc/int64_helper.c                        |   2 +
.gitlab-ci.d/buildtest.yml                         |   4 +-
clippy.toml                                        |   2 +-
pc-bios/multiboot_dma.bin                          | Bin 1024 -> 1024 bytes
pc-bios/optionrom/multiboot.S                      |   2 +-
python/scripts/vendor.py                           |   4 +-
python/wheels/meson-1.8.1-py3-none-any.whl         | Bin 1013001 -> 0 bytes
python/wheels/meson-1.9.0-py3-none-any.whl         | Bin 0 -> 1029634 bytes
pythondeps.toml                                    |   4 +-
rust/Cargo.lock                                    | 125 ++++-
rust/Cargo.toml                                    |  19 +-
.../src/bindings.rs => bindings/src/lib.rs}        |  12 +-
rust/bits/Cargo.toml                               |   2 +-
rust/bits/meson.build                              |   2 +-
rust/bits/src/lib.rs                               |  13 +-
rust/bql/Cargo.toml                                |  23 +
rust/bql/build.rs                                  |   1 +
rust/bql/meson.build                               |  52 +++
rust/bql/src/bindings.rs                           |  25 +
rust/{qemu-api => bql}/src/cell.rs                 | 336 ++-----------
rust/bql/src/lib.rs                                |  29 ++
rust/chardev/Cargo.toml                            |  23 +
rust/chardev/build.rs                              |   1 +
rust/chardev/meson.build                           |  41 ++
rust/chardev/src/bindings.rs                       |  36 ++
rust/{qemu-api => chardev}/src/chardev.rs          |  25 +-
rust/chardev/src/lib.rs                            |   6 +
rust/common/Cargo.toml                             |  20 +
rust/common/meson.build                            |  34 ++
rust/{qemu-api => common}/src/assertions.rs        |  24 +-
rust/{qemu-api => common}/src/bitops.rs            |   1 -
rust/{qemu-api => common}/src/callbacks.rs         |  37 +-
rust/{qemu-api => common}/src/errno.rs             |  19 +-
rust/common/src/lib.rs                             |  22 +
rust/common/src/opaque.rs                          | 236 ++++++++++
rust/{qemu-api => common}/src/uninit.rs            |   8 +-
rust/common/src/zeroable.rs                        |  18 +
rust/hw/char/pl011/Cargo.toml                      |  10 +-
rust/hw/char/pl011/build.rs                        |   1 +
rust/hw/char/pl011/meson.build                     |  39 +-
rust/hw/char/pl011/src/bindings.rs                 |  27 ++
rust/hw/char/pl011/src/device.rs                   | 195 ++++----
rust/hw/char/pl011/src/lib.rs                      |   1 +
rust/hw/char/pl011/src/registers.rs                |   4 +-
rust/hw/core/Cargo.toml                            |  26 ++
rust/hw/core/build.rs                              |   1 +
rust/hw/core/meson.build                           |  80 ++++
rust/hw/core/src/bindings.rs                       |  41 ++
rust/{qemu-api => hw/core}/src/irq.rs              |  16 +-
rust/hw/core/src/lib.rs                            |  15 +
rust/{qemu-api => hw/core}/src/qdev.rs             | 111 +++--
rust/{qemu-api => hw/core}/src/sysbus.rs           |  24 +-
rust/{qemu-api => hw/core}/tests/tests.rs          |  52 +--
rust/hw/timer/hpet/Cargo.toml                      |   9 +-
rust/hw/timer/hpet/meson.build                     |  12 +-
rust/hw/timer/hpet/src/device.rs                   | 227 ++++-----
rust/hw/timer/hpet/src/fw_cfg.rs                   |   6 +-
rust/meson.build                                   |  15 +-
rust/migration/Cargo.toml                          |  20 +
rust/migration/build.rs                            |   1 +
rust/migration/meson.build                         |  53 +++
rust/migration/src/bindings.rs                     |  48 ++
rust/migration/src/lib.rs                          |   6 +
rust/{qemu-api => migration}/src/vmstate.rs        | 519 +++++++++++++--------
rust/qemu-api/.gitignore                           |   2 -
rust/qemu-api/README.md                            |  19 -
rust/qemu-api/meson.build                          | 114 -----
rust/qemu-api/src/lib.rs                           | 174 -------
rust/qemu-api/src/prelude.rs                       |  31 --
rust/qemu-api/src/zeroable.rs                      |  37 --
rust/{qemu-api-macros => qemu-macros}/Cargo.toml   |   2 +-
rust/{qemu-api-macros => qemu-macros}/meson.build  |  10 +-
rust/{qemu-api-macros => qemu-macros}/src/bits.rs  |   0
rust/{qemu-api-macros => qemu-macros}/src/lib.rs   | 170 ++++++-
rust/{qemu-api-macros => qemu-macros}/src/tests.rs | 115 ++++-
rust/qom/Cargo.toml                                |  23 +
rust/qom/build.rs                                  |   1 +
rust/qom/meson.build                               |  43 ++
rust/qom/src/bindings.rs                           |  25 +
rust/qom/src/lib.rs                                |  13 +
rust/qom/src/prelude.rs                            |  12 +
rust/{qemu-api => qom}/src/qom.rs                  |  31 +-
rust/system/Cargo.toml                             |  21 +
rust/system/build.rs                               |   1 +
rust/system/meson.build                            |  42 ++
rust/system/src/bindings.rs                        |  41 ++
rust/system/src/lib.rs                             |   6 +
rust/{qemu-api => system}/src/memory.rs            |  21 +-
rust/tests/Cargo.toml                              |  26 ++
rust/tests/meson.build                             |  14 +
rust/{qemu-api => tests}/tests/vmstate_tests.rs    | 160 ++++---
rust/{qemu-api => util}/Cargo.toml                 |  14 +-
rust/{qemu-api => util}/build.rs                   |  10 +-
rust/util/meson.build                              |  55 +++
rust/util/src/bindings.rs                          |  25 +
rust/{qemu-api => util}/src/error.rs               |   6 +-
rust/util/src/lib.rs                               |   9 +
rust/{qemu-api => util}/src/log.rs                 |  16 +-
rust/{qemu-api => util}/src/module.rs              |   2 +-
rust/{qemu-api => util}/src/timer.rs               |  16 +-
target/arm/meson.build                             |   2 +
188 files changed, 3558 insertions(+), 2156 deletions(-)
create mode 100644 rust/bql/wrapper.h
create mode 100644 rust/chardev/wrapper.h
create mode 100644 rust/hw/char/pl011/wrapper.h
create mode 100644 rust/hw/core/wrapper.h
rename rust/{qemu-api => migration}/wrapper.h (77%)
create mode 100644 rust/qom/wrapper.h
create mode 100644 rust/system/wrapper.h
create mode 100644 rust/util/wrapper.h
create mode 100644 target/arm/cpu-irq.c
create mode 100644 target/arm/el2-stubs.c
delete mode 100644 python/wheels/meson-1.8.1-py3-none-any.whl
create mode 100644 python/wheels/meson-1.9.0-py3-none-any.whl
rename rust/{qemu-api/src/bindings.rs => bindings/src/lib.rs} (89%)
create mode 100644 rust/bql/Cargo.toml
create mode 120000 rust/bql/build.rs
create mode 100644 rust/bql/meson.build
create mode 100644 rust/bql/src/bindings.rs
rename rust/{qemu-api => bql}/src/cell.rs (70%)
create mode 100644 rust/bql/src/lib.rs
create mode 100644 rust/chardev/Cargo.toml
create mode 120000 rust/chardev/build.rs
create mode 100644 rust/chardev/meson.build
create mode 100644 rust/chardev/src/bindings.rs
rename rust/{qemu-api => chardev}/src/chardev.rs (94%)
create mode 100644 rust/chardev/src/lib.rs
create mode 100644 rust/common/Cargo.toml
create mode 100644 rust/common/meson.build
rename rust/{qemu-api => common}/src/assertions.rs (86%)
rename rust/{qemu-api => common}/src/bitops.rs (98%)
rename rust/{qemu-api => common}/src/callbacks.rs (85%)
rename rust/{qemu-api => common}/src/errno.rs (96%)
create mode 100644 rust/common/src/lib.rs
create mode 100644 rust/common/src/opaque.rs
rename rust/{qemu-api => common}/src/uninit.rs (91%)
create mode 100644 rust/common/src/zeroable.rs
create mode 120000 rust/hw/char/pl011/build.rs
create mode 100644 rust/hw/char/pl011/src/bindings.rs
create mode 100644 rust/hw/core/Cargo.toml
create mode 120000 rust/hw/core/build.rs
create mode 100644 rust/hw/core/meson.build
create mode 100644 rust/hw/core/src/bindings.rs
rename rust/{qemu-api => hw/core}/src/irq.rs (93%)
create mode 100644 rust/hw/core/src/lib.rs
rename rust/{qemu-api => hw/core}/src/qdev.rs (82%)
rename rust/{qemu-api => hw/core}/src/sysbus.rs (90%)
rename rust/{qemu-api => hw/core}/tests/tests.rs (78%)
create mode 100644 rust/migration/Cargo.toml
create mode 120000 rust/migration/build.rs
create mode 100644 rust/migration/meson.build
create mode 100644 rust/migration/src/bindings.rs
create mode 100644 rust/migration/src/lib.rs
rename rust/{qemu-api => migration}/src/vmstate.rs (61%)
delete mode 100644 rust/qemu-api/.gitignore
delete mode 100644 rust/qemu-api/README.md
delete mode 100644 rust/qemu-api/meson.build
delete mode 100644 rust/qemu-api/src/lib.rs
delete mode 100644 rust/qemu-api/src/prelude.rs
delete mode 100644 rust/qemu-api/src/zeroable.rs
rename rust/{qemu-api-macros => qemu-macros}/Cargo.toml (94%)
rename rust/{qemu-api-macros => qemu-macros}/meson.build (63%)
rename rust/{qemu-api-macros => qemu-macros}/src/bits.rs (100%)
rename rust/{qemu-api-macros => qemu-macros}/src/lib.rs (54%)
rename rust/{qemu-api-macros => qemu-macros}/src/tests.rs (50%)
create mode 100644 rust/qom/Cargo.toml
create mode 120000 rust/qom/build.rs
create mode 100644 rust/qom/meson.build
create mode 100644 rust/qom/src/bindings.rs
create mode 100644 rust/qom/src/lib.rs
create mode 100644 rust/qom/src/prelude.rs
rename rust/{qemu-api => qom}/src/qom.rs (97%)
create mode 100644 rust/system/Cargo.toml
create mode 120000 rust/system/build.rs
create mode 100644 rust/system/meson.build
create mode 100644 rust/system/src/bindings.rs
create mode 100644 rust/system/src/lib.rs
rename rust/{qemu-api => system}/src/memory.rs (90%)
create mode 100644 rust/tests/Cargo.toml
create mode 100644 rust/tests/meson.build
rename rust/{qemu-api => tests}/tests/vmstate_tests.rs (78%)
rename rust/{qemu-api => util}/Cargo.toml (55%)
rename rust/{qemu-api => util}/build.rs (81%)
create mode 100644 rust/util/meson.build
create mode 100644 rust/util/src/bindings.rs
rename rust/{qemu-api => util}/src/error.rs (98%)
create mode 100644 rust/util/src/lib.rs
rename rust/{qemu-api => util}/src/log.rs (93%)
rename rust/{qemu-api => util}/src/module.rs (97%)
rename rust/{qemu-api => util}/src/timer.rs (91%)
[PULL v2 00/60] CPU, Rust, x86 changes for 2025-09-13
Posted by Paolo Bonzini 1 week, 3 days ago
The following changes since commit 2e66fb24a0ca9750df0d1d5b35197ff89c4bbd46:

  Merge tag 'pull-misc-20250916' of https://gitlab.com/rth7680/qemu into staging (2025-09-16 10:10:51 -0700)

are available in the Git repository at:

  https://gitlab.com/bonzini/qemu.git tags/for-upstream

for you to fetch changes up to 00c0911c68e5bd664de1a261b74c390f4c0be83d:

  accel/kvm: Set guest_memfd_offset to non-zero value only when guest_memfd is valid (2025-09-17 19:01:57 +0200)

----------------------------------------------------------------
* 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
----------------------------------------------------------------

v1->v2: dropped "i386/kvm: Get X86MachineState in kvm_arch_init() without the cast check"

Igor Mammedov (1):
      hpet: guard IRQ handling with BQL

Manos Pitsidianakis (1):
      rust: add qdev Device derive macro

Marc-André Lureau (22):
      docs/rust: update msrv
      rust: remove unused global qemu "allocator"
      rust: add workspace authors
      rust: move vmstate_clock!() to qdev module
      rust: move VMState handling to QOM module
      rust: move Cell vmstate impl
      rust: split Rust-only "common" crate
      rust: make build.rs generic over various ./rust/projects
      rust: split "util" crate
      rust: split "migration" crate
      rust: split "bql" crate
      rust: split "qom" crate
      rust: split "chardev" crate
      rust: split "system" crate
      rust: split "hwcore" crate
      rust: rename qemu_api_macros -> qemu_macros
      rust/hpet: drop now unneeded qemu_api dep
      rust/pl011: drop dependency on qemu_api
      rust: repurpose qemu_api -> tests
      rust: re-export qemu_macros internal helper in "bits"
      rust: re-export qemu macros from common/qom/hwcore
      docs: update rust.rst

Paolo Bonzini (28):
      target/ppc: limit cpu_interrupt_exittb to system emulation
      target/sparc: limit cpu_check_irqs to system emulation
      target/i386: limit a20 to system emulation
      target-arm: remove uses of cpu_interrupt() for user-mode emulation
      user-exec: remove cpu_interrupt() stub
      treewide: clear bits of cs->interrupt_request with cpu_reset_interrupt()
      cpu-common: use atomic access for interrupt_request
      cpus: document that qemu_cpu_kick() can be used for BQL-less operation
      accel: use store_release/load_acquire for cross-thread exit_request
      accel: use atomic accesses for exit_request
      accel/tcg: create a thread-kick function for TCG
      accel/tcg: inline cpu_exit()
      cpus: remove TCG-ism from cpu_exit()
      cpus: properly kick CPUs out of inner execution loop
      treewide: rename qemu_wait_io_event/qemu_wait_io_event_common
      bsd-user, linux-user: introduce qemu_process_cpu_events
      cpus: clear exit_request in qemu_process_cpu_events
      accel: make all calls to qemu_process_cpu_events look the same
      tcg/user: do not set exit_request gratuitously
      ci: temporarily remove rust from Ubuntu
      configure: bump Meson to 1.9.0 for use with Rust
      meson, cargo: require Rust 1.83.0
      rust: add missing const markers for MSRV==1.83.0
      rust: use inline const expressions
      rust: vmstate: use const_refs_to_static
      rust: qdev: const_refs_to_static
      rust: meson: remove unnecessary complication in device crates
      rust: do not inline do_init_io

Xiaoyao Li (7):
      i386/cpu: Enable SMM cpu address space under KVM
      target/i386: Define enum X86ASIdx for x86's address spaces
      multiboot: Fix the split lock
      i386/kvm: Drop KVM_CAP_X86_SMM check in kvm_arch_init()
      accel/kvm: Switch to check KVM_CAP_GUEST_MEMFD and KVM_CAP_USER_MEMORY2 on VM
      accel/kvm: Zero out mem explicitly in kvm_set_user_memory_region()
      accel/kvm: Set guest_memfd_offset to non-zero value only when guest_memfd is valid

Zhao Liu (1):
      rust: vmstate: convert to use builder pattern

 MAINTAINERS                                        |  12 +-
 docs/about/build-platforms.rst                     |  15 +-
 docs/devel/rust.rst                                |  93 ++--
 docs/devel/tcg-icount.rst                          |   2 +-
 configure                                          |   4 +-
 meson.build                                        |  10 +-
 accel/tcg/tcg-accel-ops-mttcg.h                    |   3 -
 accel/tcg/tcg-accel-ops.h                          |   1 +
 bsd-user/aarch64/target_arch_cpu.h                 |   2 +-
 bsd-user/arm/target_arch_cpu.h                     |   2 +-
 bsd-user/i386/target_arch_cpu.h                    |   2 +-
 bsd-user/riscv/target_arch_cpu.h                   |   2 +-
 bsd-user/x86_64/target_arch_cpu.h                  |   2 +-
 include/hw/core/cpu.h                              |  22 +-
 include/system/cpus.h                              |   3 +-
 rust/bql/wrapper.h                                 |  27 ++
 rust/chardev/wrapper.h                             |  28 ++
 rust/hw/char/pl011/wrapper.h                       |  51 ++
 rust/hw/core/wrapper.h                             |  32 ++
 rust/{qemu-api => migration}/wrapper.h             |  20 -
 rust/qom/wrapper.h                                 |  27 ++
 rust/system/wrapper.h                              |  29 ++
 rust/util/wrapper.h                                |  32 ++
 target/arm/internals.h                             |   5 +
 target/i386/cpu.h                                  |   5 +
 accel/dummy-cpus.c                                 |   2 +-
 accel/hvf/hvf-accel-ops.c                          |   2 +-
 accel/kvm/kvm-accel-ops.c                          |   3 +-
 accel/kvm/kvm-all.c                                |  32 +-
 accel/tcg/cpu-exec.c                               |  34 +-
 accel/tcg/tcg-accel-ops-mttcg.c                    |  12 +-
 accel/tcg/tcg-accel-ops-rr.c                       |  55 ++-
 accel/tcg/tcg-accel-ops.c                          |   4 +-
 accel/tcg/user-exec.c                              |  11 +-
 bsd-user/main.c                                    |   5 -
 cpu-common.c                                       |   3 +-
 hw/core/cpu-common.c                               |  19 +-
 hw/core/cpu-system.c                               |   2 +-
 hw/ppc/ppc.c                                       |   2 +
 hw/ppc/spapr_hcall.c                               |   7 +-
 hw/ppc/spapr_rtas.c                                |   2 +-
 hw/timer/hpet.c                                    |   8 +
 linux-user/aarch64/cpu_loop.c                      |   2 +-
 linux-user/alpha/cpu_loop.c                        |   2 +-
 linux-user/arm/cpu_loop.c                          |   2 +-
 linux-user/hexagon/cpu_loop.c                      |   2 +-
 linux-user/hppa/cpu_loop.c                         |   2 +-
 linux-user/i386/cpu_loop.c                         |   2 +-
 linux-user/loongarch64/cpu_loop.c                  |   2 +-
 linux-user/m68k/cpu_loop.c                         |   2 +-
 linux-user/main.c                                  |   5 -
 linux-user/microblaze/cpu_loop.c                   |   2 +-
 linux-user/mips/cpu_loop.c                         |   2 +-
 linux-user/openrisc/cpu_loop.c                     |   2 +-
 linux-user/ppc/cpu_loop.c                          |   2 +-
 linux-user/riscv/cpu_loop.c                        |   2 +-
 linux-user/s390x/cpu_loop.c                        |   2 +-
 linux-user/sh4/cpu_loop.c                          |   2 +-
 linux-user/sparc/cpu_loop.c                        |   2 +-
 linux-user/xtensa/cpu_loop.c                       |   2 +-
 replay/replay-events.c                             |   3 +-
 system/cpu-timers.c                                |   6 +-
 system/cpus.c                                      |  15 +-
 system/physmem.c                                   |   5 -
 target/arm/cpu-irq.c                               | 381 +++++++++++++++
 target/arm/cpu.c                                   | 370 ---------------
 target/arm/el2-stubs.c                             |  37 ++
 target/arm/helper.c                                |   4 +
 target/arm/tcg/mte_helper.c                        |   2 +-
 target/avr/helper.c                                |   4 +-
 target/i386/helper.c                               |   2 +
 target/i386/hvf/x86hvf.c                           |   8 +-
 target/i386/kvm/hyperv.c                           |   1 -
 target/i386/kvm/kvm-cpu.c                          |  10 +
 target/i386/kvm/kvm.c                              |  30 +-
 target/i386/nvmm/nvmm-accel-ops.c                  |   8 +-
 target/i386/nvmm/nvmm-all.c                        |  19 +-
 target/i386/tcg/system/seg_helper.c                |  13 +-
 target/i386/tcg/system/svm_helper.c                |   2 +-
 target/i386/tcg/system/tcg-cpu.c                   |   4 +-
 target/i386/whpx/whpx-accel-ops.c                  |   6 +-
 target/i386/whpx/whpx-all.c                        |  23 +-
 target/openrisc/sys_helper.c                       |   2 +-
 target/ppc/helper_regs.c                           |   2 +
 target/rx/helper.c                                 |   4 +-
 target/s390x/tcg/excp_helper.c                     |   2 +-
 target/sparc/int32_helper.c                        |   2 +
 target/sparc/int64_helper.c                        |   2 +
 .gitlab-ci.d/buildtest.yml                         |   4 +-
 clippy.toml                                        |   2 +-
 pc-bios/multiboot_dma.bin                          | Bin 1024 -> 1024 bytes
 pc-bios/optionrom/multiboot.S                      |   2 +-
 python/scripts/vendor.py                           |   4 +-
 python/wheels/meson-1.8.1-py3-none-any.whl         | Bin 1013001 -> 0 bytes
 python/wheels/meson-1.9.0-py3-none-any.whl         | Bin 0 -> 1029634 bytes
 pythondeps.toml                                    |   4 +-
 rust/Cargo.lock                                    | 125 ++++-
 rust/Cargo.toml                                    |  19 +-
 .../src/bindings.rs => bindings/src/lib.rs}        |  12 +-
 rust/bits/Cargo.toml                               |   2 +-
 rust/bits/meson.build                              |   2 +-
 rust/bits/src/lib.rs                               |  13 +-
 rust/bql/Cargo.toml                                |  23 +
 rust/bql/build.rs                                  |   1 +
 rust/bql/meson.build                               |  52 +++
 rust/bql/src/bindings.rs                           |  25 +
 rust/{qemu-api => bql}/src/cell.rs                 | 336 ++-----------
 rust/bql/src/lib.rs                                |  29 ++
 rust/chardev/Cargo.toml                            |  23 +
 rust/chardev/build.rs                              |   1 +
 rust/chardev/meson.build                           |  41 ++
 rust/chardev/src/bindings.rs                       |  36 ++
 rust/{qemu-api => chardev}/src/chardev.rs          |  25 +-
 rust/chardev/src/lib.rs                            |   6 +
 rust/common/Cargo.toml                             |  20 +
 rust/common/meson.build                            |  34 ++
 rust/{qemu-api => common}/src/assertions.rs        |  24 +-
 rust/{qemu-api => common}/src/bitops.rs            |   1 -
 rust/{qemu-api => common}/src/callbacks.rs         |  37 +-
 rust/{qemu-api => common}/src/errno.rs             |  19 +-
 rust/common/src/lib.rs                             |  22 +
 rust/common/src/opaque.rs                          | 236 ++++++++++
 rust/{qemu-api => common}/src/uninit.rs            |   8 +-
 rust/common/src/zeroable.rs                        |  18 +
 rust/hw/char/pl011/Cargo.toml                      |  10 +-
 rust/hw/char/pl011/build.rs                        |   1 +
 rust/hw/char/pl011/meson.build                     |  39 +-
 rust/hw/char/pl011/src/bindings.rs                 |  27 ++
 rust/hw/char/pl011/src/device.rs                   | 195 ++++----
 rust/hw/char/pl011/src/lib.rs                      |   1 +
 rust/hw/char/pl011/src/registers.rs                |   4 +-
 rust/hw/core/Cargo.toml                            |  26 ++
 rust/hw/core/build.rs                              |   1 +
 rust/hw/core/meson.build                           |  80 ++++
 rust/hw/core/src/bindings.rs                       |  41 ++
 rust/{qemu-api => hw/core}/src/irq.rs              |  16 +-
 rust/hw/core/src/lib.rs                            |  15 +
 rust/{qemu-api => hw/core}/src/qdev.rs             | 111 +++--
 rust/{qemu-api => hw/core}/src/sysbus.rs           |  24 +-
 rust/{qemu-api => hw/core}/tests/tests.rs          |  52 +--
 rust/hw/timer/hpet/Cargo.toml                      |   9 +-
 rust/hw/timer/hpet/meson.build                     |  12 +-
 rust/hw/timer/hpet/src/device.rs                   | 227 ++++-----
 rust/hw/timer/hpet/src/fw_cfg.rs                   |   6 +-
 rust/meson.build                                   |  15 +-
 rust/migration/Cargo.toml                          |  20 +
 rust/migration/build.rs                            |   1 +
 rust/migration/meson.build                         |  53 +++
 rust/migration/src/bindings.rs                     |  48 ++
 rust/migration/src/lib.rs                          |   6 +
 rust/{qemu-api => migration}/src/vmstate.rs        | 519 +++++++++++++--------
 rust/qemu-api/.gitignore                           |   2 -
 rust/qemu-api/README.md                            |  19 -
 rust/qemu-api/meson.build                          | 114 -----
 rust/qemu-api/src/lib.rs                           | 174 -------
 rust/qemu-api/src/prelude.rs                       |  31 --
 rust/qemu-api/src/zeroable.rs                      |  37 --
 rust/{qemu-api-macros => qemu-macros}/Cargo.toml   |   2 +-
 rust/{qemu-api-macros => qemu-macros}/meson.build  |  10 +-
 rust/{qemu-api-macros => qemu-macros}/src/bits.rs  |   0
 rust/{qemu-api-macros => qemu-macros}/src/lib.rs   | 170 ++++++-
 rust/{qemu-api-macros => qemu-macros}/src/tests.rs | 115 ++++-
 rust/qom/Cargo.toml                                |  23 +
 rust/qom/build.rs                                  |   1 +
 rust/qom/meson.build                               |  43 ++
 rust/qom/src/bindings.rs                           |  25 +
 rust/qom/src/lib.rs                                |  13 +
 rust/qom/src/prelude.rs                            |  12 +
 rust/{qemu-api => qom}/src/qom.rs                  |  31 +-
 rust/system/Cargo.toml                             |  21 +
 rust/system/build.rs                               |   1 +
 rust/system/meson.build                            |  42 ++
 rust/system/src/bindings.rs                        |  41 ++
 rust/system/src/lib.rs                             |   6 +
 rust/{qemu-api => system}/src/memory.rs            |  21 +-
 rust/tests/Cargo.toml                              |  26 ++
 rust/tests/meson.build                             |  14 +
 rust/{qemu-api => tests}/tests/vmstate_tests.rs    | 160 ++++---
 rust/{qemu-api => util}/Cargo.toml                 |  14 +-
 rust/{qemu-api => util}/build.rs                   |  10 +-
 rust/util/meson.build                              |  55 +++
 rust/util/src/bindings.rs                          |  25 +
 rust/{qemu-api => util}/src/error.rs               |   6 +-
 rust/util/src/lib.rs                               |   9 +
 rust/{qemu-api => util}/src/log.rs                 |  16 +-
 rust/{qemu-api => util}/src/module.rs              |   2 +-
 rust/{qemu-api => util}/src/timer.rs               |  16 +-
 target/arm/meson.build                             |   2 +
 188 files changed, 3558 insertions(+), 2156 deletions(-)
 create mode 100644 rust/bql/wrapper.h
 create mode 100644 rust/chardev/wrapper.h
 create mode 100644 rust/hw/char/pl011/wrapper.h
 create mode 100644 rust/hw/core/wrapper.h
 rename rust/{qemu-api => migration}/wrapper.h (77%)
 create mode 100644 rust/qom/wrapper.h
 create mode 100644 rust/system/wrapper.h
 create mode 100644 rust/util/wrapper.h
 create mode 100644 target/arm/cpu-irq.c
 create mode 100644 target/arm/el2-stubs.c
 delete mode 100644 python/wheels/meson-1.8.1-py3-none-any.whl
 create mode 100644 python/wheels/meson-1.9.0-py3-none-any.whl
 rename rust/{qemu-api/src/bindings.rs => bindings/src/lib.rs} (89%)
 create mode 100644 rust/bql/Cargo.toml
 create mode 120000 rust/bql/build.rs
 create mode 100644 rust/bql/meson.build
 create mode 100644 rust/bql/src/bindings.rs
 rename rust/{qemu-api => bql}/src/cell.rs (70%)
 create mode 100644 rust/bql/src/lib.rs
 create mode 100644 rust/chardev/Cargo.toml
 create mode 120000 rust/chardev/build.rs
 create mode 100644 rust/chardev/meson.build
 create mode 100644 rust/chardev/src/bindings.rs
 rename rust/{qemu-api => chardev}/src/chardev.rs (94%)
 create mode 100644 rust/chardev/src/lib.rs
 create mode 100644 rust/common/Cargo.toml
 create mode 100644 rust/common/meson.build
 rename rust/{qemu-api => common}/src/assertions.rs (86%)
 rename rust/{qemu-api => common}/src/bitops.rs (98%)
 rename rust/{qemu-api => common}/src/callbacks.rs (85%)
 rename rust/{qemu-api => common}/src/errno.rs (96%)
 create mode 100644 rust/common/src/lib.rs
 create mode 100644 rust/common/src/opaque.rs
 rename rust/{qemu-api => common}/src/uninit.rs (91%)
 create mode 100644 rust/common/src/zeroable.rs
 create mode 120000 rust/hw/char/pl011/build.rs
 create mode 100644 rust/hw/char/pl011/src/bindings.rs
 create mode 100644 rust/hw/core/Cargo.toml
 create mode 120000 rust/hw/core/build.rs
 create mode 100644 rust/hw/core/meson.build
 create mode 100644 rust/hw/core/src/bindings.rs
 rename rust/{qemu-api => hw/core}/src/irq.rs (93%)
 create mode 100644 rust/hw/core/src/lib.rs
 rename rust/{qemu-api => hw/core}/src/qdev.rs (82%)
 rename rust/{qemu-api => hw/core}/src/sysbus.rs (90%)
 rename rust/{qemu-api => hw/core}/tests/tests.rs (78%)
 create mode 100644 rust/migration/Cargo.toml
 create mode 120000 rust/migration/build.rs
 create mode 100644 rust/migration/meson.build
 create mode 100644 rust/migration/src/bindings.rs
 create mode 100644 rust/migration/src/lib.rs
 rename rust/{qemu-api => migration}/src/vmstate.rs (61%)
 delete mode 100644 rust/qemu-api/.gitignore
 delete mode 100644 rust/qemu-api/README.md
 delete mode 100644 rust/qemu-api/meson.build
 delete mode 100644 rust/qemu-api/src/lib.rs
 delete mode 100644 rust/qemu-api/src/prelude.rs
 delete mode 100644 rust/qemu-api/src/zeroable.rs
 rename rust/{qemu-api-macros => qemu-macros}/Cargo.toml (94%)
 rename rust/{qemu-api-macros => qemu-macros}/meson.build (63%)
 rename rust/{qemu-api-macros => qemu-macros}/src/bits.rs (100%)
 rename rust/{qemu-api-macros => qemu-macros}/src/lib.rs (54%)
 rename rust/{qemu-api-macros => qemu-macros}/src/tests.rs (50%)
 create mode 100644 rust/qom/Cargo.toml
 create mode 120000 rust/qom/build.rs
 create mode 100644 rust/qom/meson.build
 create mode 100644 rust/qom/src/bindings.rs
 create mode 100644 rust/qom/src/lib.rs
 create mode 100644 rust/qom/src/prelude.rs
 rename rust/{qemu-api => qom}/src/qom.rs (97%)
 create mode 100644 rust/system/Cargo.toml
 create mode 120000 rust/system/build.rs
 create mode 100644 rust/system/meson.build
 create mode 100644 rust/system/src/bindings.rs
 create mode 100644 rust/system/src/lib.rs
 rename rust/{qemu-api => system}/src/memory.rs (90%)
 create mode 100644 rust/tests/Cargo.toml
 create mode 100644 rust/tests/meson.build
 rename rust/{qemu-api => tests}/tests/vmstate_tests.rs (78%)
 rename rust/{qemu-api => util}/Cargo.toml (55%)
 rename rust/{qemu-api => util}/build.rs (81%)
 create mode 100644 rust/util/meson.build
 create mode 100644 rust/util/src/bindings.rs
 rename rust/{qemu-api => util}/src/error.rs (98%)
 create mode 100644 rust/util/src/lib.rs
 rename rust/{qemu-api => util}/src/log.rs (93%)
 rename rust/{qemu-api => util}/src/module.rs (97%)
 rename rust/{qemu-api => util}/src/timer.rs (91%)
-- 
2.51.0


Re: [PULL v2 00/60] CPU, Rust, x86 changes for 2025-09-13
Posted by Richard Henderson 1 week, 2 days ago
On 9/18/25 03:46, Paolo Bonzini wrote:
> The following changes since commit 2e66fb24a0ca9750df0d1d5b35197ff89c4bbd46:
> 
>    Merge tag 'pull-misc-20250916' ofhttps://gitlab.com/rth7680/qemu into staging (2025-09-16 10:10:51 -0700)
> 
> are available in the Git repository at:
> 
>    https://gitlab.com/bonzini/qemu.git tags/for-upstream
> 
> for you to fetch changes up to 00c0911c68e5bd664de1a261b74c390f4c0be83d:
> 
>    accel/kvm: Set guest_memfd_offset to non-zero value only when guest_memfd is valid (2025-09-17 19:01:57 +0200)
> 
> ----------------------------------------------------------------
> * 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
> ----------------------------------------------------------------
> 
> v1->v2: dropped "i386/kvm: Get X86MachineState in kvm_arch_init() without the cast check"


Applied, thanks.  Please update https://wiki.qemu.org/ChangeLog/10.2 as appropriate.

r~