History log of /qemu/rust/hw/char/ (Results 76 – 100 of 105)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
8c80c47228-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: qdev: move device_class_init! body to generic function, ClassInitImpl implementation to macro

Use a trait to access the former parameters to device_class_init!.
This allows hiding the details

rust: qdev: move device_class_init! body to generic function, ClassInitImpl implementation to macro

Use a trait to access the former parameters to device_class_init!.
This allows hiding the details of the class_init implementation behind
a generic function and makes higher-level functionality available from
qemu_api.

The implementation of ClassInitImpl is then the same for all devices and
is easily macroized. Later on, we can remove the need to implement
ClassInitImpl by hand for all device types, and stop making
rust_device_class_init<>() public.

While at it, document the members of DeviceImpl.

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

show more ...

c6c4f3e028-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: qom: move ClassInitImpl to the instance side

Put all traits on the instance struct, which makes it possible to reuse
class structs if no new virtual methods or class fields are added.
This is

rust: qom: move ClassInitImpl to the instance side

Put all traits on the instance struct, which makes it possible to reuse
class structs if no new virtual methods or class fields are added.
This is almost always the case for devices (because they are leaf
classes), which is the primary use case for Rust.

This is also simpler: soon we will find the implemented methods without
macros, and this removes the need to go from the class struct to the
instance struct to find the implementation of the *Impl traits.

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

show more ...

3701fb2228-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: qom: convert type_info! macro to an associated const

type_info! is only used in the definition of ObjectImpl::TYPE_INFO, and
in fact in all of them. Pull type_info!'s definition into the Obje

rust: qom: convert type_info! macro to an associated const

type_info! is only used in the definition of ObjectImpl::TYPE_INFO, and
in fact in all of them. Pull type_info!'s definition into the ObjectImpl
trait, thus simplifying the external interface of qemu_api::definitions.

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

show more ...

93ea089628-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: qom: rename Class trait to ClassInitImpl

While at it, document it.

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

b2a4854528-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: qom: add default definitions for ObjectImpl

Remove a bunch of duplicate const definitions.

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

4ed4da1631-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: add bindings for interrupt sources

The InterruptSource bindings let us call qemu_set_irq() and sysbus_init_irq()
as safe code.

Interrupt sources, qemu_irq in C code, are pointers to IRQState

rust: add bindings for interrupt sources

The InterruptSource bindings let us call qemu_set_irq() and sysbus_init_irq()
as safe code.

Interrupt sources, qemu_irq in C code, are pointers to IRQState objects.
They are QOM link properties and can be written to outside the control
of the device (i.e. from a shared reference); therefore they must be
interior-mutable in Rust. Since thread-safety is provided by the BQL,
what we want here is the newly-introduced BqlCell. A pointer to the
contents of the BqlCell (an IRQState**, or equivalently qemu_irq*)
is then passed to the C sysbus_init_irq function.

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

show more ...

2f9eec8f06-Nov-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: build: establish a baseline of lints across all crates

Many lints that default to allow can be helpful in detecting bugs or
keeping the code style homogeneous. Add them liberally, though perh

rust: build: establish a baseline of lints across all crates

Many lints that default to allow can be helpful in detecting bugs or
keeping the code style homogeneous. Add them liberally, though perhaps
not as liberally as in hw/char/pl011/src/lib.rs. In particular, enabling
entire groups can be problematic because of bitrot when new links are
added in the future.

For Clippy, this is actually a feature that is only present in Cargo
1.74.0 but, since we are not using Cargo to *build* QEMU, only developers
will need a new-enough cargo and only to run tools such as clippy.
The requirement does not apply to distros that are building QEMU.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

7a35e2fb05-Nov-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: fix a couple style issues from clippy

These are reported as clippy::semicolon_inside_block and clippy::as_ptr_cast_mut.

clippy::semicolon_inside_block can be configured not to lint single-lin

rust: fix a couple style issues from clippy

These are reported as clippy::semicolon_inside_block and clippy::as_ptr_cast_mut.

clippy::semicolon_inside_block can be configured not to lint single-line
blocks; just go with the default.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

90868c3d06-Nov-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: cargo: store desired warning levels in workspace Cargo.toml

An extra benefit of workspaces is that they allow to place lint level
settings in a single Cargo.toml; the settings are then inherit

rust: cargo: store desired warning levels in workspace Cargo.toml

An extra benefit of workspaces is that they allow to place lint level
settings in a single Cargo.toml; the settings are then inherited by
packages in the workspace.

Correspondingly, teach rustc_args.py to get the unexpected_cfgs
configuration from the workspace Cargo.toml.

Note that it is still possible to allow or deny warnings per crate or
module, via the #![] attribute syntax. The rust/qemu-api/src/bindings.rs
file is an example.

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

show more ...

cb7ada5412-Nov-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: allow using build-root bindings.rs from cargo

Right now, using cargo with QEMU requires copying by hand the bindings.rs to the
source tree. Instead, we can use an include file to escape the c

rust: allow using build-root bindings.rs from cargo

Right now, using cargo with QEMU requires copying by hand the bindings.rs to the
source tree. Instead, we can use an include file to escape the cage of cargo's
mandated source directory structure.

By running cargo within meson's "devenv" and adding a MESON_BUILD_ROOT
environment variable, it is easy for build.rs to find the file. However, the
file must be symlinked into cargo's output directory for rust-analyzer to find
it.

Suggested-by: Junjie Mao <junjie.mao@hotmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...


/qemu/.gitlab-ci.d/buildtest.yml
/qemu/.gitlab-ci.d/check-dco.py
/qemu/.gitlab-ci.d/cirrus.yml
/qemu/.mailmap
/qemu/MAINTAINERS
/qemu/VERSION
/qemu/block/parallels.c
/qemu/block/ssh.c
/qemu/chardev/char-mux.c
/qemu/chardev/char.c
/qemu/docs/about/build-platforms.rst
/qemu/docs/devel/submitting-a-patch.rst
/qemu/docs/devel/testing/functional.rst
/qemu/docs/system/arm/aspeed.rst
/qemu/docs/system/arm/emulation.rst
/qemu/docs/system/arm/fby35.rst
/qemu/hw/9pfs/9p.c
/qemu/hw/9pfs/9p.h
/qemu/hw/acpi/aml-build.c
/qemu/hw/acpi/cpu.c
/qemu/hw/core/machine.c
/qemu/hw/core/qdev-properties-system.c
/qemu/hw/cxl/cxl-mailbox-utils.c
/qemu/hw/display/vga.c
/qemu/hw/i386/amd_iommu.c
/qemu/hw/net/vhost_net.c
/qemu/hw/net/virtio-net.c
/qemu/hw/nvme/ctrl.c
/qemu/hw/openrisc/cputimer.c
/qemu/hw/openrisc/openrisc_sim.c
/qemu/hw/pci-host/mv64361.c
/qemu/hw/ppc/pegasos2.c
/qemu/hw/ppc/pnv_core.c
/qemu/hw/ppc/pnv_nest_pervasive.c
/qemu/hw/ppc/spapr.c
/qemu/hw/ppc/spapr_cpu_core.c
/qemu/hw/scsi/megasas.c
/qemu/hw/virtio/vhost.c
/qemu/hw/virtio/virtio-balloon.c
/qemu/hw/virtio/virtio.c
/qemu/include/hw/core/cpu.h
/qemu/include/hw/pci/pci.h
/qemu/include/hw/virtio/virtio.h
/qemu/include/net/checksum.h
/qemu/meson.build
/qemu/migration/fd.c
/qemu/migration/migration.h
/qemu/migration/savevm.c
/qemu/net/checksum.c
/qemu/python/scripts/mkvenv.py
/qemu/python/setup.cfg
/qemu/qapi/qdev.json
/qemu/qapi/qom.json
/qemu/rust/qemu-api/.gitignore
/qemu/rust/qemu-api/README.md
/qemu/rust/qemu-api/build.rs
/qemu/rust/qemu-api/meson.build
/qemu/rust/qemu-api/src/bindings.rs
/qemu/rust/qemu-api/src/lib.rs
/qemu/system/qdev-monitor.c
/qemu/system/vl.c
/qemu/target/arm/tcg/cpu32.c
/qemu/target/i386/hvf/x86_mmu.c
/qemu/target/ppc/cpu.h
/qemu/target/ppc/excp_helper.c
/qemu/target/riscv/cpu_helper.c
/qemu/tests/avocado/hotplug_blk.py
/qemu/tests/data/acpi/x86/pc/DSDT
/qemu/tests/data/acpi/x86/pc/DSDT.acpierst
/qemu/tests/data/acpi/x86/pc/DSDT.acpihmat
/qemu/tests/data/acpi/x86/pc/DSDT.bridge
/qemu/tests/data/acpi/x86/pc/DSDT.cphp
/qemu/tests/data/acpi/x86/pc/DSDT.dimmpxm
/qemu/tests/data/acpi/x86/pc/DSDT.hpbridge
/qemu/tests/data/acpi/x86/pc/DSDT.hpbrroot
/qemu/tests/data/acpi/x86/pc/DSDT.ipmikcs
/qemu/tests/data/acpi/x86/pc/DSDT.memhp
/qemu/tests/data/acpi/x86/pc/DSDT.nohpet
/qemu/tests/data/acpi/x86/pc/DSDT.numamem
/qemu/tests/data/acpi/x86/pc/DSDT.roothp
/qemu/tests/data/acpi/x86/q35/APIC.acpihmat-generic-x
/qemu/tests/data/acpi/x86/q35/CEDT.acpihmat-generic-x
/qemu/tests/data/acpi/x86/q35/DSDT
/qemu/tests/data/acpi/x86/q35/DSDT.acpierst
/qemu/tests/data/acpi/x86/q35/DSDT.acpihmat
/qemu/tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x
/qemu/tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator
/qemu/tests/data/acpi/x86/q35/DSDT.applesmc
/qemu/tests/data/acpi/x86/q35/DSDT.bridge
/qemu/tests/data/acpi/x86/q35/DSDT.core-count
/qemu/tests/data/acpi/x86/q35/DSDT.core-count2
/qemu/tests/data/acpi/x86/q35/DSDT.cphp
/qemu/tests/data/acpi/x86/q35/DSDT.cxl
/qemu/tests/data/acpi/x86/q35/DSDT.dimmpxm
/qemu/tests/data/acpi/x86/q35/DSDT.ipmibt
/qemu/tests/data/acpi/x86/q35/DSDT.ipmismbus
/qemu/tests/data/acpi/x86/q35/DSDT.ivrs
/qemu/tests/data/acpi/x86/q35/DSDT.memhp
/qemu/tests/data/acpi/x86/q35/DSDT.mmio64
/qemu/tests/data/acpi/x86/q35/DSDT.multi-bridge
/qemu/tests/data/acpi/x86/q35/DSDT.noacpihp
/qemu/tests/data/acpi/x86/q35/DSDT.nohpet
/qemu/tests/data/acpi/x86/q35/DSDT.numamem
/qemu/tests/data/acpi/x86/q35/DSDT.pvpanic-isa
/qemu/tests/data/acpi/x86/q35/DSDT.thread-count
/qemu/tests/data/acpi/x86/q35/DSDT.thread-count2
/qemu/tests/data/acpi/x86/q35/DSDT.tis.tpm12
/qemu/tests/data/acpi/x86/q35/DSDT.tis.tpm2
/qemu/tests/data/acpi/x86/q35/DSDT.type4-count
/qemu/tests/data/acpi/x86/q35/DSDT.viot
/qemu/tests/data/acpi/x86/q35/DSDT.xapic
/qemu/tests/data/acpi/x86/q35/HMAT.acpihmat-generic-x
/qemu/tests/data/acpi/x86/q35/SRAT.acpihmat-generic-x
/qemu/tests/functional/meson.build
/qemu/tests/functional/test_aarch64_aspeed.py
/qemu/tests/functional/test_acpi_bits.py
/qemu/tests/functional/test_arm_aspeed.py
/qemu/tests/functional/test_arm_sx1.py
/qemu/tests/functional/test_loongarch64_virt.py
/qemu/tests/functional/test_sh4_tuxrun.py
/qemu/tests/functional/test_virtio_version.py
/qemu/tests/qemu-iotests/iotests.py
/qemu/tests/qemu-iotests/pylintrc
/qemu/tests/qtest/bios-tables-test.c
/qemu/tests/qtest/libqos/virtio-9p-client.c
/qemu/tests/qtest/meson.build
/qemu/tests/qtest/virtio-9p-test.c
/qemu/tests/qtest/virtio-balloon-test.c
/qemu/ui/cocoa.m
f7ceab1e21-Nov-2024 Junjie Mao <junjie.mao@hotmail.com>

rust/pl011: Fix range checks for device ID accesses

The peripheral and PrimeCell identification registers of pl011 are located at
offset 0xFE0 - 0xFFC. To check if a read falls to such registers, th

rust/pl011: Fix range checks for device ID accesses

The peripheral and PrimeCell identification registers of pl011 are located at
offset 0xFE0 - 0xFFC. To check if a read falls to such registers, the C
implementation checks if the offset-shifted-by-2 (not the offset itself) is in
the range 0x3F8 - 0x3FF.

Use the same check in the Rust implementation.

This fixes the timeout of the following avocado tests:

* tests/avocado/boot_linux_console.py:BootLinuxConsole.test_arm_virt
* tests/avocado/replay_kernel.py:ReplayKernelNormal.test_arm_virt
* tests/avocado/replay_kernel.py:ReplayKernelNormal.test_arm_vexpressa9

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Junjie Mao <junjie.mao@hotmail.com>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <SY0P300MB102644C4AC34A3AAD75DC4D5955C2@SY0P300MB1026.AUSP300.PROD.OUTLOOK.COM>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20241121165806.476008-39-alex.bennee@linaro.org>

show more ...


/qemu/.gitlab-ci.d/cirrus/freebsd-14.vars
/qemu/.gitlab-ci.d/crossbuild-template.yml
/qemu/MAINTAINERS
/qemu/Makefile
/qemu/VERSION
/qemu/accel/tcg/user-exec.c
/qemu/bsd-user/main.c
/qemu/bsd-user/x86_64/target_arch_thread.h
/qemu/configs/devices/microblaze-softmmu/default.mak
/qemu/configs/devices/microblazeel-softmmu/default.mak
/qemu/configure
/qemu/contrib/plugins/cflow.c
/qemu/contrib/plugins/meson.build
/qemu/cpu-common.c
/qemu/crypto/hash-gcrypt.c
/qemu/crypto/hash-nettle.c
/qemu/crypto/hash.c
/qemu/crypto/hmac-gcrypt.c
/qemu/crypto/hmac-nettle.c
/qemu/crypto/pbkdf-gcrypt.c
/qemu/crypto/pbkdf-nettle.c
/qemu/crypto/secret_common.c
/qemu/crypto/tlscredsanon.c
/qemu/crypto/tlscredspsk.c
/qemu/crypto/tlscredsx509.c
/qemu/docs/about/build-platforms.rst
/qemu/docs/about/deprecated.rst
/qemu/docs/about/removed-features.rst
/qemu/docs/devel/testing/functional.rst
/qemu/docs/interop/vhost-user.rst
/qemu/docs/system/arm/aspeed.rst
/qemu/docs/system/arm/emulation.rst
/qemu/docs/system/bootindex.rst
/qemu/docs/system/ppc/pseries.rst
/qemu/docs/system/s390x/bootdevices.rst
/qemu/fpu/softfloat-specialize.c.inc
/qemu/hw/9pfs/9p.c
/qemu/hw/acpi/aml-build.c
/qemu/hw/acpi/cpu.c
/qemu/hw/acpi/generic_event_device.c
/qemu/hw/acpi/meson.build
/qemu/hw/acpi/pci.c
/qemu/hw/arm/Kconfig
/qemu/hw/arm/aspeed.c
/qemu/hw/arm/aspeed_ast27x0.c
/qemu/hw/arm/virt-acpi-build.c
/qemu/hw/audio/hda-codec.c
/qemu/hw/block/pflash_cfi01.c
/qemu/hw/block/vhost-user-blk.c
/qemu/hw/char/sifive_uart.c
/qemu/hw/core/eif.c
/qemu/hw/core/machine-smp.c
/qemu/hw/core/machine.c
/qemu/hw/core/qdev-properties-system.c
/qemu/hw/cxl/cxl-mailbox-utils.c
/qemu/hw/display/virtio-gpu-virgl.c
/qemu/hw/display/virtio-gpu.c
/qemu/hw/gpio/mpc8xxx.c
/qemu/hw/i2c/mpc_i2c.c
/qemu/hw/i2c/smbus_eeprom.c
/qemu/hw/i2c/trace-events
/qemu/hw/i386/acpi-build.c
/qemu/hw/i386/amd_iommu.c
/qemu/hw/i386/amd_iommu.h
/qemu/hw/i386/intel_iommu.c
/qemu/hw/i386/intel_iommu_internal.h
/qemu/hw/i386/pc.c
/qemu/hw/i386/x86-common.c
/qemu/hw/intc/loongarch_extioi.c
/qemu/hw/intc/openpic.c
/qemu/hw/intc/pnv_xive2.c
/qemu/hw/intc/spapr_xive_kvm.c
/qemu/hw/intc/xics.c
/qemu/hw/intc/xive.c
/qemu/hw/intc/xive2.c
/qemu/hw/m68k/next-kbd.c
/qemu/hw/mem/cxl_type3.c
/qemu/hw/microblaze/petalogix_ml605_mmu.c
/qemu/hw/microblaze/petalogix_s3adsp1800_mmu.c
/qemu/hw/microblaze/xlnx-zynqmp-pmu.c
/qemu/hw/misc/nrf51_rng.c
/qemu/hw/net/fsl_etsec/etsec.c
/qemu/hw/net/fsl_etsec/miim.c
/qemu/hw/net/npcm_gmac.c
/qemu/hw/net/rocker/rocker_of_dpa.c
/qemu/hw/net/trace-events
/qemu/hw/net/virtio-net.c
/qemu/hw/nvme/ctrl.c
/qemu/hw/nvme/dif.c
/qemu/hw/nvme/ns.c
/qemu/hw/nvme/nvme.h
/qemu/hw/nvme/trace-events
/qemu/hw/pci-bridge/cxl_downstream.c
/qemu/hw/pci-bridge/cxl_root_port.c
/qemu/hw/pci-bridge/cxl_upstream.c
/qemu/hw/pci-bridge/pci_expander_bridge.c
/qemu/hw/pci-host/gpex-acpi.c
/qemu/hw/pci-host/ppce500.c
/qemu/hw/pci/pci.c
/qemu/hw/pci/pci_bridge.c
/qemu/hw/pci/pcie.c
/qemu/hw/ppc/e500.c
/qemu/hw/ppc/e500.h
/qemu/hw/ppc/mpc8544_guts.c
/qemu/hw/ppc/pnv.c
/qemu/hw/ppc/pnv_adu.c
/qemu/hw/ppc/pnv_lpc.c
/qemu/hw/ppc/ppc.c
/qemu/hw/ppc/ppc440_bamboo.c
/qemu/hw/ppc/ppc_booke.c
/qemu/hw/ppc/ppce500_spin.c
/qemu/hw/ppc/sam460ex.c
/qemu/hw/ppc/spapr.c
/qemu/hw/ppc/spapr_cpu_core.c
/qemu/hw/ppc/spapr_nested.c
/qemu/hw/ppc/spapr_pci.c
/qemu/hw/ppc/virtex_ml507.c
/qemu/hw/riscv/riscv-iommu.c
/qemu/hw/rtc/ds1338.c
/qemu/hw/rtc/trace-events
/qemu/hw/s390x/ccw-device.c
/qemu/hw/s390x/ccw-device.h
/qemu/hw/s390x/ipl.c
/qemu/hw/s390x/virtio-ccw-blk.c
/qemu/hw/s390x/virtio-ccw-net.c
/qemu/hw/scsi/scsi-disk.c
/qemu/hw/sd/aspeed_sdhci.c
/qemu/hw/sd/sd.c
/qemu/hw/sd/sdhci.c
/qemu/hw/sensor/tmp105.c
/qemu/hw/sensor/trace-events
/qemu/hw/sensor/trace.h
/qemu/hw/ssi/pnv_spi.c
/qemu/hw/timer/aspeed_timer.c
/qemu/hw/timer/exynos4210_mct.c
/qemu/hw/timer/imx_gpt.c
/qemu/hw/timer/trace-events
/qemu/hw/usb/dev-hub.c
/qemu/hw/usb/hcd-ehci-sysbus.c
/qemu/hw/vfio/ccw.c
/qemu/hw/vfio/container-base.c
/qemu/hw/vfio/igd.c
/qemu/hw/vfio/migration.c
/qemu/hw/vfio/trace-events
/qemu/hw/virtio/vhost-user.c
/qemu/hw/virtio/virtio-pci.c
/qemu/hw/watchdog/cmsdk-apb-watchdog.c
/qemu/hw/watchdog/wdt_imx2.c
/qemu/include/block/nvme.h
/qemu/include/crypto/hash.h
/qemu/include/disas/capstone.h
/qemu/include/exec/memory.h
/qemu/include/fpu/softfloat-helpers.h
/qemu/include/fpu/softfloat-types.h
/qemu/include/hw/acpi/aml-build.h
/qemu/include/hw/acpi/pci.h
/qemu/include/hw/boards.h
/qemu/include/hw/core/cpu.h
/qemu/include/hw/cxl/cxl_device.h
/qemu/include/hw/i386/intel_iommu.h
/qemu/include/hw/i386/topology.h
/qemu/include/hw/intc/arm_gicv3_common.h
/qemu/include/hw/misc/mos6522.h
/qemu/include/hw/pci-bridge/cxl_upstream_port.h
/qemu/include/hw/pci-host/spapr.h
/qemu/include/hw/pci/pci.h
/qemu/include/hw/pci/pci_bridge.h
/qemu/include/hw/pci/pci_device.h
/qemu/include/hw/pci/pcie.h
/qemu/include/hw/ppc/ppc.h
/qemu/include/hw/ppc/spapr.h
/qemu/include/hw/ppc/spapr_cpu_core.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-core.h
/qemu/include/hw/qdev-properties-system.h
/qemu/include/hw/usb/dwc2-regs.h
/qemu/include/hw/vfio/vfio-common.h
/qemu/include/hw/virtio/vhost-user.h
/qemu/include/hw/virtio/virtio-gpu.h
/qemu/include/hw/virtio/virtio-net.h
/qemu/include/hw/virtio/virtio-pci.h
/qemu/include/net/eth.h
/qemu/include/qemu/bitmap.h
/qemu/include/qemu/bitops.h
/qemu/include/qemu/osdep.h
/qemu/include/qemu/qemu-plugin.h
/qemu/include/ui/console.h
/qemu/linux-user/aarch64/Makefile.vdso
/qemu/linux-user/aarch64/vdso-be.so
/qemu/linux-user/aarch64/vdso-le.so
/qemu/linux-user/arm/Makefile.vdso
/qemu/linux-user/arm/meson.build
/qemu/linux-user/arm/nwfpe/fpa11.c
/qemu/linux-user/arm/vdso-be32.so
/qemu/linux-user/arm/vdso-be8.so
/qemu/linux-user/arm/vdso-le.so
/qemu/linux-user/elfload.c
/qemu/linux-user/gen-vdso-elfn.c.inc
/qemu/linux-user/gen-vdso.c
/qemu/linux-user/loongarch64/Makefile.vdso
/qemu/linux-user/loongarch64/vdso.so
/qemu/linux-user/main.c
/qemu/linux-user/ppc/Makefile.vdso
/qemu/linux-user/ppc/vdso-32.so
/qemu/linux-user/ppc/vdso-64.so
/qemu/linux-user/ppc/vdso-64le.so
/qemu/linux-user/qemu.h
/qemu/linux-user/signal-common.h
/qemu/linux-user/signal.c
/qemu/linux-user/strace.c
/qemu/linux-user/syscall.c
/qemu/linux-user/syscall_defs.h
/qemu/meson.build
/qemu/meson_options.txt
/qemu/migration/migration.c
/qemu/migration/multifd.c
/qemu/migration/savevm.c
/qemu/nbd/server.c
/qemu/pc-bios/s390-ccw.img
/qemu/pc-bios/s390-ccw/main.c
/qemu/pc-bios/s390-ccw/virtio-net.c
/qemu/plugins/meson.build
/qemu/qapi/crypto.json
/qemu/qapi/machine-common.json
/qemu/qapi/qdev.json
/qemu/qapi/qom.json
/qemu/qga/commands-linux.c
/qemu/qga/commands-posix.c
/qemu/qga/commands-windows-ssh.c
/qemu/qga/vss-win32/install.cpp
/qemu/qga/vss-win32/provider.cpp
/qemu/qga/vss-win32/requester.cpp
/qemu/roms/edk2
pl011/src/device.rs
/qemu/rust/qemu-api-macros/meson.build
/qemu/scripts/checkpatch.pl
/qemu/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml
/qemu/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml
/qemu/scripts/meson-buildoptions.sh
/qemu/scripts/qemu-plugin-symbols.py
/qemu/subprojects/packagefiles/arbitrary-int-1-rs/meson.build
/qemu/subprojects/packagefiles/bilge-0.2-rs/meson.build
/qemu/subprojects/packagefiles/bilge-impl-0.2-rs/meson.build
/qemu/subprojects/packagefiles/either-1-rs/meson.build
/qemu/subprojects/packagefiles/itertools-0.11-rs/meson.build
/qemu/subprojects/packagefiles/proc-macro-error-1-rs/meson.build
/qemu/subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build
/qemu/subprojects/packagefiles/proc-macro2-1-rs/meson.build
/qemu/subprojects/packagefiles/quote-1-rs/meson.build
/qemu/subprojects/packagefiles/syn-2-rs/meson.build
/qemu/subprojects/packagefiles/unicode-ident-1-rs/meson.build
/qemu/system/dma-helpers.c
/qemu/system/qdev-monitor.c
/qemu/system/trace-events
/qemu/system/vl.c
/qemu/target/alpha/cpu.c
/qemu/target/arm/cpu-features.h
/qemu/target/arm/cpu.c
/qemu/target/arm/cpu.h
/qemu/target/arm/helper.c
/qemu/target/arm/hvf/hvf.c
/qemu/target/arm/hvf/trace.h
/qemu/target/arm/internals.h
/qemu/target/arm/ptw.c
/qemu/target/arm/tcg/cpu64.c
/qemu/target/arm/tcg/hflags.c
/qemu/target/arm/tcg/op_helper.c
/qemu/target/arm/tcg/sve_helper.c
/qemu/target/arm/tcg/translate-a64.c
/qemu/target/arm/tcg/translate.c
/qemu/target/arm/tcg/translate.h
/qemu/target/arm/tcg/vec_helper.c
/qemu/target/hppa/fpu_helper.c
/qemu/target/i386/cpu.c
/qemu/target/i386/cpu.h
/qemu/target/i386/hvf/hvf.c
/qemu/target/i386/hvf/x86_cpuid.c
/qemu/target/i386/hvf/x86_emu.c
/qemu/target/i386/hvf/x86_task.c
/qemu/target/i386/kvm/hyperv-stub.c
/qemu/target/i386/tcg/fpu_helper.c
/qemu/target/i386/tcg/seg_helper.c
/qemu/target/i386/tcg/sysemu/excp_helper.c
/qemu/target/loongarch/tcg/fpu_helper.c
/qemu/target/m68k/cpu.c
/qemu/target/m68k/fpu_helper.c
/qemu/target/m68k/helper.c
/qemu/target/microblaze/cpu.c
/qemu/target/mips/cpu-defs.c.inc
/qemu/target/mips/cpu.c
/qemu/target/mips/cpu.h
/qemu/target/mips/fpu_helper.h
/qemu/target/mips/mips-defs.h
/qemu/target/mips/msa.c
/qemu/target/mips/sysemu/machine.c
/qemu/target/mips/tcg/godson2.decode
/qemu/target/mips/tcg/loong-ext.decode
/qemu/target/mips/tcg/loong_translate.c
/qemu/target/mips/tcg/meson.build
/qemu/target/mips/tcg/micromips_translate.c.inc
/qemu/target/mips/tcg/translate.c
/qemu/target/mips/tcg/translate.h
/qemu/target/openrisc/cpu.c
/qemu/target/ppc/compat.c
/qemu/target/ppc/cpu-models.c
/qemu/target/ppc/cpu-models.h
/qemu/target/ppc/cpu.h
/qemu/target/ppc/cpu_init.c
/qemu/target/ppc/cpu_init.h
/qemu/target/ppc/excp_helper.c
/qemu/target/ppc/helper_regs.c
/qemu/target/ppc/machine.c
/qemu/target/ppc/misc_helper.c
/qemu/target/ppc/mmu-hash64.c
/qemu/target/ppc/translate.c
/qemu/target/riscv/insn_trans/trans_rvv.c.inc
/qemu/target/riscv/kvm/kvm-cpu.c
/qemu/target/riscv/vector_helper.c
/qemu/target/rx/cpu.c
/qemu/target/s390x/cpu.c
/qemu/target/s390x/tcg/fpu_helper.c
/qemu/target/s390x/tcg/vec_fpu_helper.c
/qemu/target/sparc/cpu.c
/qemu/target/sparc/fop_helper.c
/qemu/target/xtensa/cpu.c
/qemu/target/xtensa/cpu.h
/qemu/target/xtensa/fpu_helper.c
/qemu/tcg/tcg-op-gvec.c
/qemu/tests/data/acpi/disassemle-aml.sh
/qemu/tests/data/acpi/x86/pc/DSDT
/qemu/tests/data/acpi/x86/pc/DSDT.acpierst
/qemu/tests/data/acpi/x86/pc/DSDT.acpihmat
/qemu/tests/data/acpi/x86/pc/DSDT.bridge
/qemu/tests/data/acpi/x86/pc/DSDT.cphp
/qemu/tests/data/acpi/x86/pc/DSDT.dimmpxm
/qemu/tests/data/acpi/x86/pc/DSDT.hpbridge
/qemu/tests/data/acpi/x86/pc/DSDT.hpbrroot
/qemu/tests/data/acpi/x86/pc/DSDT.ipmikcs
/qemu/tests/data/acpi/x86/pc/DSDT.memhp
/qemu/tests/data/acpi/x86/pc/DSDT.nohpet
/qemu/tests/data/acpi/x86/pc/DSDT.numamem
/qemu/tests/data/acpi/x86/pc/DSDT.roothp
/qemu/tests/data/acpi/x86/q35/DSDT
/qemu/tests/data/acpi/x86/q35/DSDT.acpierst
/qemu/tests/data/acpi/x86/q35/DSDT.acpihmat
/qemu/tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator
/qemu/tests/data/acpi/x86/q35/DSDT.applesmc
/qemu/tests/data/acpi/x86/q35/DSDT.bridge
/qemu/tests/data/acpi/x86/q35/DSDT.core-count
/qemu/tests/data/acpi/x86/q35/DSDT.core-count2
/qemu/tests/data/acpi/x86/q35/DSDT.cphp
/qemu/tests/data/acpi/x86/q35/DSDT.cxl
/qemu/tests/data/acpi/x86/q35/DSDT.dimmpxm
/qemu/tests/data/acpi/x86/q35/DSDT.ipmibt
/qemu/tests/data/acpi/x86/q35/DSDT.ipmismbus
/qemu/tests/data/acpi/x86/q35/DSDT.ivrs
/qemu/tests/data/acpi/x86/q35/DSDT.memhp
/qemu/tests/data/acpi/x86/q35/DSDT.mmio64
/qemu/tests/data/acpi/x86/q35/DSDT.multi-bridge
/qemu/tests/data/acpi/x86/q35/DSDT.noacpihp
/qemu/tests/data/acpi/x86/q35/DSDT.nohpet
/qemu/tests/data/acpi/x86/q35/DSDT.numamem
/qemu/tests/data/acpi/x86/q35/DSDT.pvpanic-isa
/qemu/tests/data/acpi/x86/q35/DSDT.thread-count
/qemu/tests/data/acpi/x86/q35/DSDT.thread-count2
/qemu/tests/data/acpi/x86/q35/DSDT.tis.tpm12
/qemu/tests/data/acpi/x86/q35/DSDT.tis.tpm2
/qemu/tests/data/acpi/x86/q35/DSDT.type4-count
/qemu/tests/data/acpi/x86/q35/DSDT.viot
/qemu/tests/data/acpi/x86/q35/DSDT.xapic
/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/fedora-win64-cross.docker
/qemu/tests/docker/dockerfiles/ubuntu2204.docker
/qemu/tests/fp/fp-bench.c
/qemu/tests/fp/fp-test-log2.c
/qemu/tests/fp/fp-test.c
/qemu/tests/functional/meson.build
/qemu/tests/functional/qemu_test/cmd.py
/qemu/tests/functional/qemu_test/testcase.py
/qemu/tests/functional/qemu_test/tuxruntest.py
/qemu/tests/functional/test_aarch64_sbsaref.py
/qemu/tests/functional/test_aarch64_sbsaref_alpine.py
/qemu/tests/functional/test_aarch64_sbsaref_freebsd.py
/qemu/tests/functional/test_aarch64_tuxrun.py
/qemu/tests/functional/test_acpi_bits.py
/qemu/tests/functional/test_arm_aspeed.py
/qemu/tests/functional/test_arm_bpim2u.py
/qemu/tests/functional/test_arm_orangepi.py
/qemu/tests/functional/test_m68k_nextcube.py
/qemu/tests/functional/test_mips64el_malta.py
/qemu/tests/functional/test_ppc64_hv.py
/qemu/tests/functional/test_ppc_40p.py
/qemu/tests/functional/test_riscv64_tuxrun.py
/qemu/tests/functional/test_riscv_opensbi.py
/qemu/tests/functional/test_virtio_gpu.py
/qemu/tests/guest-debug/test_gdbstub.py
/qemu/tests/lcitool/libvirt-ci
/qemu/tests/lcitool/mappings.yml
/qemu/tests/lcitool/refresh
/qemu/tests/qtest/cmsdk-apb-watchdog-test.c
/qemu/tests/qtest/fuzz-virtio-balloon-test.c
/qemu/tests/qtest/meson.build
/qemu/tests/qtest/migration-helpers.c
/qemu/tests/qtest/migration-test.c
/qemu/tests/qtest/pnv-xive2-common.c
/qemu/tests/qtest/pnv-xive2-common.h
/qemu/tests/qtest/pnv-xive2-flush-sync.c
/qemu/tests/qtest/pnv-xive2-test.c
/qemu/tests/tcg/Makefile.target
/qemu/tests/tcg/multiarch/Makefile.target
/qemu/tests/tcg/multiarch/gdbstub/interrupt.py
/qemu/tests/tcg/multiarch/gdbstub/prot-none.py
/qemu/tests/tcg/multiarch/gdbstub/test-proc-mappings.py
/qemu/tests/tcg/multiarch/linux/linux-sigrtminmax.c
/qemu/tests/tcg/multiarch/sigreturn-sigmask.c
/qemu/tests/tcg/ppc64/Makefile.target
/qemu/tests/tcg/s390x/Makefile.target
/qemu/tests/tcg/s390x/float.h
/qemu/tests/tcg/s390x/fma.c
/qemu/tests/tcg/s390x/vfminmax.c
/qemu/tests/unit/test-crypto-hash.c
/qemu/tests/unit/test-crypto-hmac.c
/qemu/tests/unit/test-crypto-pbkdf.c
/qemu/tests/vm/generated/freebsd.json
/qemu/trace-events
/qemu/trace/control-target.c
/qemu/trace/control.c
/qemu/ui/input-legacy.c
ce4a144c25-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: do not use --generate-cstr

--generate-cstr is a good idea and generally the right thing to do,
but it is not available in Debian 12 and Ubuntu 22.04. Work around
the absence.

Signed-off-by:

rust: do not use --generate-cstr

--generate-cstr is a good idea and generally the right thing to do,
but it is not available in Debian 12 and Ubuntu 22.04. Work around
the absence.

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

show more ...

f351840024-Oct-2024 Junjie Mao <junjie.mao@hotmail.com>

rust: introduce alternative implementation of offset_of!

offset_of! was stabilized in Rust 1.77.0. Use an alternative implemenation
that was found on the Rust forums, and whose author agreed to lic

rust: introduce alternative implementation of offset_of!

offset_of! was stabilized in Rust 1.77.0. Use an alternative implemenation
that was found on the Rust forums, and whose author agreed to license as
MIT for use in QEMU.

The alternative allows only one level of field access, but apart
from this can be used just by replacing core::mem::offset_of! with
qemu_api::offset_of!.

The actual implementation of offset_of! is done in a declarative macro,
but for simplicity and to avoid introducing an extra level of indentation,
the trigger is a procedural macro #[derive(offsets)].

The procedural macro is perhaps a bit overengineered, but it helps
introducing some idioms that will be useful in the future as well.

Signed-off-by: Junjie Mao <junjie.mao@hotmail.com>
Co-developed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

39c8faef24-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: create a cargo workspace

Workspaces allows tracking dependencies for multiple crates at once,
by having a single Cargo.lock file at the top of the rust/ tree.
Because QEMU's Cargo.lock files h

rust: create a cargo workspace

Workspaces allows tracking dependencies for multiple crates at once,
by having a single Cargo.lock file at the top of the rust/ tree.
Because QEMU's Cargo.lock files have to be synchronized with the versions
of crates in subprojects/, using a workspace avoids the need to copy
over the Cargo.lock file when adding a new device (and thus a new crate)
under rust/hw/.

In addition, workspaces let cargo download and build dependencies just
once. While right now we have one leaf crate (hw/char/pl011), this
will not be the case once more devices are added.

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

show more ...

907d2bbb21-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: synchronize dependencies between subprojects and Cargo.lock

The next commit will introduce a new build.rs dependency for rust/qemu-api,
version_check. Before adding it, ensure that all depend

rust: synchronize dependencies between subprojects and Cargo.lock

The next commit will introduce a new build.rs dependency for rust/qemu-api,
version_check. Before adding it, ensure that all dependencies are
synchronized between the Meson- and cargo-based build systems.

Note that it's not clear whether in the long term we'll use Cargo for
anything; it seems that the three main uses (clippy, rustfmt, rustdoc)
can all be invoked manually---either via glue code in QEMU, or by
extending Meson to gain the relevant functionality. However, for
the time being we're stuck with Cargo so it should at least look at
the same code as the rest of the build system.

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

show more ...

718e255f25-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: introduce a c_str macro

This allows CStr constants to be defined easily on Rust 1.63.0, while
checking that there are no embedded NULs. c"" literals were only
stabilized in Rust 1.77.0.

Revi

rust: introduce a c_str macro

This allows CStr constants to be defined easily on Rust 1.63.0, while
checking that there are no embedded NULs. c"" literals were only
stabilized in Rust 1.77.0.

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

show more ...

9f7d452024-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: use std::os::raw instead of core::ffi

core::ffi::c_* types were introduced in Rust 1.64.0. Use the older types
in std::os::raw, which are now aliases of the types in core::ffi. There is
no n

rust: use std::os::raw instead of core::ffi

core::ffi::c_* types were introduced in Rust 1.64.0. Use the older types
in std::os::raw, which are now aliases of the types in core::ffi. There is
no need to compile QEMU as no_std, so this is acceptable as long as we support
a version of Debian with Rust 1.63.0.

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

show more ...

230b710b24-Oct-2024 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

rust/pl011: Use correct masks for IBRD and FBRD

Port fix from commit cd247eae16ab1b9ce97fd34c000c1b883feeda45
"hw/char/pl011: Use correct masks for IBRD and FBRD"

Related issue: <https://gitlab.com

rust/pl011: Use correct masks for IBRD and FBRD

Port fix from commit cd247eae16ab1b9ce97fd34c000c1b883feeda45
"hw/char/pl011: Use correct masks for IBRD and FBRD"

Related issue: <https://gitlab.com/qemu-project/qemu/-/issues/2610>

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: https://lore.kernel.org/r/20241024-rust-round-2-v1-9-051e7a25b978@linaro.org

show more ...

d38723f524-Oct-2024 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

rust/pl011: remove commented out C code

This code juxtaposed what should be happening according to the C device
model but is not needed now that this has been reviewed (I hope) and its
validity chec

rust/pl011: remove commented out C code

This code juxtaposed what should be happening according to the C device
model but is not needed now that this has been reviewed (I hope) and its
validity checked against what the C device does (I hope, again).

No functional change.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: https://lore.kernel.org/r/20241024-rust-round-2-v1-8-051e7a25b978@linaro.org

show more ...

2e06e72d24-Oct-2024 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

rust/pl011: add TYPE_PL011_LUMINARY device

Add a device specialization for the Luminary UART device.

This commit adds a DeviceId enum that utilizes the Index trait to return
different bytes dependi

rust/pl011: add TYPE_PL011_LUMINARY device

Add a device specialization for the Luminary UART device.

This commit adds a DeviceId enum that utilizes the Index trait to return
different bytes depending on what device id the UART has (Arm -default-
or Luminary)

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Tested-by: Zhao Liu <zhao1.liu@intel.com>
Link: https://lore.kernel.org/r/20241024-rust-round-2-v1-6-051e7a25b978@linaro.org

show more ...

2e57bb6b24-Oct-2024 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

rust/pl011: move CLK_NAME static to function scope

We do not need to have CLK_NAME public nor a static. No functional change.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Sig

rust/pl011: move CLK_NAME static to function scope

We do not need to have CLK_NAME public nor a static. No functional change.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: https://lore.kernel.org/r/20241024-rust-round-2-v1-5-051e7a25b978@linaro.org

show more ...

9324331924-Oct-2024 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

rust/pl011: add support for migration

Declare the vmstate description of the PL011 device.

Based on a patch by Manos Pitsidianakis
(https://lore.kernel.org/qemu-devel/20241024-rust-round-2-v1-4-051

rust/pl011: add support for migration

Declare the vmstate description of the PL011 device.

Based on a patch by Manos Pitsidianakis
(https://lore.kernel.org/qemu-devel/20241024-rust-round-2-v1-4-051e7a25b978@linaro.org/).

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: https://lore.kernel.org/r/20241024-rust-round-2-v1-4-051e7a25b978@linaro.org

show more ...

113c668825-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust/pl011: fix default value for migrate-clock

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

f60f367015-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: do not use TYPE_CHARDEV unnecessarily

In the invocation of qdev_prop_set_chr(), "chardev" is the name of a
property rather than a type and has to match the name of the property
in device_class

rust: do not use TYPE_CHARDEV unnecessarily

In the invocation of qdev_prop_set_chr(), "chardev" is the name of a
property rather than a type and has to match the name of the property
in device_class.rs. Do not use TYPE_CHARDEV here, just like in the C
version of pl011_create.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

6e50bde118-Oct-2024 Paolo Bonzini <pbonzini@redhat.com>

rust: provide safe wrapper for MaybeUninit::zeroed()

MaybeUninit::zeroed() is handy, but it introduces unsafe (and has a
pretty heavy syntax in general). Introduce a trait that provides the
same fu

rust: provide safe wrapper for MaybeUninit::zeroed()

MaybeUninit::zeroed() is handy, but it introduces unsafe (and has a
pretty heavy syntax in general). Introduce a trait that provides the
same functionality while staying within safe Rust.

In addition, MaybeUninit::zeroed() is not available as a "const"
function until Rust 1.75.0, so this also prepares for having handwritten
implementations of the trait until we can assume that version.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...

12345