History log of /qemu/rust/qemu-api/src/ (Results 26 – 50 of 139)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
e5655e9218-Mar-2025 Zhao Liu <zhao1.liu@intel.com>

rust/vmstate: Fix unnecessary VMState bound of with_varray_flag()

The VMState type bound is not used in with_varray_flag().

And for vmstate_struct, Rust cannot infer the type of `num` from the
call

rust/vmstate: Fix unnecessary VMState bound of with_varray_flag()

The VMState type bound is not used in with_varray_flag().

And for vmstate_struct, Rust cannot infer the type of `num` from the
call_func_with_field(), so this causes the compiling error because it
complains "cannot satisfy `_: VMState`" in with_varray_flag().

Note Rust can infer the type in vmstate_of macro so that
with_varray_flag() can work at there. It is possible that the different
initialization ways in the two macros cause differences in Rust's
type inference.

But in fact, the VMState type bound is not used in with_varray_flag()
and vmstate_varray_flag() has already checked the VMState type, it's
safe to drop VMState bound of with_varray_flag(), which can fix the
above compiling error.

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Link: https://lore.kernel.org/r/20250318130219.1799170-8-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

42c814b118-Mar-2025 Zhao Liu <zhao1.liu@intel.com>

rust/vmstate: Fix "cannot infer type" error in vmstate_struct

Rust cannot infer the type (it should be VMStateField) after
Zeroable::ZERO, which cause the compiling error.

To fix this error, call w

rust/vmstate: Fix "cannot infer type" error in vmstate_struct

Rust cannot infer the type (it should be VMStateField) after
Zeroable::ZERO, which cause the compiling error.

To fix this error, call with_varray_flag() after VMStateField's
initialization.

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Link: https://lore.kernel.org/r/20250318130219.1799170-7-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

6182582518-Mar-2025 Zhao Liu <zhao1.liu@intel.com>

rust/vmstate: Fix type check for varray in vmstate_struct

When pass a varray to vmstate_struct, the `type` parameter should be the
type of the element in the varray, for example:

vmstate_struct!(HP

rust/vmstate: Fix type check for varray in vmstate_struct

When pass a varray to vmstate_struct, the `type` parameter should be the
type of the element in the varray, for example:

vmstate_struct!(HPETState, timers, [0 .. num_timers], VMSTATE_HPET_TIMER,
BqlRefCell<HPETTimer>).with_version_id(0)

But this breaks current type check, because it checks the type of
`field`, which is an array type (for the above example, type of timers
is [BqlRefCell<HPETTimer>; 32], not BqlRefCell<HPETTimer>).

But the current assert_field_type() can no longer be extended to include
new arguments, so a variant of it (a second macro containing the
`num = $num:ident` parameter) had to be added to handle array cases.

In this new macro, it not only checks the type of element, but also
checks whether the `num` (number of elements in varray) is out of range.

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Link: https://lore.kernel.org/r/20250318130219.1799170-6-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

2079706918-Mar-2025 Zhao Liu <zhao1.liu@intel.com>

rust/vmstate: Fix size field of VMStateField with VMS_ARRAY_OF_POINTER flag

The `size` field of the VMStateField with VMS_ARRAY_OF_POINTER flag
should stores the size of pointer, which depends on pl

rust/vmstate: Fix size field of VMStateField with VMS_ARRAY_OF_POINTER flag

The `size` field of the VMStateField with VMS_ARRAY_OF_POINTER flag
should stores the size of pointer, which depends on platform.

Currently, `*const`, `*mut`, `NonNull`, `Box<>` and their wrapper are
supported, and they have the same size as `usize`.

Store the size (of `usize`) when VMS_ARRAY_OF_POINTER flag is set.

The size may be changed when more smart pointers are supported, but now
the size of "usize" is enough.

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Link: https://lore.kernel.org/r/20250318130219.1799170-5-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

c3d80af518-Mar-2025 Zhao Liu <zhao1.liu@intel.com>

rust/vmstate: Fix num field when varray flags are set

Array type vmstate has the VMStateField with `num` equals its length.

When the varray vmstate is built based a array type, the `num` field
shou

rust/vmstate: Fix num field when varray flags are set

Array type vmstate has the VMStateField with `num` equals its length.

When the varray vmstate is built based a array type, the `num` field
should be cleaned to 0, because varray uses `num_offset` instead of
`num` to store elements number information.

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Link: https://lore.kernel.org/r/20250318130219.1799170-4-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

6ca5c3be18-Mar-2025 Zhao Liu <zhao1.liu@intel.com>

rust/vmstate: Fix num_offset in vmstate macros

`num_offset` is a member of `VMStateField`, and there's no need to use
"." to access this field in a `VMStateField` instance.

Signed-off-by: Zhao Liu

rust/vmstate: Fix num_offset in vmstate macros

`num_offset` is a member of `VMStateField`, and there's no need to use
"." to access this field in a `VMStateField` instance.

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Link: https://lore.kernel.org/r/20250318130219.1799170-3-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

ea8a7ceb18-Mar-2025 Zhao Liu <zhao1.liu@intel.com>

rust/vmstate: Remove unnecessary unsafe

Remove the `unsafe` block of vmsd, because vmsd (passed to
vmstate_struct) is defined in Rust side now, and it doesn't need
`unsafe`.

Signed-off-by: Zhao Liu

rust/vmstate: Remove unnecessary unsafe

Remove the `unsafe` block of vmsd, because vmsd (passed to
vmstate_struct) is defined in Rust side now, and it doesn't need
`unsafe`.

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Link: https://lore.kernel.org/r/20250318130219.1799170-2-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

9d116f4221-Mar-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: assertions: add static_assert

Add a new assertion that is similar to "const { assert!(...) }" but can be used
outside functions and with older versions of Rust. A similar macro is found in
Li

rust: assertions: add static_assert

Add a new assertion that is similar to "const { assert!(...) }" but can be used
outside functions and with older versions of Rust. A similar macro is found in
Linux, whereas the "static_assertions" crate has a const_assert macro that
produces worse error messages.

Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Link: https://lore.kernel.org/r/20250321112523.1774131-2-peter.maydell@linaro.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...


/qemu/.gitlab-ci.d/buildtest-template.yml
/qemu/.gitlab-ci.d/check-units.py
/qemu/.gitlab-ci.d/cirrus/freebsd-14.vars
/qemu/.gitlab-ci.d/cirrus/macos-14.vars
/qemu/.gitlab-ci.d/static_checks.yml
/qemu/MAINTAINERS
/qemu/VERSION
/qemu/accel/accel-system.c
/qemu/accel/accel-target.c
/qemu/accel/hvf/hvf-accel-ops.c
/qemu/accel/kvm/kvm-accel-ops.c
/qemu/accel/kvm/kvm-cpus.h
/qemu/accel/qtest/qtest.c
/qemu/accel/stubs/tcg-stub.c
/qemu/accel/tcg/cpu-exec-common.c
/qemu/accel/tcg/cpu-exec.c
/qemu/accel/tcg/cputlb.c
/qemu/accel/tcg/icount-common.c
/qemu/accel/tcg/internal-common.h
/qemu/accel/tcg/meson.build
/qemu/accel/tcg/monitor.c
/qemu/accel/tcg/tb-internal.h
/qemu/accel/tcg/tcg-accel-ops-icount.c
/qemu/accel/tcg/tcg-accel-ops-mttcg.c
/qemu/accel/tcg/tcg-accel-ops-rr.c
/qemu/accel/tcg/tcg-accel-ops.c
/qemu/accel/tcg/tcg-runtime-gvec.c
/qemu/accel/tcg/tcg-runtime.c
/qemu/accel/tcg/translate-all.c
/qemu/accel/tcg/user-exec-stub.c
/qemu/accel/tcg/user-exec.c
/qemu/accel/tcg/watchpoint.c
/qemu/accel/xen/xen-all.c
/qemu/backends/tpm/tpm_util.c
/qemu/block/block-backend.c
/qemu/block/create.c
/qemu/block/file-posix.c
/qemu/block/io.c
/qemu/block/io_uring.c
/qemu/block/linux-aio.c
/qemu/block/qed.c
/qemu/block/snapshot.c
/qemu/blockdev-nbd.c
/qemu/bsd-user/bsd-mem.h
/qemu/bsd-user/meson.build
/qemu/bsd-user/mmap.c
/qemu/bsd-user/plugin-api.c
/qemu/bsd-user/qemu.h
/qemu/bsd-user/signal.c
/qemu/common-user/plugin-api.c.inc
/qemu/configs/devices/i386-softmmu/default.mak
/qemu/contrib/plugins/meson.build
/qemu/cpu-common.c
/qemu/cpu-target.c
/qemu/disas/disas-common.c
/qemu/docs/about/build-platforms.rst
/qemu/docs/about/deprecated.rst
/qemu/docs/about/removed-features.rst
/qemu/docs/conf.py
/qemu/docs/devel/build-system.rst
/qemu/docs/devel/codebase.rst
/qemu/docs/devel/index-build.rst
/qemu/docs/devel/kconfig.rst
/qemu/docs/devel/migration/vfio.rst
/qemu/docs/devel/qapi-code-gen.rst
/qemu/docs/devel/qapi-domain.rst
/qemu/docs/devel/testing/functional.rst
/qemu/docs/glossary.rst
/qemu/docs/interop/qemu-ga-ref.rst
/qemu/docs/interop/qemu-qmp-ref.rst
/qemu/docs/interop/qemu-storage-daemon-qmp-ref.rst
/qemu/docs/specs/aspeed-intc.rst
/qemu/docs/specs/index.rst
/qemu/docs/sphinx-static/theme_overrides.css
/qemu/docs/sphinx/compat.py
/qemu/docs/sphinx/qapi_domain.py
/qemu/docs/sphinx/qapidoc.py
/qemu/docs/sphinx/qapidoc_legacy.py
/qemu/docs/system/arm/bananapi_m2u.rst
/qemu/docs/system/arm/orangepi.rst
/qemu/docs/system/devices/igb.rst
/qemu/docs/system/ppc/amigang.rst
/qemu/docs/system/ppc/embedded.rst
/qemu/docs/system/ppc/powernv.rst
/qemu/gdbstub/gdbstub.c
/qemu/gdbstub/system.c
/qemu/gdbstub/user-target.c
/qemu/gdbstub/user.c
/qemu/host/include/aarch64/host/atomic128-cas.h
/qemu/host/include/aarch64/host/atomic128-ldst.h.inc
/qemu/host/include/generic/host/atomic128-cas.h.inc
/qemu/host/include/generic/host/atomic128-ldst.h.inc
/qemu/host/include/loongarch64/host/atomic128-ldst.h.inc
/qemu/host/include/x86_64/host/atomic128-ldst.h.inc
/qemu/host/include/x86_64/host/load-extract-al16-al8.h.inc
/qemu/hw/acpi/acpi-stub.c
/qemu/hw/acpi/core.c
/qemu/hw/acpi/cpu.c
/qemu/hw/acpi/cpu_hotplug.c
/qemu/hw/arm/Kconfig
/qemu/hw/arm/aspeed.c
/qemu/hw/arm/aspeed_ast10x0.c
/qemu/hw/arm/aspeed_ast2400.c
/qemu/hw/arm/aspeed_ast2600.c
/qemu/hw/arm/aspeed_ast27x0.c
/qemu/hw/arm/fsl-imx25.c
/qemu/hw/arm/fsl-imx6.c
/qemu/hw/arm/fsl-imx6ul.c
/qemu/hw/arm/fsl-imx7.c
/qemu/hw/arm/fsl-imx8mp.c
/qemu/hw/arm/sbsa-ref.c
/qemu/hw/arm/smmu-common.c
/qemu/hw/arm/smmu-internal.h
/qemu/hw/arm/smmuv3.c
/qemu/hw/arm/trace-events
/qemu/hw/arm/virt.c
/qemu/hw/block/block.c
/qemu/hw/block/virtio-blk.c
/qemu/hw/block/xen-block.c
/qemu/hw/char/Kconfig
/qemu/hw/char/meson.build
/qemu/hw/char/pl011.c
/qemu/hw/core/cpu-common.c
/qemu/hw/core/cpu-system.c
/qemu/hw/core/cpu-user.c
/qemu/hw/core/generic-loader.c
/qemu/hw/core/loader.c
/qemu/hw/core/machine.c
/qemu/hw/core/meson.build
/qemu/hw/core/qdev-properties-system.c
/qemu/hw/core/qdev-properties.c
/qemu/hw/display/apple-gfx.m
/qemu/hw/display/qxl.c
/qemu/hw/gpio/npcm7xx_gpio.c
/qemu/hw/i386/fw_cfg.c
/qemu/hw/i386/pc.c
/qemu/hw/ide/core.c
/qemu/hw/ide/macio.c
/qemu/hw/intc/arm_gicv3_cpuif.c
/qemu/hw/intc/armv7m_nvic.c
/qemu/hw/intc/aspeed_intc.c
/qemu/hw/intc/pnv_xive.c
/qemu/hw/intc/pnv_xive2.c
/qemu/hw/intc/spapr_xive.c
/qemu/hw/intc/trace-events
/qemu/hw/intc/xive.c
/qemu/hw/intc/xive2.c
/qemu/hw/mips/jazz.c
/qemu/hw/misc/aspeed_hace.c
/qemu/hw/misc/aspeed_scu.c
/qemu/hw/misc/mps2-fpgaio.c
/qemu/hw/misc/xlnx-versal-trng.c
/qemu/hw/net/e1000e.c
/qemu/hw/net/eepro100.c
/qemu/hw/net/igb.c
/qemu/hw/net/net_tx_pkt.c
/qemu/hw/net/smc91c111.c
/qemu/hw/nvme/ctrl.c
/qemu/hw/nvme/nguid.c
/qemu/hw/nvram/xlnx-bbram.c
/qemu/hw/nvram/xlnx-efuse.c
/qemu/hw/openrisc/openrisc_sim.c
/qemu/hw/openrisc/virt.c
/qemu/hw/pci-bridge/pcie_pci_bridge.c
/qemu/hw/pci-host/pnv_phb4_pec.c
/qemu/hw/pci/pci.c
/qemu/hw/pci/trace-events
/qemu/hw/ppc/Kconfig
/qemu/hw/ppc/amigaone.c
/qemu/hw/ppc/e500.c
/qemu/hw/ppc/meson.build
/qemu/hw/ppc/pnv.c
/qemu/hw/ppc/pnv_bmc.c
/qemu/hw/ppc/pnv_homer.c
/qemu/hw/ppc/pnv_lpc.c
/qemu/hw/ppc/pnv_occ.c
/qemu/hw/ppc/ppc.c
/qemu/hw/ppc/sam460ex.c
/qemu/hw/ppc/spapr.c
/qemu/hw/ppc/spapr_caps.c
/qemu/hw/ppc/spapr_cpu_core.c
/qemu/hw/ppc/spapr_hcall.c
/qemu/hw/ppc/spapr_nested.c
/qemu/hw/ppc/virtex_ml507.c
/qemu/hw/rtc/Kconfig
/qemu/hw/rtc/meson.build
/qemu/hw/rtc/rs5c372.c
/qemu/hw/rtc/trace-events
/qemu/hw/s390x/ccw-device.c
/qemu/hw/s390x/css.c
/qemu/hw/s390x/s390-pci-bus.c
/qemu/hw/s390x/s390-pci-inst.c
/qemu/hw/s390x/s390-pci-vfio.c
/qemu/hw/s390x/s390-virtio-ccw.c
/qemu/hw/scsi/scsi-bus.c
/qemu/hw/scsi/scsi-disk.c
/qemu/hw/scsi/virtio-scsi-dataplane.c
/qemu/hw/scsi/virtio-scsi.c
/qemu/hw/sd/sdhci.c
/qemu/hw/sh4/sh7750.c
/qemu/hw/ssi/pnv_spi.c
/qemu/hw/timer/Kconfig
/qemu/hw/timer/meson.build
/qemu/hw/vfio/amd-xgbe.c
/qemu/hw/vfio/ap.c
/qemu/hw/vfio/calxeda-xgmac.c
/qemu/hw/vfio/ccw.c
/qemu/hw/vfio/common.c
/qemu/hw/vfio/igd.c
/qemu/hw/vfio/iommufd.c
/qemu/hw/vfio/meson.build
/qemu/hw/vfio/migration-multifd.c
/qemu/hw/vfio/migration-multifd.h
/qemu/hw/vfio/migration.c
/qemu/hw/vfio/pci-quirks.c
/qemu/hw/vfio/pci.c
/qemu/hw/vfio/pci.h
/qemu/hw/vfio/platform.c
/qemu/hw/vfio/spapr.c
/qemu/hw/vfio/trace-events
/qemu/hw/virtio/iothread-vq-mapping.c
/qemu/hw/virtio/meson.build
/qemu/hw/virtio/virtio-mem.c
/qemu/hw/virtio/virtio-pci.c
/qemu/hw/xen/xen-mapcache.c
/qemu/hw/xen/xen_pt.c
/qemu/include/accel/accel-cpu-target.h
/qemu/include/accel/tcg/cpu-ops.h
/qemu/include/accel/tcg/getpc.h
/qemu/include/block/aio.h
/qemu/include/block/block_int-common.h
/qemu/include/block/graph-lock.h
/qemu/include/block/raw-aio.h
/qemu/include/block/thread-pool.h
/qemu/include/exec/cpu-all.h
/qemu/include/exec/cpu-defs.h
/qemu/include/exec/cpu-interrupt.h
/qemu/include/exec/cputlb.h
/qemu/include/exec/exec-all.h
/qemu/include/exec/memop.h
/qemu/include/exec/memory.h
/qemu/include/exec/page-protection.h
/qemu/include/exec/poison.h
/qemu/include/exec/ram_addr.h
/qemu/include/exec/ramblock.h
/qemu/include/exec/target_page.h
/qemu/include/hw/acpi/acpi.h
/qemu/include/hw/arm/aspeed_soc.h
/qemu/include/hw/arm/bsa.h
/qemu/include/hw/arm/smmu-common.h
/qemu/include/hw/core/cpu.h
/qemu/include/hw/core/sysemu-cpu-ops.h
/qemu/include/hw/hyperv/hyperv-proto.h
/qemu/include/hw/intc/aspeed_intc.h
/qemu/include/hw/misc/aspeed_hace.h
/qemu/include/hw/misc/aspeed_scu.h
/qemu/include/hw/pci-host/pnv_phb4.h
/qemu/include/hw/pci/pci.h
/qemu/include/hw/pci/pci_device.h
/qemu/include/hw/pci/pcie.h
/qemu/include/hw/ppc/pnv.h
/qemu/include/hw/ppc/pnv_homer.h
/qemu/include/hw/ppc/pnv_occ.h
/qemu/include/hw/ppc/pnv_pnor.h
/qemu/include/hw/ppc/pnv_xscom.h
/qemu/include/hw/ppc/spapr.h
/qemu/include/hw/ppc/spapr_nested.h
/qemu/include/hw/ppc/xive.h
/qemu/include/hw/ppc/xive2.h
/qemu/include/hw/ppc/xive2_regs.h
/qemu/include/hw/ppc/xive_regs.h
/qemu/include/hw/qdev-properties.h
/qemu/include/hw/s390x/s390-pci-bus.h
/qemu/include/hw/s390x/s390-pci-clp.h
/qemu/include/hw/scsi/scsi.h
/qemu/include/hw/sd/sdhci.h
/qemu/include/hw/ssi/pnv_spi.h
/qemu/include/hw/vfio/vfio-common.h
/qemu/include/hw/virtio/iothread-vq-mapping.h
/qemu/include/hw/virtio/virtio-scsi.h
/qemu/include/hw/xen/arch_hvm.h
/qemu/include/migration/client-options.h
/qemu/include/migration/cpr.h
/qemu/include/migration/misc.h
/qemu/include/migration/register.h
/qemu/include/qapi/error.h
/qemu/include/qemu/atomic128.h
/qemu/include/qemu/compiler.h
/qemu/include/qemu/iov.h
/qemu/include/qemu/plugin-memory.h
/qemu/include/qemu/thread.h
/qemu/include/qemu/typedefs.h
/qemu/include/system/accel-ops.h
/qemu/include/system/arch_init.h
/qemu/include/system/block-backend-global-state.h
/qemu/include/system/cpus.h
/qemu/include/system/dma.h
/qemu/include/system/hostmem.h
/qemu/include/user/mmap.h
/qemu/linux-user/aarch64/cpu_loop.c
/qemu/linux-user/alpha/target_proc.h
/qemu/linux-user/arm/cpu_loop.c
/qemu/linux-user/main.c
/qemu/linux-user/meson.build
/qemu/linux-user/mmap.c
/qemu/linux-user/plugin-api.c
/qemu/linux-user/signal.c
/qemu/linux-user/syscall.c
/qemu/linux-user/user-internals.h
/qemu/linux-user/user-mmap.h
/qemu/meson.build
/qemu/migration/colo.c
/qemu/migration/cpr.c
/qemu/migration/meson.build
/qemu/migration/migration-hmp-cmds.c
/qemu/migration/migration.c
/qemu/migration/migration.h
/qemu/migration/multifd-device-state.c
/qemu/migration/multifd-nocomp.c
/qemu/migration/multifd.c
/qemu/migration/multifd.h
/qemu/migration/options.c
/qemu/migration/qemu-file.h
/qemu/migration/ram.c
/qemu/migration/savevm.c
/qemu/migration/savevm.h
/qemu/migration/trace-events
/qemu/net/net.c
/qemu/net/tap-linux.c
/qemu/net/vhost-vdpa.c
/qemu/page-target.c
/qemu/page-vary-target.c
/qemu/pc-bios/README
/qemu/pc-bios/meson.build
/qemu/pc-bios/pnv-pnor.bin
/qemu/pc-bios/skiboot.lid
/qemu/pc-bios/slof.bin
/qemu/plugins/api-system.c
/qemu/plugins/api-user.c
/qemu/plugins/api.c
/qemu/plugins/core.c
/qemu/plugins/loader.c
/qemu/plugins/meson.build
/qemu/plugins/plugin.h
/qemu/plugins/system.c
/qemu/plugins/user.c
/qemu/qapi/block-core.json
/qemu/qapi/block-export.json
/qemu/qapi/qapi-schema.json
/qemu/qemu-nbd.c
/qemu/qga/qapi-schema.json
/qemu/roms/skiboot
/qemu/rust/hw/char/pl011/src/device.rs
/qemu/rust/hw/timer/Kconfig
/qemu/rust/hw/timer/hpet/src/hpet.rs
assertions.rs
/qemu/scripts/analyze-migration.py
/qemu/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml
/qemu/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml
/qemu/scripts/qapi/introspect.py
/qemu/scripts/qapi/main.py
/qemu/scripts/qapi/parser.py
/qemu/scripts/qapi/schema.py
/qemu/scripts/qapi/source.py
/qemu/scripts/qcow2-to-stdout.py
/qemu/storage-daemon/qapi/qapi-schema.json
/qemu/system/arch_init.c
/qemu/system/cpus.c
/qemu/system/dma-helpers.c
/qemu/system/globals-target.c
/qemu/system/globals.c
/qemu/system/meson.build
/qemu/system/physmem.c
/qemu/system/qdev-monitor.c
/qemu/system/vl.c
/qemu/system/watchpoint.c
/qemu/target/alpha/cpu.c
/qemu/target/alpha/fpu_helper.c
/qemu/target/alpha/helper.c
/qemu/target/alpha/sys_helper.c
/qemu/target/arm/arch_dump.c
/qemu/target/arm/cpregs.h
/qemu/target/arm/cpu.c
/qemu/target/arm/cpu.h
/qemu/target/arm/debug_helper.c
/qemu/target/arm/gtimer.h
/qemu/target/arm/helper.c
/qemu/target/arm/internals.h
/qemu/target/arm/tcg/cpu-v7m.c
/qemu/target/arm/tcg/cpu32.c
/qemu/target/arm/tcg/helper-a64.c
/qemu/target/arm/tcg/hflags.c
/qemu/target/arm/tcg/mte_helper.c
/qemu/target/arm/tcg/op_helper.c
/qemu/target/arm/tcg/sve_helper.c
/qemu/target/arm/tcg/tlb-insns.c
/qemu/target/arm/tcg/translate-a64.c
/qemu/target/arm/tcg/translate-a64.h
/qemu/target/arm/tcg/translate.c
/qemu/target/arm/tcg/translate.h
/qemu/target/avr/cpu.c
/qemu/target/avr/helper.c
/qemu/target/hexagon/cpu.c
/qemu/target/hexagon/cpu.h
/qemu/target/hppa/cpu.c
/qemu/target/hppa/mem_helper.c
/qemu/target/i386/cpu.c
/qemu/target/i386/cpu.h
/qemu/target/i386/helper.c
/qemu/target/i386/hvf/hvf-cpu.c
/qemu/target/i386/hvf/x86_decode.c
/qemu/target/i386/kvm/hyperv-proto.h
/qemu/target/i386/kvm/kvm-cpu.c
/qemu/target/i386/machine.c
/qemu/target/i386/nvmm/nvmm-accel-ops.c
/qemu/target/i386/tcg/fpu_helper.c
/qemu/target/i386/tcg/misc_helper.c
/qemu/target/i386/tcg/system/excp_helper.c
/qemu/target/i386/tcg/system/misc_helper.c
/qemu/target/i386/tcg/system/svm_helper.c
/qemu/target/i386/tcg/tcg-cpu.c
/qemu/target/i386/whpx/whpx-accel-ops.c
/qemu/target/i386/whpx/whpx-apic.c
/qemu/target/loongarch/cpu.c
/qemu/target/loongarch/helper.h
/qemu/target/loongarch/internals.h
/qemu/target/loongarch/tcg/csr_helper.c
/qemu/target/loongarch/tcg/insn_trans/trans_privileged.c.inc
/qemu/target/loongarch/tcg/tlb_helper.c
/qemu/target/m68k/cpu.c
/qemu/target/m68k/helper.c
/qemu/target/microblaze/cpu.c
/qemu/target/microblaze/cpu.h
/qemu/target/microblaze/gdbstub.c
/qemu/target/microblaze/helper.c
/qemu/target/microblaze/mmu.c
/qemu/target/microblaze/translate.c
/qemu/target/mips/cpu.c
/qemu/target/mips/internal.h
/qemu/target/mips/system/cp0.c
/qemu/target/mips/tcg/msa_helper.c
/qemu/target/mips/tcg/system/cp0_helper.c
/qemu/target/mips/tcg/system/tlb_helper.c
/qemu/target/openrisc/cpu.c
/qemu/target/openrisc/gdbstub.c
/qemu/target/openrisc/mmu.c
/qemu/target/openrisc/sys_helper.c
/qemu/target/ppc/cpu.c
/qemu/target/ppc/cpu.h
/qemu/target/ppc/cpu_init.c
/qemu/target/ppc/excp_helper.c
/qemu/target/ppc/helper.h
/qemu/target/ppc/helper_regs.c
/qemu/target/ppc/internal.h
/qemu/target/ppc/kvm.c
/qemu/target/ppc/kvm_ppc.h
/qemu/target/ppc/machine.c
/qemu/target/ppc/meson.build
/qemu/target/ppc/misc_helper.c
/qemu/target/ppc/mmu-radix64.c
/qemu/target/ppc/mmu_helper.c
/qemu/target/ppc/spr_common.h
/qemu/target/ppc/tcg-excp_helper.c
/qemu/target/ppc/translate.c
/qemu/target/riscv/cpu.c
/qemu/target/riscv/cpu.h
/qemu/target/riscv/cpu_helper.c
/qemu/target/riscv/csr.c
/qemu/target/riscv/internals.h
/qemu/target/riscv/kvm/kvm-cpu.c
/qemu/target/riscv/op_helper.c
/qemu/target/riscv/pmp.c
/qemu/target/riscv/tcg/tcg-cpu.c
/qemu/target/rx/cpu.c
/qemu/target/rx/cpu.h
/qemu/target/rx/helper.c
/qemu/target/rx/helper.h
/qemu/target/s390x/cpu-system.c
/qemu/target/s390x/cpu.c
/qemu/target/s390x/gdbstub.c
/qemu/target/s390x/interrupt.c
/qemu/target/s390x/s390x-internal.h
/qemu/target/s390x/sigp.c
/qemu/target/s390x/tcg/excp_helper.c
/qemu/target/s390x/tcg/mem_helper.c
/qemu/target/s390x/tcg/misc_helper.c
/qemu/target/sh4/cpu.c
/qemu/target/sh4/helper.c
/qemu/target/sparc/cpu.c
/qemu/target/sparc/cpu.h
/qemu/target/sparc/ldst_helper.c
/qemu/target/sparc/mmu_helper.c
/qemu/target/tricore/cpu.c
/qemu/target/tricore/cpu.h
/qemu/target/tricore/helper.c
/qemu/target/xtensa/cpu.c
/qemu/target/xtensa/cpu.h
/qemu/target/xtensa/helper.c
/qemu/target/xtensa/mmu_helper.c
/qemu/tests/docker/dockerfiles/alpine.docker
/qemu/tests/docker/dockerfiles/centos9.docker
/qemu/tests/docker/dockerfiles/debian-amd64-cross.docker
/qemu/tests/docker/dockerfiles/debian-arm64-cross.docker
/qemu/tests/docker/dockerfiles/debian-armhf-cross.docker
/qemu/tests/docker/dockerfiles/debian-i686-cross.docker
/qemu/tests/docker/dockerfiles/debian-mips64el-cross.docker
/qemu/tests/docker/dockerfiles/debian-mipsel-cross.docker
/qemu/tests/docker/dockerfiles/debian-ppc64el-cross.docker
/qemu/tests/docker/dockerfiles/debian-s390x-cross.docker
/qemu/tests/docker/dockerfiles/debian.docker
/qemu/tests/docker/dockerfiles/fedora-rust-nightly.docker
/qemu/tests/docker/dockerfiles/fedora-win64-cross.docker
/qemu/tests/docker/dockerfiles/fedora.docker
/qemu/tests/docker/dockerfiles/opensuse-leap.docker
/qemu/tests/docker/dockerfiles/ubuntu2204.docker
/qemu/tests/functional/aspeed.py
/qemu/tests/functional/meson.build
/qemu/tests/functional/qemu_test/__init__.py
/qemu/tests/functional/qemu_test/asset.py
/qemu/tests/functional/qemu_test/config.py
/qemu/tests/functional/qemu_test/linuxkernel.py
/qemu/tests/functional/qemu_test/testcase.py
/qemu/tests/functional/qemu_test/tuxruntest.py
/qemu/tests/functional/qemu_test/uncompress.py
/qemu/tests/functional/test_aarch64_aspeed.py
/qemu/tests/functional/test_aarch64_rme_sbsaref.py
/qemu/tests/functional/test_aarch64_rme_virt.py
/qemu/tests/functional/test_aarch64_tcg_plugins.py
/qemu/tests/functional/test_aarch64_virt.py
/qemu/tests/functional/test_aarch64_virt_gpu.py
/qemu/tests/functional/test_arm_aspeed_bletchley.py
/qemu/tests/functional/test_arm_aspeed_palmetto.py
/qemu/tests/functional/test_arm_aspeed_romulus.py
/qemu/tests/functional/test_arm_aspeed_witherspoon.py
/qemu/tests/functional/test_arm_sx1.py
/qemu/tests/functional/test_intel_iommu.py
/qemu/tests/functional/test_mem_addr_space.py
/qemu/tests/functional/test_mips_malta.py
/qemu/tests/functional/test_ppc64_e500.py
/qemu/tests/functional/test_ppc64_tuxrun.py
/qemu/tests/functional/test_virtio_balloon.py
/qemu/tests/lcitool/libvirt-ci
/qemu/tests/lcitool/projects/qemu.yml
/qemu/tests/lcitool/refresh
/qemu/tests/qapi-schema/doc-good.out
/qemu/tests/qapi-schema/test-qapi.py
/qemu/tests/qemu-iotests/051.pc.out
/qemu/tests/qemu-iotests/162
/qemu/tests/qemu-iotests/302
/qemu/tests/qemu-iotests/tests/qsd-migrate
/qemu/tests/qtest/m48t59-test.c
/qemu/tests/qtest/meson.build
/qemu/tests/qtest/pnv-spi-seeprom-test.c
/qemu/tests/qtest/pnv-xive2-common.h
/qemu/tests/qtest/pnv-xive2-flush-sync.c
/qemu/tests/qtest/pnv-xive2-nvpg_bar.c
/qemu/tests/qtest/pnv-xive2-test.c
/qemu/tests/qtest/rs5c372-test.c
/qemu/tests/tcg/aarch64/Makefile.target
/qemu/tests/tcg/arm/Makefile.target
/qemu/tests/tcg/i386/Makefile.target
/qemu/tests/tcg/i386/test-avx.c
/qemu/tests/tcg/i386/test-i386-adcox.c
/qemu/tests/tcg/multiarch/Makefile.target
/qemu/tests/tcg/multiarch/linux/test-vma.c
/qemu/tests/tcg/plugins/meson.build
/qemu/tests/unit/test-bdrv-drain.c
/qemu/tests/unit/test-block-iothread.c
/qemu/tests/unit/test-thread-pool.c
/qemu/tests/vm/basevm.py
/qemu/tests/vm/generated/freebsd.json
/qemu/trace/control-target.c
/qemu/trace/meson.build
/qemu/util/aio-posix.c
/qemu/util/aio-posix.h
/qemu/util/async.c
/qemu/util/cacheflush.c
/qemu/util/iov.c
/qemu/util/qemu-thread-posix.c
/qemu/util/qemu-timer.c
/qemu/util/thread-pool.c
/qemu/util/trace-events
094cd35913-Dec-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: qom: remove operations on &mut

The dubious casts of mutable references to objects are not used
anymore: the wrappers for qdev_init_clock_in and for IRQ and MMIO
initialization can be called di

rust: qom: remove operations on &mut

The dubious casts of mutable references to objects are not used
anymore: the wrappers for qdev_init_clock_in and for IRQ and MMIO
initialization can be called directly on the subclasses, without
casts, plus they take a shared reference so they can just use
"upcast()" instead of "upcast_mut()". Remove them.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

5778ce9914-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: cell: add full example of declaring a SysBusDevice

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

2d0050cb14-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: chardev: provide basic bindings to character devices

Most of the character device API is pretty simple, with "0 or -errno"
or "number of bytes or -errno" as the convention for return codes.
Ad

rust: chardev: provide basic bindings to character devices

Most of the character device API is pretty simple, with "0 or -errno"
or "number of bytes or -errno" as the convention for return codes.
Add safe wrappers for the API to the CharBackend bindgen-generated
struct.

The API is not complete, but it covers the parts that are used
by the PL011 device, plus qemu_chr_fe_write which is needed to
implement the standard library Write trait.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

2ad011d414-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: bindings: remove more unnecessary Send/Sync impls

Send and Sync are now implemented on the opaque wrappers. Remove them
from the bindings module, unless the structs are pure data containers
a

rust: bindings: remove more unnecessary Send/Sync impls

Send and Sync are now implemented on the opaque wrappers. Remove them
from the bindings module, unless the structs are pure data containers
and/or have no C functions defined on them.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

4862751014-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: chardev: wrap Chardev with Opaque<>

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

af0868cb14-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: memory: wrap MemoryRegion with Opaque<>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

f4751c7a14-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: sysbus: wrap SysBusDevice with Opaque<>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

09fda8f525-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: hpet: do not access fields of SysBusDevice

Fields of SysBusDevice must only be accessed with the BQL taken. Add
a wrapper that verifies that.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.co

rust: hpet: do not access fields of SysBusDevice

Fields of SysBusDevice must only be accessed with the BQL taken. Add
a wrapper that verifies that.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

fc22d65014-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: qdev: wrap Clock and DeviceState with Opaque<>

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

7fb4a99d14-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: qom: wrap Object with Opaque<>

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

9c9a6a8814-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: irq: wrap IRQState with Opaque<>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

a32b239614-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: timer: wrap QEMUTimer with Opaque<> and express pinning requirements

Timers must be pinned in memory, because modify() stores a pointer to them
in the TimerList. To express this requirement,

rust: timer: wrap QEMUTimer with Opaque<> and express pinning requirements

Timers must be pinned in memory, because modify() stores a pointer to them
in the TimerList. To express this requirement, change init_full() to take
a pinned reference. Because the only way to obtain a Timer is through
Timer::new(), which is unsafe, modify() can assume that the timer it got
was later initialized; and because the initialization takes a Pin<&mut
Timer> modify() can assume that the timer is pinned. In the future the
pinning requirement will be expressed through the pin_init crate instead.

Note that Timer is a bit different from other users of Opaque, in that
it is created in Rust code rather than C code. This is why it has to
use the unsafe constructors provided by Opaque; and in fact Timer::new()
is also unsafe, because it leaves it to the caller to invoke init_full()
before modify(). Without a call to init_full(), modify() will cause a
NULL pointer dereference.

An alternative could be to combine new() + init_full() by returning a
pinned box; however, using a reference makes it easier to express
the requirement that the opaque outlives the timer.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

d7f5ae8b25-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: vmstate: add std::pin::Pin as transparent wrapper

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

f07a567414-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: qemu_api_macros: add Wrapper derive macro

Add a derive macro that makes it easy to peel off all the layers of
specialness (UnsafeCell, MaybeUninit, etc.) and just get a pointer
to the wrapped

rust: qemu_api_macros: add Wrapper derive macro

Add a derive macro that makes it easy to peel off all the layers of
specialness (UnsafeCell, MaybeUninit, etc.) and just get a pointer
to the wrapped type; and likewise add them back starting from a
*mut.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

0b9d05e314-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: cell: add wrapper for FFI types

Inspired by the same-named type in Linux. This type provides the compiler
with a correct view of what goes on with FFI types. In addition, it
separates the gl

rust: cell: add wrapper for FFI types

Inspired by the same-named type in Linux. This type provides the compiler
with a correct view of what goes on with FFI types. In addition, it
separates the glue code from the bindgen-generated code, allowing
traits such as Send, Sync or Zeroable to be specified independently
for C and Rust structs.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...


/qemu/.gitlab-ci.d/check-dco.py
/qemu/.gitlab-ci.d/check-patch.py
/qemu/MAINTAINERS
/qemu/accel/Kconfig
/qemu/chardev/char-socket.c
/qemu/contrib/vmapple/uuid.sh
/qemu/disas/riscv.c
/qemu/docs/devel/index-internals.rst
/qemu/docs/devel/rust.rst
/qemu/docs/devel/uefi-vars.rst
/qemu/docs/specs/riscv-iommu.rst
/qemu/docs/sphinx/qapidoc.py
/qemu/docs/system/arm/imx8mp-evk.rst
/qemu/docs/system/arm/virt.rst
/qemu/docs/system/arm/vmapple.rst
/qemu/docs/system/devices/nvme.rst
/qemu/docs/system/target-arm.rst
/qemu/fpu/meson.build
/qemu/fpu/softfloat-parts.c.inc
/qemu/fpu/softfloat-specialize.c.inc
/qemu/fpu/softfloat.c
/qemu/hw/Kconfig
/qemu/hw/acpi/ghes.c
/qemu/hw/arm/Kconfig
/qemu/hw/arm/boot.c
/qemu/hw/arm/fsl-imx8mp.c
/qemu/hw/arm/imx8mp-evk.c
/qemu/hw/arm/meson.build
/qemu/hw/arm/omap1.c
/qemu/hw/arm/omap_sx1.c
/qemu/hw/arm/smmuv3.c
/qemu/hw/arm/trace-events
/qemu/hw/arm/versatilepb.c
/qemu/hw/arm/virt.c
/qemu/hw/arm/xen-stubs.c
/qemu/hw/block/virtio-blk.c
/qemu/hw/char/bcm2835_aux.c
/qemu/hw/char/imx_serial.c
/qemu/hw/char/mcf_uart.c
/qemu/hw/char/pl011.c
/qemu/hw/char/sh_serial.c
/qemu/hw/char/sifive_uart.c
/qemu/hw/char/trace-events
/qemu/hw/core/loader-fit.c
/qemu/hw/core/machine-smp.c
/qemu/hw/core/machine.c
/qemu/hw/core/qdev-properties-system.c
/qemu/hw/core/sysbus-fdt.c
/qemu/hw/gpio/Kconfig
/qemu/hw/i386/pc.c
/qemu/hw/i386/pc_piix.c
/qemu/hw/i386/pc_q35.c
/qemu/hw/i386/xen/xen-hvm.c
/qemu/hw/i386/xen/xen-pvh.c
/qemu/hw/intc/Kconfig
/qemu/hw/intc/loongarch_extioi.c
/qemu/hw/intc/loongarch_extioi_common.c
/qemu/hw/intc/loongarch_ipi.c
/qemu/hw/intc/meson.build
/qemu/hw/intc/riscv_aplic.c
/qemu/hw/intc/riscv_imsic.c
/qemu/hw/loongarch/Kconfig
/qemu/hw/loongarch/virt-acpi-build.c
/qemu/hw/loongarch/virt-fdt-build.c
/qemu/hw/loongarch/virt.c
/qemu/hw/meson.build
/qemu/hw/mips/boston.c
/qemu/hw/misc/Kconfig
/qemu/hw/misc/imx8mp_analog.c
/qemu/hw/misc/imx8mp_ccm.c
/qemu/hw/misc/macio/gpio.c
/qemu/hw/misc/macio/trace-events
/qemu/hw/misc/meson.build
/qemu/hw/misc/npcm_clk.c
/qemu/hw/misc/pvpanic-mmio.c
/qemu/hw/net/fsl_etsec/etsec.c
/qemu/hw/nvme/ctrl.c
/qemu/hw/nvme/ns.c
/qemu/hw/nvme/nvme.h
/qemu/hw/nvram/eeprom_at24c.c
/qemu/hw/openrisc/boot.c
/qemu/hw/openrisc/openrisc_sim.c
/qemu/hw/openrisc/virt.c
/qemu/hw/pci-host/Kconfig
/qemu/hw/pci-host/designware.c
/qemu/hw/pci-host/fsl_imx8m_phy.c
/qemu/hw/pci-host/meson.build
/qemu/hw/ppc/e500.c
/qemu/hw/ppc/pegasos2.c
/qemu/hw/ppc/pnv.c
/qemu/hw/ppc/spapr.c
/qemu/hw/ppc/spapr_hcall.c
/qemu/hw/riscv/boot.c
/qemu/hw/riscv/meson.build
/qemu/hw/riscv/riscv-iommu-bits.h
/qemu/hw/riscv/riscv-iommu-hpm.c
/qemu/hw/riscv/riscv-iommu-hpm.h
/qemu/hw/riscv/riscv-iommu.c
/qemu/hw/riscv/riscv-iommu.h
/qemu/hw/riscv/trace-events
/qemu/hw/riscv/virt.c
/qemu/hw/rtc/goldfish_rtc.c
/qemu/hw/timer/imx_gpt.c
/qemu/hw/uefi/Kconfig
/qemu/hw/uefi/LIMITATIONS.md
/qemu/hw/uefi/hardware-info.c
/qemu/hw/uefi/meson.build
/qemu/hw/uefi/trace-events
/qemu/hw/uefi/var-service-auth.c
/qemu/hw/uefi/var-service-core.c
/qemu/hw/uefi/var-service-guid.c
/qemu/hw/uefi/var-service-json.c
/qemu/hw/uefi/var-service-pkcs7-stub.c
/qemu/hw/uefi/var-service-pkcs7.c
/qemu/hw/uefi/var-service-policy.c
/qemu/hw/uefi/var-service-siglist.c
/qemu/hw/uefi/var-service-sysbus.c
/qemu/hw/uefi/var-service-utils.c
/qemu/hw/uefi/var-service-vars.c
/qemu/hw/ufs/ufs.c
/qemu/hw/ufs/ufs.h
/qemu/hw/usb/hcd-dwc3.c
/qemu/hw/usb/hcd-xhci-pci.c
/qemu/hw/usb/hcd-xhci-pci.h
/qemu/hw/usb/hcd-xhci.c
/qemu/hw/usb/hcd-xhci.h
/qemu/hw/vmapple/Kconfig
/qemu/hw/vmapple/aes.c
/qemu/hw/vmapple/bdif.c
/qemu/hw/vmapple/cfg.c
/qemu/hw/vmapple/meson.build
/qemu/hw/vmapple/trace-events
/qemu/hw/vmapple/trace.h
/qemu/hw/vmapple/virtio-blk.c
/qemu/hw/vmapple/vmapple.c
/qemu/hw/xen/xen-hvm-common.c
/qemu/hw/xen/xen-pvh-common.c
/qemu/include/block/nvme.h
/qemu/include/block/ufs.h
/qemu/include/fpu/softfloat-helpers.h
/qemu/include/fpu/softfloat-types.h
/qemu/include/fpu/softfloat.h
/qemu/include/hw/acpi/ghes.h
/qemu/include/hw/arm/fsl-imx8mp.h
/qemu/include/hw/boards.h
/qemu/include/hw/loader-fit.h
/qemu/include/hw/loongarch/virt.h
/qemu/include/hw/misc/imx8mp_analog.h
/qemu/include/hw/misc/imx8mp_ccm.h
/qemu/include/hw/misc/pvpanic.h
/qemu/include/hw/openrisc/boot.h
/qemu/include/hw/pci-host/designware.h
/qemu/include/hw/pci-host/fsl_imx8m_phy.h
/qemu/include/hw/pci/pci_ids.h
/qemu/include/hw/qdev-properties-system.h
/qemu/include/hw/timer/imx_gpt.h
/qemu/include/hw/uefi/hardware-info.h
/qemu/include/hw/uefi/var-service-api.h
/qemu/include/hw/uefi/var-service-edk2.h
/qemu/include/hw/uefi/var-service.h
/qemu/include/hw/usb/hcd-dwc3.h
/qemu/include/hw/virtio/virtio-blk.h
/qemu/include/hw/vmapple/vmapple.h
/qemu/include/hw/xen/xen-bus.h
/qemu/include/hw/xen/xen-hvm-common.h
/qemu/include/hw/xen/xen-legacy-backend.h
/qemu/include/hw/xen/xen-pvh-common.h
/qemu/include/qemu/cutils.h
/qemu/include/standard-headers/linux/ethtool.h
/qemu/include/standard-headers/linux/fuse.h
/qemu/include/standard-headers/linux/input-event-codes.h
/qemu/include/standard-headers/linux/pci_regs.h
/qemu/include/standard-headers/linux/virtio_pci.h
/qemu/include/system/device_tree.h
/qemu/linux-headers/asm-arm64/kvm.h
/qemu/linux-headers/asm-loongarch/kvm_para.h
/qemu/linux-headers/asm-riscv/kvm.h
/qemu/linux-headers/asm-x86/kvm.h
/qemu/linux-headers/linux/iommufd.h
/qemu/linux-headers/linux/kvm.h
/qemu/linux-headers/linux/stddef.h
/qemu/linux-headers/linux/vduse.h
/qemu/meson.build
/qemu/monitor/hmp-cmds.c
/qemu/qapi/char.json
/qemu/qapi/meson.build
/qemu/qapi/qapi-schema.json
/qemu/qapi/uefi.json
/qemu/qapi/virtio.json
/qemu/qemu-options.hx
/qemu/qga/commands-posix.c
/qemu/qga/commands-win32.c
/qemu/qga/main.c
cell.rs
/qemu/scripts/checkpatch.pl
/qemu/scripts/meson-buildoptions.py
/qemu/scripts/qapi/backend.py
/qemu/scripts/qapi/main.py
/qemu/scripts/qapi/pylintrc
/qemu/scripts/qemu-binfmt-conf.sh
/qemu/system/device_tree-stub.c
/qemu/system/device_tree.c
/qemu/target/arm/hvf/hvf.c
/qemu/target/arm/internals.h
/qemu/target/arm/meson.build
/qemu/target/arm/tcg-stubs.c
/qemu/target/arm/tcg/meson.build
/qemu/target/arm/tcg/vfp_helper.c
/qemu/target/arm/vfp_fpscr.c
/qemu/target/hppa/fpu_helper.c
/qemu/target/i386/cpu.c
/qemu/target/i386/cpu.h
/qemu/target/i386/tcg/fpu_helper.c
/qemu/target/loongarch/cpu.c
/qemu/target/loongarch/cpu.h
/qemu/target/loongarch/gdbstub.c
/qemu/target/loongarch/kvm/kvm.c
/qemu/target/loongarch/loongarch-qmp-cmds.c
/qemu/target/m68k/cpu.c
/qemu/target/m68k/fpu_helper.c
/qemu/target/m68k/softfloat.c
/qemu/target/riscv/cpu-qom.h
/qemu/target/riscv/cpu.c
/qemu/target/riscv/cpu.h
/qemu/target/riscv/cpu_bits.h
/qemu/target/riscv/cpu_cfg.h
/qemu/target/riscv/cpu_helper.c
/qemu/target/riscv/csr.c
/qemu/target/riscv/debug.c
/qemu/target/riscv/helper.h
/qemu/target/riscv/insn32.decode
/qemu/target/riscv/insn_trans/trans_privileged.c.inc
/qemu/target/riscv/insn_trans/trans_rvi.c.inc
/qemu/target/riscv/insn_trans/trans_rvzce.c.inc
/qemu/target/riscv/kvm/kvm-cpu.c
/qemu/target/riscv/machine.c
/qemu/target/riscv/op_helper.c
/qemu/target/riscv/pmp.c
/qemu/target/riscv/pmu.c
/qemu/target/riscv/tcg/tcg-cpu.c
/qemu/target/riscv/translate.c
/qemu/target/riscv/vector_helper.c
/qemu/target/sh4/cpu.c
/qemu/tests/avocado/replay_kernel.py
/qemu/tests/data/acpi/riscv64/virt/RHCT
/qemu/tests/functional/meson.build
/qemu/tests/functional/replay_kernel.py
/qemu/tests/functional/test_aarch64_replay.py
/qemu/tests/functional/test_alpha_replay.py
/qemu/tests/functional/test_arm_replay.py
/qemu/tests/functional/test_arm_sx1.py
/qemu/tests/functional/test_m68k_replay.py
/qemu/tests/functional/test_microblaze_replay.py
/qemu/tests/functional/test_microblaze_s3adsp1800.py
/qemu/tests/functional/test_microblazeel_s3adsp1800.py
/qemu/tests/functional/test_or1k_replay.py
/qemu/tests/functional/test_ppc64_e500.py
/qemu/tests/functional/test_ppc64_replay.py
/qemu/tests/functional/test_ppc_replay.py
/qemu/tests/functional/test_s390x_replay.py
/qemu/tests/functional/test_sparc_replay.py
/qemu/tests/functional/test_x86_64_replay.py
/qemu/tests/functional/test_xtensa_replay.py
/qemu/tests/qapi-schema/doc-good.json
/qemu/tests/qapi-schema/doc-good.out
/qemu/tests/qtest/qom-test.c
/qemu/tests/qtest/ufs-test.c
/qemu/ui/console-vc.c
/qemu/util/hexdump.c
d556226d13-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: qom: get rid of ClassInitImpl

Complete the conversion from the ClassInitImpl trait to class_init() methods.
This will provide more freedom to split the qemu_api crate in separate parts.

Revie

rust: qom: get rid of ClassInitImpl

Complete the conversion from the ClassInitImpl trait to class_init() methods.
This will provide more freedom to split the qemu_api crate in separate parts.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

4551f34212-Feb-2025 Paolo Bonzini <pbonzini@redhat.com>

rust: qom: add ObjectImpl::CLASS_INIT

As shown in the PL011 device, the orphan rules required a manual
implementation of ClassInitImpl for anything not in the qemu_api crate;
this gets in the way of

rust: qom: add ObjectImpl::CLASS_INIT

As shown in the PL011 device, the orphan rules required a manual
implementation of ClassInitImpl for anything not in the qemu_api crate;
this gets in the way of moving system emulation-specific code (including
DeviceClass, which as a blanket ClassInitImpl<DeviceClass> implementation)
into its own crate.

Make ClassInitImpl optional, at the cost of having to specify the CLASS_INIT
member by hand in every implementation of ObjectImpl. The next commits will
get rid of it, replacing all the "impl<T> ClassInitImpl<Class> for T" blocks
with a generic class_init<T> method on Class.

Right now the definition is always the same, but do not provide a default
as that will not be true once ClassInitImpl goes away.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

123456