aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/lockdown.yml34
-rw-r--r--.github/workflows/lockdown.yml30
-rw-r--r--.gitlab-ci.d/buildtest-template.yml2
-rw-r--r--.gitlab-ci.d/buildtest.yml84
-rw-r--r--.gitlab-ci.d/cirrus.yml46
-rw-r--r--.gitlab-ci.d/cirrus/build.yml1
-rw-r--r--.gitlab-ci.d/cirrus/freebsd-12.vars11
-rw-r--r--.gitlab-ci.d/cirrus/freebsd-13.vars11
-rw-r--r--.gitlab-ci.d/cirrus/kvm-build.yml31
-rw-r--r--.gitlab-ci.d/cirrus/macos-11.vars11
-rw-r--r--.gitlab-ci.d/container-cross.yml3
-rw-r--r--.gitlab-ci.d/containers.yml5
-rw-r--r--.gitlab-ci.d/crossbuilds.yml19
-rw-r--r--.gitlab-ci.d/custom-runners.yml239
-rw-r--r--.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml28
-rw-r--r--.gitlab-ci.d/custom-runners/ubuntu-18.04-s390x.yml118
-rw-r--r--.gitlab-ci.d/custom-runners/ubuntu-20.04-aarch64.yml118
-rw-r--r--.gitlab-ci.d/edk2.yml6
-rw-r--r--.gitlab-ci.d/edk2/Dockerfile2
-rw-r--r--.gitlab-ci.d/qemu-project.yml1
-rw-r--r--.gitlab-ci.d/static_checks.yml4
-rw-r--r--.gitlab-ci.d/windows.yml98
-rw-r--r--.gitmodules3
-rw-r--r--.mailmap6
-rw-r--r--.travis.yml23
-rw-r--r--Kconfig.host4
-rw-r--r--MAINTAINERS363
-rw-r--r--Makefile29
-rw-r--r--README.rst14
-rw-r--r--VERSION2
-rw-r--r--accel/hvf/hvf-accel-ops.c10
-rw-r--r--accel/kvm/kvm-all.c43
-rw-r--r--accel/kvm/meson.build1
-rw-r--r--accel/stubs/kvm-stub.c5
-rw-r--r--accel/tcg/atomic_common.c.inc43
-rw-r--r--accel/tcg/atomic_template.h73
-rw-r--r--accel/tcg/cpu-exec.c105
-rw-r--r--accel/tcg/cputlb.c488
-rw-r--r--accel/tcg/hmp.c22
-rw-r--r--accel/tcg/ldst_common.c.inc307
-rw-r--r--accel/tcg/meson.build2
-rw-r--r--accel/tcg/plugin-gen.c165
-rw-r--r--accel/tcg/tcg-accel-ops-mttcg.c26
-rw-r--r--accel/tcg/tcg-accel-ops-rr.c10
-rw-r--r--accel/tcg/translate-all.c88
-rw-r--r--accel/tcg/translator.c2
-rw-r--r--accel/tcg/user-exec.c1225
-rw-r--r--audio/audio.c1
-rw-r--r--audio/audio_int.h7
-rw-r--r--audio/audio_template.h2
-rw-r--r--audio/dbusaudio.c654
-rw-r--r--audio/dsoundaudio.c7
-rw-r--r--audio/jackaudio.c4
-rw-r--r--audio/meson.build29
-rw-r--r--audio/trace-events5
-rw-r--r--backends/dbus-vmstate1.xml52
-rw-r--r--backends/hostmem-epc.c82
-rw-r--r--backends/meson.build1
-rw-r--r--block.c333
-rw-r--r--block/aio_task.c2
-rw-r--r--block/backup.c7
-rw-r--r--block/blkdebug.c12
-rw-r--r--block/blklogwrites.c16
-rw-r--r--block/blkreplay.c8
-rw-r--r--block/blkverify.c8
-rw-r--r--block/block-backend.c252
-rw-r--r--block/bochs.c4
-rw-r--r--block/cloop.c4
-rw-r--r--block/commit.c3
-rw-r--r--block/copy-before-write.c15
-rw-r--r--block/copy-on-read.c19
-rw-r--r--block/coroutines.h33
-rw-r--r--block/crypto.c8
-rw-r--r--block/curl.c14
-rw-r--r--block/dmg.c4
-rw-r--r--block/export/fuse.c8
-rw-r--r--block/file-posix.c112
-rw-r--r--block/file-win32.c8
-rw-r--r--block/filter-compress.c15
-rw-r--r--block/gluster.c13
-rw-r--r--block/io.c45
-rw-r--r--block/io_uring.c19
-rw-r--r--block/iscsi.c62
-rw-r--r--block/linux-aio.c54
-rw-r--r--block/meson.build2
-rw-r--r--block/mirror.c86
-rw-r--r--block/monitor/block-hmp-cmds.c2
-rw-r--r--block/nbd.c460
-rw-r--r--block/nfs.c18
-rw-r--r--block/null.c18
-rw-r--r--block/nvme.c126
-rw-r--r--block/preallocate.c14
-rw-r--r--block/qcow.c16
-rw-r--r--block/qcow2-cluster.c15
-rw-r--r--block/qcow2.c70
-rw-r--r--block/qed.c9
-rw-r--r--block/quorum.c11
-rw-r--r--block/raw-format.c36
-rw-r--r--block/rbd.c132
-rw-r--r--block/replication.c4
-rw-r--r--block/ssh.c4
-rw-r--r--block/stream.c31
-rw-r--r--block/throttle.c18
-rw-r--r--block/trace-events16
-rw-r--r--block/vdi.c8
-rw-r--r--block/vmdk.c38
-rw-r--r--block/vpc.c11
-rw-r--r--block/vvfat.c61
-rw-r--r--block/win32-aio.c4
-rw-r--r--blockdev.c44
-rw-r--r--blockjob.c36
-rw-r--r--bsd-user/arm/signal.c196
-rw-r--r--bsd-user/arm/target_arch.h28
-rw-r--r--bsd-user/arm/target_arch_cpu.c39
-rw-r--r--bsd-user/arm/target_arch_cpu.h211
-rw-r--r--bsd-user/arm/target_arch_elf.h128
-rw-r--r--bsd-user/arm/target_arch_reg.h60
-rw-r--r--bsd-user/arm/target_arch_signal.h88
-rw-r--r--bsd-user/arm/target_arch_sigtramp.h49
-rw-r--r--bsd-user/arm/target_arch_sysarch.h6
-rw-r--r--bsd-user/arm/target_arch_thread.h82
-rw-r--r--bsd-user/arm/target_arch_vmparam.h48
-rw-r--r--bsd-user/arm/target_syscall.h27
-rw-r--r--bsd-user/errno_defs.h17
-rw-r--r--bsd-user/freebsd/meson.build3
-rw-r--r--bsd-user/freebsd/os-sys.c27
-rw-r--r--bsd-user/freebsd/strace.list11
-rw-r--r--bsd-user/freebsd/target_os_elf.h12
-rw-r--r--bsd-user/freebsd/target_os_ucontext.h44
-rw-r--r--bsd-user/freebsd/target_os_user.h100
-rw-r--r--bsd-user/i386/signal.c55
-rw-r--r--bsd-user/i386/target_arch_cpu.h2
-rw-r--r--bsd-user/i386/target_arch_signal.h95
-rw-r--r--bsd-user/include/special-errno.h24
-rw-r--r--bsd-user/main.c10
-rw-r--r--bsd-user/meson.build13
-rw-r--r--bsd-user/mips/target_arch_sysarch.h69
-rw-r--r--bsd-user/mips/target_syscall.h52
-rw-r--r--bsd-user/mips64/target_arch_sysarch.h69
-rw-r--r--bsd-user/mips64/target_syscall.h53
-rw-r--r--bsd-user/mmap.c144
-rw-r--r--bsd-user/qemu.h25
-rw-r--r--bsd-user/signal.c32
-rw-r--r--bsd-user/syscall.c60
-rw-r--r--bsd-user/x86_64/signal.c55
-rw-r--r--bsd-user/x86_64/target_arch_cpu.h2
-rw-r--r--bsd-user/x86_64/target_arch_signal.h103
-rw-r--r--chardev/char-mux.c3
-rw-r--r--chardev/char-socket.c89
-rw-r--r--chardev/meson.build2
-rw-r--r--chardev/wctablet.c1
-rw-r--r--common-user/host/aarch64/safe-syscall.inc.S88
-rw-r--r--common-user/host/arm/safe-syscall.inc.S108
-rw-r--r--common-user/host/i386/safe-syscall.inc.S127
-rw-r--r--common-user/host/loongarch64/safe-syscall.inc.S90
-rw-r--r--common-user/host/mips/safe-syscall.inc.S149
-rw-r--r--common-user/host/ppc64/safe-syscall.inc.S94
-rw-r--r--common-user/host/riscv/safe-syscall.inc.S79
-rw-r--r--common-user/host/s390x/safe-syscall.inc.S98
-rw-r--r--common-user/host/sparc64/safe-syscall.inc.S89
-rw-r--r--common-user/host/x86_64/safe-syscall.inc.S (renamed from linux-user/host/x86_64/safe-syscall.inc.S)43
-rw-r--r--common-user/meson.build6
-rw-r--r--common-user/safe-syscall-error.c25
-rw-r--r--common-user/safe-syscall.S (renamed from linux-user/safe-syscall.S)5
-rw-r--r--configs/devices/i386-softmmu/default.mak1
-rw-r--r--configs/devices/mips-softmmu/common.mak2
-rw-r--r--configs/targets/aarch64-linux-user.mak2
-rw-r--r--configs/targets/aarch64-softmmu.mak2
-rw-r--r--configs/targets/aarch64_be-linux-user.mak2
-rw-r--r--configs/targets/arm-bsd-user.mak2
-rw-r--r--configs/targets/arm-linux-user.mak2
-rw-r--r--configs/targets/arm-softmmu.mak2
-rw-r--r--configs/targets/armeb-linux-user.mak2
-rw-r--r--configs/targets/i386-softmmu.mak1
-rw-r--r--configs/targets/x86_64-softmmu.mak1
-rwxr-xr-xconfigure1913
-rw-r--r--contrib/elf2dmp/meson.build2
-rw-r--r--contrib/ivshmem-client/meson.build2
-rw-r--r--contrib/ivshmem-server/meson.build2
-rw-r--r--contrib/plugins/cache.c318
-rw-r--r--contrib/rdmacm-mux/meson.build2
-rw-r--r--cpu.c36
-rw-r--r--disas/nios2.c73
-rw-r--r--disas/riscv.c162
-rw-r--r--docs/COLO-FT.txt106
-rw-r--r--docs/about/build-platforms.rst10
-rw-r--r--docs/about/deprecated.rst95
-rw-r--r--docs/about/removed-features.rst15
-rw-r--r--docs/block-replication.txt58
-rw-r--r--docs/conf.py20
-rw-r--r--docs/devel/build-system.rst174
-rw-r--r--docs/devel/ci-definitions.rst.inc (renamed from docs/devel/ci-definitions.rst)2
-rw-r--r--docs/devel/ci-jobs.rst.inc (renamed from docs/devel/ci-jobs.rst)7
-rw-r--r--docs/devel/ci-runners.rst.inc (renamed from docs/devel/ci-runners.rst)0
-rw-r--r--docs/devel/ci.rst6
-rw-r--r--docs/devel/fuzzing.rst9
-rw-r--r--docs/devel/index.rst5
-rw-r--r--docs/devel/loads-stores.rst52
-rw-r--r--docs/devel/memory.rst14
-rw-r--r--docs/devel/modules.rst2
-rw-r--r--docs/devel/multi-process.rst28
-rw-r--r--docs/devel/multi-thread-tcg.rst2
-rw-r--r--docs/devel/qapi-code-gen.rst67
-rw-r--r--docs/devel/qgraph.rst134
-rw-r--r--docs/devel/stable-process.rst2
-rw-r--r--docs/devel/style.rst18
-rw-r--r--docs/devel/submitting-a-patch.rst562
-rw-r--r--docs/devel/submitting-a-pull-request.rst77
-rw-r--r--docs/devel/tcg-plugins.rst115
-rw-r--r--docs/devel/testing.rst349
-rw-r--r--docs/devel/trivial-patches.rst52
-rw-r--r--docs/devel/ui.rst4
-rw-r--r--docs/devel/writing-monitor-commands.rst (renamed from docs/devel/writing-qmp-commands.rst)167
-rw-r--r--docs/hyperv.txt41
-rw-r--r--docs/image-fuzzer.txt6
-rw-r--r--docs/interop/bitmaps.rst285
-rw-r--r--docs/interop/dbus-display.rst31
-rw-r--r--docs/interop/dbus-vmstate.rst52
-rw-r--r--docs/interop/dbus.rst2
-rw-r--r--docs/interop/index.rst2
-rw-r--r--docs/interop/live-block-operations.rst49
-rw-r--r--docs/interop/nbd.txt6
-rw-r--r--docs/interop/qcow2.txt8
-rw-r--r--docs/interop/virtio-balloon-stats.rst (renamed from docs/virtio-balloon-stats.txt)58
-rw-r--r--docs/meson.build18
-rw-r--r--docs/multiseat.txt2
-rw-r--r--docs/papr-pef.txt30
-rw-r--r--docs/specs/ppc-spapr-hcalls.rst99
-rw-r--r--docs/specs/ppc-spapr-hcalls.txt78
-rw-r--r--docs/specs/ppc-spapr-hotplug.rst510
-rw-r--r--docs/specs/ppc-spapr-hotplug.txt409
-rw-r--r--docs/specs/ppc-spapr-uv-hcalls.rst89
-rw-r--r--docs/specs/ppc-spapr-uv-hcalls.txt76
-rw-r--r--docs/sphinx-static/custom.js9
-rw-r--r--docs/sphinx/dbusdoc.py166
-rw-r--r--docs/sphinx/dbusdomain.py406
-rw-r--r--docs/sphinx/dbusparser.py373
-rw-r--r--docs/sphinx/depfile.py19
-rw-r--r--docs/sphinx/fakedbusdoc.py25
-rw-r--r--docs/system/arm/aspeed.rst26
-rw-r--r--docs/system/arm/orangepi.rst10
-rw-r--r--docs/system/arm/virt.rst8
-rw-r--r--docs/system/arm/xlnx-versal-virt.rst49
-rw-r--r--docs/system/authz.rst26
-rw-r--r--docs/system/cpu-models-x86.rst.inc2
-rw-r--r--docs/system/device-emulation.rst1
-rw-r--r--docs/system/device-url-syntax.rst.inc2
-rw-r--r--docs/system/devices/nvme.rst26
-rw-r--r--docs/system/devices/vhost-user-rng.rst39
-rw-r--r--docs/system/gdb.rst2
-rw-r--r--docs/system/guest-loader.rst2
-rw-r--r--docs/system/i386/kvm-pv.rst100
-rw-r--r--docs/system/i386/sgx.rst188
-rw-r--r--docs/system/images.rst2
-rw-r--r--docs/system/ppc/powernv.rst69
-rw-r--r--docs/system/ppc/ppce500.rst2
-rw-r--r--docs/system/ppc/pseries.rst261
-rw-r--r--docs/system/qemu-block-drivers.rst.inc6
-rw-r--r--docs/system/riscv/shakti-c.rst2
-rw-r--r--docs/system/target-i386.rst2
-rw-r--r--docs/system/tls.rst2
-rw-r--r--docs/throttle.txt8
-rw-r--r--docs/tools/qemu-img.rst20
-rw-r--r--docs/tools/qemu-nbd.rst12
-rw-r--r--docs/tools/qemu-storage-daemon.rst9
-rw-r--r--docs/tools/qemu-trace-stap.rst24
-rw-r--r--docs/tools/virtiofsd.rst10
-rw-r--r--docs/u2f.txt2
m---------dtc0
-rw-r--r--dump/dump.c29
-rw-r--r--fpu/softfloat-parts.c.inc82
-rw-r--r--fpu/softfloat-specialize.c.inc12
-rw-r--r--fpu/softfloat.c133
-rw-r--r--fsdev/9p-marshal.c2
-rw-r--r--fsdev/9p-marshal.h3
-rw-r--r--fsdev/file-op-9p.h2
-rw-r--r--fsdev/p9array.h160
-rw-r--r--gdb-xml/arm-m-profile-mve.xml19
-rw-r--r--gdb-xml/arm-neon.xml2
-rw-r--r--gdb-xml/arm-vfp-sysregs.xml17
-rw-r--r--gdb-xml/arm-vfp.xml2
-rw-r--r--gdb-xml/arm-vfp3.xml2
-rw-r--r--gdbstub.c93
-rw-r--r--hmp-commands-info.hx46
-rw-r--r--hmp-commands.hx12
-rw-r--r--hw/9pfs/9p.c70
-rw-r--r--hw/Kconfig2
-rw-r--r--hw/acpi/Kconfig4
-rw-r--r--hw/acpi/acpi-x86-stub.c3
-rw-r--r--hw/acpi/aml-build.c290
-rw-r--r--hw/acpi/core.c4
-rw-r--r--hw/acpi/cpu.c17
-rw-r--r--hw/acpi/ghes.c10
-rw-r--r--hw/acpi/hmat.c14
-rw-r--r--hw/acpi/ich9.c18
-rw-r--r--hw/acpi/memory_hotplug.c11
-rw-r--r--hw/acpi/meson.build1
-rw-r--r--hw/acpi/nvdimm.c76
-rw-r--r--hw/acpi/pci.c18
-rw-r--r--hw/acpi/pcihp.c42
-rw-r--r--hw/acpi/viot.c114
-rw-r--r--hw/acpi/viot.h13
-rw-r--r--hw/acpi/vmgenid.c13
-rw-r--r--hw/adc/aspeed_adc.c427
-rw-r--r--hw/adc/meson.build1
-rw-r--r--hw/adc/trace-events3
-rw-r--r--hw/arm/Kconfig3
-rw-r--r--hw/arm/allwinner-h3.c2
-rw-r--r--hw/arm/aspeed.c113
-rw-r--r--hw/arm/aspeed_ast2600.c30
-rw-r--r--hw/arm/aspeed_soc.c15
-rw-r--r--hw/arm/boot.c14
-rw-r--r--hw/arm/cubieboard.c2
-rw-r--r--hw/arm/digic_boards.c1
-rw-r--r--hw/arm/highbank.c1
-rw-r--r--hw/arm/imx25_pdk.c2
-rw-r--r--hw/arm/integratorcp.c2
-rw-r--r--hw/arm/mcimx6ul-evk.c2
-rw-r--r--hw/arm/mcimx7d-sabre.c2
-rw-r--r--hw/arm/msf2-som.c2
-rw-r--r--hw/arm/musicpal.c13
-rw-r--r--hw/arm/npcm7xx.c12
-rw-r--r--hw/arm/npcm7xx_boards.c48
-rw-r--r--hw/arm/orangepi.c2
-rw-r--r--hw/arm/raspi.c2
-rw-r--r--hw/arm/realview.c2
-rw-r--r--hw/arm/sabrelite.c4
-rw-r--r--hw/arm/sbsa-ref.c3
-rw-r--r--hw/arm/smmu-common.c3
-rw-r--r--hw/arm/smmuv3.c14
-rw-r--r--hw/arm/stellaris.c15
-rw-r--r--hw/arm/stm32f405_soc.c1
-rw-r--r--hw/arm/versatilepb.c4
-rw-r--r--hw/arm/vexpress.c7
-rw-r--r--hw/arm/virt-acpi-build.c664
-rw-r--r--hw/arm/virt.c157
-rw-r--r--hw/arm/xilinx_zynq.c16
-rw-r--r--hw/arm/xlnx-versal-virt.c91
-rw-r--r--hw/arm/xlnx-versal.c57
-rw-r--r--hw/arm/xlnx-zcu102.c36
-rw-r--r--hw/arm/xlnx-zynqmp.c49
-rw-r--r--hw/audio/intel-hda.c17
-rw-r--r--hw/avr/atmega.c2
-rw-r--r--hw/block/block.c3
-rw-r--r--hw/block/dataplane/virtio-blk.c18
-rw-r--r--hw/block/fdc.c25
-rw-r--r--hw/block/swim.c3
-rw-r--r--hw/block/vhost-user-blk.c5
-rw-r--r--hw/block/virtio-blk.c14
-rw-r--r--hw/char/escc.c25
-rw-r--r--hw/char/goldfish_tty.c2
-rw-r--r--hw/char/ibex_uart.c1
-rw-r--r--hw/char/mchp_pfsoc_mmuart.c116
-rw-r--r--hw/char/sh_serial.c236
-rw-r--r--hw/char/shakti_uart.c1
-rw-r--r--hw/char/sifive_uart.c1
-rw-r--r--hw/char/stm32f2xx_usart.c3
-rw-r--r--hw/char/trace-events4
-rw-r--r--hw/char/virtio-serial-bus.c4
-rw-r--r--hw/core/bus.c13
-rw-r--r--hw/core/cpu-common.c17
-rw-r--r--hw/core/generic-loader.c3
-rw-r--r--hw/core/gpio.c198
-rw-r--r--hw/core/hotplug-stubs.c34
-rw-r--r--hw/core/loader.c103
-rw-r--r--hw/core/machine-hmp-cmds.c38
-rw-r--r--hw/core/machine-qmp-cmds.c40
-rw-r--r--hw/core/machine-smp.c195
-rw-r--r--hw/core/machine.c153
-rw-r--r--hw/core/meson.build35
-rw-r--r--hw/core/numa.c6
-rw-r--r--hw/core/qdev-hotplug.c73
-rw-r--r--hw/core/qdev-properties-system.c6
-rw-r--r--hw/core/qdev.c245
-rw-r--r--hw/core/sysbus.c10
-rw-r--r--hw/display/Kconfig2
-rw-r--r--hw/display/edid-generate.c7
-rw-r--r--hw/display/macfb.c387
-rw-r--r--hw/display/meson.build2
-rw-r--r--hw/display/qxl.c21
-rw-r--r--hw/display/trace-events7
-rw-r--r--hw/display/vga-isa-mm.c114
-rw-r--r--hw/display/vga-isa.c10
-rw-r--r--hw/display/vga-mmio.c139
-rw-r--r--hw/display/vhost-user-gpu.c2
-rw-r--r--hw/display/virtio-gpu-base.c5
-rw-r--r--hw/display/virtio-gpu-udmabuf-stubs.c3
-rw-r--r--hw/display/virtio-gpu-udmabuf.c24
-rw-r--r--hw/display/virtio-gpu-virgl.c3
-rw-r--r--hw/display/virtio-gpu.c14
-rw-r--r--hw/display/virtio-vga.c11
-rw-r--r--hw/dma/pl330.c12
-rw-r--r--hw/dma/sifive_pdma.c192
-rw-r--r--hw/dma/sparc32_dma.c16
-rw-r--r--hw/dma/xlnx-zynq-devcfg.c6
-rw-r--r--hw/dma/xlnx_dpdma.c10
-rw-r--r--hw/gpio/aspeed_gpio.c88
-rw-r--r--hw/gpio/bcm2835_gpio.c3
-rw-r--r--hw/hyperv/vmbus.c10
-rw-r--r--hw/i2c/aspeed_i2c.c101
-rw-r--r--hw/i2c/core.c2
-rw-r--r--hw/i386/Kconfig6
-rw-r--r--hw/i386/acpi-build.c372
-rw-r--r--hw/i386/acpi-common.c160
-rw-r--r--hw/i386/acpi-microvm.c13
-rw-r--r--hw/i386/amd_iommu.c59
-rw-r--r--hw/i386/fw_cfg.c12
-rw-r--r--hw/i386/intel_iommu.c77
-rw-r--r--hw/i386/intel_iommu_internal.h2
-rw-r--r--hw/i386/kvm/i8254.c7
-rw-r--r--hw/i386/meson.build4
-rw-r--r--hw/i386/microvm-dt.c348
-rw-r--r--hw/i386/microvm-dt.h8
-rw-r--r--hw/i386/microvm.c7
-rw-r--r--hw/i386/multiboot.c10
-rw-r--r--hw/i386/multiboot.h4
-rw-r--r--hw/i386/pc.c161
-rw-r--r--hw/i386/pc_piix.c21
-rw-r--r--hw/i386/pc_q35.c29
-rw-r--r--hw/i386/pc_sysfw.c2
-rw-r--r--hw/i386/sgx-epc.c188
-rw-r--r--hw/i386/sgx-stub.c38
-rw-r--r--hw/i386/sgx.c320
-rw-r--r--hw/i386/vmmouse.c5
-rw-r--r--hw/i386/x86-iommu-stub.c5
-rw-r--r--hw/i386/x86-iommu.c31
-rw-r--r--hw/i386/x86.c61
-rw-r--r--hw/i386/xen/xen-hvm.c6
-rw-r--r--hw/ide/ahci.c22
-rw-r--r--hw/ide/cmd646.c2
-rw-r--r--hw/ide/core.c8
-rw-r--r--hw/ide/isa.c2
-rw-r--r--hw/ide/macio.c4
-rw-r--r--hw/ide/microdrive.c2
-rw-r--r--hw/ide/mmio.c2
-rw-r--r--hw/ide/piix.c2
-rw-r--r--hw/ide/qdev.c4
-rw-r--r--hw/ide/sii3112.c2
-rw-r--r--hw/ide/via.c9
-rw-r--r--hw/input/lasips2.c8
-rw-r--r--hw/input/ps2.c57
-rw-r--r--hw/intc/Kconfig5
-rw-r--r--hw/intc/arm_gicv3.c20
-rw-r--r--hw/intc/arm_gicv3_common.c56
-rw-r--r--hw/intc/arm_gicv3_cpuif.c22
-rw-r--r--hw/intc/arm_gicv3_cpuif_common.c22
-rw-r--r--hw/intc/arm_gicv3_its.c270
-rw-r--r--hw/intc/arm_gicv3_its_common.c2
-rw-r--r--hw/intc/arm_gicv3_kvm.c10
-rw-r--r--hw/intc/arm_gicv3_redist.c54
-rw-r--r--hw/intc/gicv3_internal.h70
-rw-r--r--hw/intc/goldfish_pic.c2
-rw-r--r--hw/intc/ibex_plic.c307
-rw-r--r--hw/intc/m68k_irqc.c2
-rw-r--r--hw/intc/meson.build12
-rw-r--r--hw/intc/openpic.c92
-rw-r--r--hw/intc/openpic_kvm.c1
-rw-r--r--hw/intc/pnv_xive.c7
-rw-r--r--hw/intc/sh_intc.c547
-rw-r--r--hw/intc/sifive_plic.c337
-rw-r--r--hw/intc/spapr_xive.c5
-rw-r--r--hw/intc/spapr_xive_kvm.c18
-rw-r--r--hw/intc/trace-events8
-rw-r--r--hw/intc/xive.c41
-rw-r--r--hw/ipack/ipack.c10
-rw-r--r--hw/ipack/tpci200.c4
-rw-r--r--hw/isa/isa-bus.c2
-rw-r--r--hw/isa/vt82c686.c75
-rw-r--r--hw/m68k/q800.c217
-rw-r--r--hw/m68k/virt.c47
-rw-r--r--hw/mem/Kconfig3
-rw-r--r--hw/mem/meson.build2
-rw-r--r--hw/mem/pc-dimm.c23
-rw-r--r--hw/microblaze/petalogix_ml605_mmu.c2
-rw-r--r--hw/mips/Kconfig2
-rw-r--r--hw/mips/bootloader.c6
-rw-r--r--hw/mips/boston.c372
-rw-r--r--hw/mips/jazz.c9
-rw-r--r--hw/misc/auxbus.c2
-rw-r--r--hw/misc/bcm2835_property.c3
-rw-r--r--hw/misc/ivshmem.c2
-rw-r--r--hw/misc/mac_via.c27
-rw-r--r--hw/misc/macio/cuda.c4
-rw-r--r--hw/misc/macio/mac_dbdma.c10
-rw-r--r--hw/misc/macio/macio.c4
-rw-r--r--hw/misc/macio/pmu.c5
-rw-r--r--hw/misc/sga.c2
-rw-r--r--hw/misc/sifive_u_otp.c22
-rw-r--r--hw/misc/trace-events1
-rw-r--r--hw/misc/virt_ctrl.c2
-rw-r--r--hw/net/allwinner-sun8i-emac.c18
-rw-r--r--hw/net/e1000.c7
-rw-r--r--hw/net/eepro100.c49
-rw-r--r--hw/net/ftgmac100.c25
-rw-r--r--hw/net/imx_fec.c32
-rw-r--r--hw/net/npcm7xx_emc.c38
-rw-r--r--hw/net/tulip.c36
-rw-r--r--hw/net/vhost_net-stub.c4
-rw-r--r--hw/net/vhost_net.c55
-rw-r--r--hw/net/virtio-net.c279
-rw-r--r--hw/net/vmxnet3.c13
-rw-r--r--hw/nubus/mac-nubus-bridge.c34
-rw-r--r--hw/nubus/nubus-bridge.c23
-rw-r--r--hw/nubus/nubus-bus.c120
-rw-r--r--hw/nubus/nubus-device.c227
-rw-r--r--hw/nubus/trace-events7
-rw-r--r--hw/nubus/trace.h1
-rw-r--r--hw/nvme/ctrl.c16
-rw-r--r--hw/nvme/ns.c8
-rw-r--r--hw/nvme/subsys.c13
-rw-r--r--hw/nvram/Kconfig19
-rw-r--r--hw/nvram/fw_cfg.c16
-rw-r--r--hw/nvram/meson.build14
-rw-r--r--hw/nvram/xlnx-bbram.c545
-rw-r--r--hw/nvram/xlnx-efuse-crc.c119
-rw-r--r--hw/nvram/xlnx-efuse.c283
-rw-r--r--hw/nvram/xlnx-versal-efuse-cache.c114
-rw-r--r--hw/nvram/xlnx-versal-efuse-ctrl.c793
-rw-r--r--hw/nvram/xlnx-zynqmp-efuse.c861
-rw-r--r--hw/pci-bridge/pci_expander_bridge.c2
-rw-r--r--hw/pci-host/mv64361.c1
-rw-r--r--hw/pci-host/pnv_phb3.c68
-rw-r--r--hw/pci-host/pnv_phb3_msi.c9
-rw-r--r--hw/pci-host/pnv_phb3_pbcq.c11
-rw-r--r--hw/pci-host/pnv_phb4.c537
-rw-r--r--hw/pci-host/pnv_phb4_pec.c392
-rw-r--r--hw/pci-host/raven.c4
-rw-r--r--hw/pci-host/sh_pci.c10
-rw-r--r--hw/pci-host/versatile.c6
-rw-r--r--hw/pci/pci.c90
-rw-r--r--hw/pci/pci_bridge.c14
-rw-r--r--hw/pci/pci_host.c12
-rw-r--r--hw/pci/pcie.c85
-rw-r--r--hw/pci/pcie_aer.c4
-rw-r--r--hw/pci/pcie_port.c2
-rw-r--r--hw/pci/trace-events8
-rw-r--r--hw/ppc/e500.c2
-rw-r--r--hw/ppc/mac.h3
-rw-r--r--hw/ppc/mac_newworld.c3
-rw-r--r--hw/ppc/mac_oldworld.c3
-rw-r--r--hw/ppc/mpc8544_guts.c9
-rw-r--r--hw/ppc/pegasos2.c163
-rw-r--r--hw/ppc/pnv.c247
-rw-r--r--hw/ppc/pnv_core.c4
-rw-r--r--hw/ppc/pnv_pnor.c2
-rw-r--r--hw/ppc/pnv_xscom.c4
-rw-r--r--hw/ppc/ppc.c280
-rw-r--r--hw/ppc/ppc405.h14
-rw-r--r--hw/ppc/ppc405_boards.c245
-rw-r--r--hw/ppc/ppc405_uc.c227
-rw-r--r--hw/ppc/ppc4xx_devs.c39
-rw-r--r--hw/ppc/ppc4xx_pci.c19
-rw-r--r--hw/ppc/spapr.c87
-rw-r--r--hw/ppc/spapr_cpu_core.c2
-rw-r--r--hw/ppc/spapr_drc.c16
-rw-r--r--hw/ppc/spapr_hcall.c7
-rw-r--r--hw/ppc/spapr_numa.c403
-rw-r--r--hw/ppc/spapr_pci.c12
-rw-r--r--hw/ppc/spapr_pci_nvlink2.c7
-rw-r--r--hw/ppc/spapr_pci_vfio.c4
-rw-r--r--hw/ppc/spapr_softmmu.c17
-rw-r--r--hw/ppc/spapr_vio.c2
-rw-r--r--hw/ppc/trace-events52
-rw-r--r--hw/rdma/rdma_rm.c104
-rw-r--r--hw/rdma/rdma_rm.h2
-rw-r--r--hw/rdma/rdma_utils.c14
-rw-r--r--hw/rdma/rdma_utils.h2
-rw-r--r--hw/rdma/trace-events2
-rw-r--r--hw/rdma/vmw/pvrdma_main.c31
-rw-r--r--hw/remote/proxy-memory-listener.c1
-rw-r--r--hw/remote/proxy.c1
-rw-r--r--hw/riscv/boot.c40
-rw-r--r--hw/riscv/microchip_pfsoc.c54
-rw-r--r--hw/riscv/opentitan.c40
-rw-r--r--hw/riscv/shakti_c.c13
-rw-r--r--hw/riscv/sifive_e.c18
-rw-r--r--hw/riscv/sifive_u.c37
-rw-r--r--hw/riscv/spike.c6
-rw-r--r--hw/riscv/virt.c26
-rw-r--r--hw/rtc/meson.build2
-rw-r--r--hw/rtc/pl031.c10
-rw-r--r--hw/s390x/ap-bridge.c2
-rw-r--r--hw/s390x/css-bridge.c2
-rw-r--r--hw/s390x/event-facility.c4
-rw-r--r--hw/s390x/ipl.c31
-rw-r--r--hw/s390x/s390-pci-bus.c8
-rw-r--r--hw/s390x/s390-pci-inst.c15
-rw-r--r--hw/s390x/s390-pci-vfio.c1
-rw-r--r--hw/s390x/s390-virtio-ccw.c15
-rw-r--r--hw/s390x/virtio-ccw.c3
-rw-r--r--hw/scsi/esp-pci.c4
-rw-r--r--hw/scsi/esp.c13
-rw-r--r--hw/scsi/lsi53c895a.c5
-rw-r--r--hw/scsi/megasas.c144
-rw-r--r--hw/scsi/mptsas.c18
-rw-r--r--hw/scsi/scsi-bus.c18
-rw-r--r--hw/scsi/scsi-disk.c10
-rw-r--r--hw/scsi/scsi-generic.c2
-rw-r--r--hw/scsi/spapr_vscsi.c3
-rw-r--r--hw/scsi/trace-events8
-rw-r--r--hw/scsi/vhost-scsi.c15
-rw-r--r--hw/scsi/virtio-scsi-dataplane.c60
-rw-r--r--hw/scsi/virtio-scsi.c6
-rw-r--r--hw/scsi/vmw_pvscsi.c23
-rw-r--r--hw/sd/allwinner-sdhost.c18
-rw-r--r--hw/sd/aspeed_sdhci.c5
-rw-r--r--hw/sd/bcm2835_sdhost.c4
-rw-r--r--hw/sd/meson.build1
-rw-r--r--hw/sd/npcm7xx_sdhci.c182
-rw-r--r--hw/sd/pl181.c3
-rw-r--r--hw/sd/pxa2xx_mmci.c4
-rw-r--r--hw/sd/sd.c52
-rw-r--r--hw/sd/sdhci.c38
-rw-r--r--hw/sd/ssi-sd.c32
-rw-r--r--hw/sd/trace-events4
-rw-r--r--hw/sh4/r2d.c69
-rw-r--r--hw/sh4/sh7750.c637
-rw-r--r--hw/sh4/sh7750_regnames.c148
-rw-r--r--hw/sh4/sh7750_regs.h1600
-rw-r--r--hw/sh4/shix.c12
-rw-r--r--hw/sh4/trace-events3
-rw-r--r--hw/sh4/trace.h1
-rw-r--r--hw/smbios/smbios.c8
-rw-r--r--hw/sparc64/niagara.c2
-rw-r--r--hw/ssi/aspeed_smc.c1137
-rw-r--r--hw/ssi/ssi.c2
-rw-r--r--hw/timer/etraxfs_timer.c34
-rw-r--r--hw/timer/sh_timer.c151
-rw-r--r--hw/timer/trace-events5
-rw-r--r--hw/tpm/tpm_ppi.c5
-rw-r--r--hw/usb/bus.c26
-rw-r--r--hw/usb/desc.c15
-rw-r--r--hw/usb/desc.h1
-rw-r--r--hw/usb/dev-smartcard-reader.c3
-rw-r--r--hw/usb/dev-storage-bot.c3
-rw-r--r--hw/usb/dev-storage-classic.c4
-rw-r--r--hw/usb/dev-uas.c4
-rw-r--r--hw/usb/dev-wacom.c72
-rw-r--r--hw/usb/hcd-dwc2.c8
-rw-r--r--hw/usb/hcd-ehci.c6
-rw-r--r--hw/usb/hcd-ohci.c28
-rw-r--r--hw/usb/hcd-uhci.c14
-rw-r--r--hw/usb/hcd-uhci.h3
-rw-r--r--hw/usb/hcd-xhci.c26
-rw-r--r--hw/usb/libhw.c3
-rw-r--r--hw/usb/vt82c686-uhci-pci.c15
-rw-r--r--hw/vfio/common.c17
-rw-r--r--hw/vfio/pci.c23
-rw-r--r--hw/vfio/spapr.c1
-rw-r--r--hw/virtio/Kconfig5
-rw-r--r--hw/virtio/meson.build2
-rw-r--r--hw/virtio/trace-events4
-rw-r--r--hw/virtio/vhost-backend.c4
-rw-r--r--hw/virtio/vhost-user-rng-pci.c79
-rw-r--r--hw/virtio/vhost-user-rng.c289
-rw-r--r--hw/virtio/vhost-user-vsock.c4
-rw-r--r--hw/virtio/vhost-user.c406
-rw-r--r--hw/virtio/vhost-vdpa.c187
-rw-r--r--hw/virtio/vhost-vsock-common.c31
-rw-r--r--hw/virtio/vhost-vsock.c22
-rw-r--r--hw/virtio/vhost.c102
-rw-r--r--hw/virtio/virtio-balloon.c15
-rw-r--r--hw/virtio/virtio-iommu-pci.c16
-rw-r--r--hw/virtio/virtio-iommu.c42
-rw-r--r--hw/virtio/virtio-mem-pci.c10
-rw-r--r--hw/virtio/virtio-mem.c197
-rw-r--r--hw/virtio/virtio-mmio.c15
-rw-r--r--hw/virtio/virtio-pci.c3
-rw-r--r--hw/virtio/virtio.c136
-rw-r--r--hw/watchdog/sbsa_gwdt.c3
-rw-r--r--hw/watchdog/trace-events4
-rw-r--r--hw/watchdog/watchdog.c14
-rw-r--r--hw/watchdog/wdt_aspeed.c8
-rw-r--r--hw/watchdog/wdt_diag288.c3
-rw-r--r--hw/watchdog/wdt_i6300esb.c3
-rw-r--r--hw/watchdog/wdt_ib700.c3
-rw-r--r--hw/watchdog/wdt_imx2.c4
-rw-r--r--hw/xen/xen-bus.c8
-rw-r--r--hw/xen/xen-legacy-backend.c5
-rw-r--r--hw/xen/xen_pt.c6
-rw-r--r--include/block/aio.h4
-rw-r--r--include/block/block.h17
-rw-r--r--include/block/block_int.h76
-rw-r--r--include/block/blockjob.h10
-rw-r--r--include/block/raw-aio.h6
-rw-r--r--include/chardev/char-socket.h86
-rw-r--r--include/disas/dis-asm.h4
-rw-r--r--include/elf.h2
-rw-r--r--include/exec/cpu-all.h8
-rw-r--r--include/exec/cpu_ldst.h332
-rw-r--r--include/exec/exec-all.h56
-rw-r--r--include/exec/gen-icount.h21
-rw-r--r--include/exec/memop.h29
-rw-r--r--include/exec/memopidx.h55
-rw-r--r--include/exec/memory.h84
-rw-r--r--include/exec/plugin-gen.h12
-rw-r--r--include/exec/ram_addr.h13
-rw-r--r--include/exec/ramlist.h2
-rw-r--r--include/fpu/softfloat-macros.h82
-rw-r--r--include/fpu/softfloat-types.h23
-rw-r--r--include/fpu/softfloat.h24
-rw-r--r--include/glib-compat.h43
-rw-r--r--include/hw/acpi/acpi-defs.h528
-rw-r--r--include/hw/acpi/acpi_dev_interface.h3
-rw-r--r--include/hw/acpi/aml-build.h40
-rw-r--r--include/hw/acpi/ich9.h3
-rw-r--r--include/hw/adc/aspeed_adc.h55
-rw-r--r--include/hw/arm/aspeed_soc.h4
-rw-r--r--include/hw/arm/npcm7xx.h2
-rw-r--r--include/hw/arm/virt.h5
-rw-r--r--include/hw/arm/xlnx-versal.h15
-rw-r--r--include/hw/arm/xlnx-zynqmp.h5
-rw-r--r--include/hw/boards.h48
-rw-r--r--include/hw/char/goldfish_tty.h2
-rw-r--r--include/hw/char/mchp_pfsoc_mmuart.h17
-rw-r--r--include/hw/clock.h5
-rw-r--r--include/hw/core/cpu.h16
-rw-r--r--include/hw/core/tcg-cpu-ops.h71
-rw-r--r--include/hw/display/macfb.h43
-rw-r--r--include/hw/display/vga.h6
-rw-r--r--include/hw/elf_ops.h40
-rw-r--r--include/hw/firmware/smbios.h10
-rw-r--r--include/hw/gpio/aspeed_gpio.h5
-rw-r--r--include/hw/i2c/aspeed_i2c.h8
-rw-r--r--include/hw/i386/hostmem-epc.h28
-rw-r--r--include/hw/i386/microvm.h5
-rw-r--r--include/hw/i386/pc.h23
-rw-r--r--include/hw/i386/sgx-epc.h70
-rw-r--r--include/hw/i386/x86-iommu.h12
-rw-r--r--include/hw/i386/x86.h7
-rw-r--r--include/hw/ide/internal.h4
-rw-r--r--include/hw/intc/arm_gicv3_common.h14
-rw-r--r--include/hw/intc/arm_gicv3_its_common.h9
-rw-r--r--include/hw/intc/goldfish_pic.h2
-rw-r--r--include/hw/intc/m68k_irqc.h2
-rw-r--r--include/hw/ipack/ipack.h8
-rw-r--r--include/hw/isa/vt82c686.h4
-rw-r--r--include/hw/loader.h58
-rw-r--r--include/hw/misc/mac_via.h1
-rw-r--r--include/hw/misc/virt_ctrl.h2
-rw-r--r--include/hw/nubus/mac-nubus-bridge.h13
-rw-r--r--include/hw/nubus/nubus.h49
-rw-r--r--include/hw/nvram/xlnx-bbram.h54
-rw-r--r--include/hw/nvram/xlnx-efuse.h132
-rw-r--r--include/hw/nvram/xlnx-versal-efuse.h68
-rw-r--r--include/hw/nvram/xlnx-zynqmp-efuse.h44
-rw-r--r--include/hw/pci-host/pnv_phb3.h7
-rw-r--r--include/hw/pci-host/pnv_phb4.h87
-rw-r--r--include/hw/pci/pci.h95
-rw-r--r--include/hw/pci/pci_bridge.h8
-rw-r--r--include/hw/ppc/openpic.h25
-rw-r--r--include/hw/ppc/pnv.h8
-rw-r--r--include/hw/ppc/pnv_core.h2
-rw-r--r--include/hw/ppc/spapr.h35
-rw-r--r--include/hw/ppc/spapr_numa.h1
-rw-r--r--include/hw/ppc/spapr_ovec.h1
-rw-r--r--include/hw/ppc/spapr_vio.h30
-rw-r--r--include/hw/ppc/xive.h40
-rw-r--r--include/hw/qdev-core.h50
-rw-r--r--include/hw/rdma/rdma.h2
-rw-r--r--include/hw/riscv/boot.h2
-rw-r--r--include/hw/riscv/microchip_pfsoc.h1
-rw-r--r--include/hw/riscv/opentitan.h6
-rw-r--r--include/hw/riscv/sifive_u.h1
-rw-r--r--include/hw/riscv/virt.h3
-rw-r--r--include/hw/s390x/ioinst.h2
-rw-r--r--include/hw/s390x/s390-pci-bus.h3
-rw-r--r--include/hw/s390x/s390-pci-clp.h3
-rw-r--r--include/hw/scsi/scsi.h34
-rw-r--r--include/hw/sd/npcm7xx_sdhci.h65
-rw-r--r--include/hw/sh4/sh.h19
-rw-r--r--include/hw/sh4/sh_intc.h2
-rw-r--r--include/hw/ssi/aspeed_smc.h84
-rw-r--r--include/hw/usb/msd.h2
-rw-r--r--include/hw/virtio/vhost-user-rng.h33
-rw-r--r--include/hw/virtio/vhost-vdpa.h3
-rw-r--r--include/hw/virtio/vhost-vsock-common.h5
-rw-r--r--include/hw/virtio/vhost.h2
-rw-r--r--include/hw/virtio/virtio-blk.h2
-rw-r--r--include/hw/virtio/virtio-gpu-bswap.h1
-rw-r--r--include/hw/virtio/virtio-gpu.h9
-rw-r--r--include/hw/virtio/virtio-iommu.h2
-rw-r--r--include/hw/virtio/virtio-mem.h15
-rw-r--r--include/hw/virtio/virtio-net.h7
-rw-r--r--include/hw/virtio/virtio.h5
-rw-r--r--include/libdecnumber/decNumber.h4
-rw-r--r--include/libdecnumber/decNumberLocal.h2
-rw-r--r--include/migration/blocker.h16
-rw-r--r--include/migration/colo.h1
-rw-r--r--include/monitor/hmp-target.h3
-rw-r--r--include/monitor/hmp.h6
-rw-r--r--include/monitor/monitor.h2
-rw-r--r--include/monitor/qdev.h27
-rw-r--r--include/net/net.h7
-rw-r--r--include/net/vhost_net.h6
-rw-r--r--include/qapi/compat-policy.h7
-rw-r--r--include/qapi/qmp/dispatch.h6
-rw-r--r--include/qapi/qobject-input-visitor.h4
-rw-r--r--include/qapi/qobject-output-visitor.h4
-rw-r--r--include/qapi/type-helpers.h14
-rw-r--r--include/qapi/util.h8
-rw-r--r--include/qapi/visitor-impl.h9
-rw-r--r--include/qapi/visitor.h26
-rw-r--r--include/qemu/cutils.h5
-rw-r--r--include/qemu/dbus.h24
-rw-r--r--include/qemu/host-utils.h165
-rw-r--r--include/qemu/int128.h47
-rw-r--r--include/qemu/iova-tree.h8
-rw-r--r--include/qemu/job.h29
-rw-r--r--include/qemu/module.h6
-rw-r--r--include/qemu/option.h2
-rw-r--r--include/qemu/osdep.h7
-rw-r--r--include/qemu/plugin.h33
-rw-r--r--include/qemu/rcu.h15
-rw-r--r--include/qemu/transactions.h3
-rw-r--r--include/qom/object.h12
-rw-r--r--include/standard-headers/drm/drm_fourcc.h121
-rw-r--r--include/standard-headers/linux/ethtool.h31
-rw-r--r--include/standard-headers/linux/fuse.h10
-rw-r--r--include/standard-headers/linux/pci_regs.h6
-rw-r--r--include/standard-headers/linux/virtio_gpu.h18
-rw-r--r--include/standard-headers/linux/virtio_ids.h24
-rw-r--r--include/standard-headers/linux/virtio_mem.h9
-rw-r--r--include/standard-headers/linux/virtio_vsock.h3
-rw-r--r--include/sysemu/block-backend.h34
-rw-r--r--include/sysemu/blockdev.h4
-rw-r--r--include/sysemu/device_tree.h1
-rw-r--r--include/sysemu/dma.h115
-rw-r--r--include/sysemu/kvm.h16
-rw-r--r--include/sysemu/kvm_int.h2
-rw-r--r--include/sysemu/sev.h28
-rw-r--r--include/sysemu/sysemu.h1
-rw-r--r--include/sysemu/watchdog.h1
-rw-r--r--include/tcg/tcg-ldst.h79
-rw-r--r--include/tcg/tcg-op.h4
-rw-r--r--include/tcg/tcg.h213
-rw-r--r--include/ui/clipboard.h55
-rw-r--r--include/ui/console.h75
-rw-r--r--include/ui/dbus-display.h17
-rw-r--r--include/ui/dbus-module.h11
-rw-r--r--include/ui/egl-context.h6
-rw-r--r--include/ui/gtk.h11
-rw-r--r--include/ui/qemu-spice.h6
-rw-r--r--include/ui/sdl2.h18
-rw-r--r--include/ui/spice-display.h5
-rw-r--r--include/user/safe-syscall.h (renamed from linux-user/safe-syscall.h)38
-rw-r--r--io/channel-command.c6
-rw-r--r--io/channel-file.c3
-rw-r--r--io/channel-socket.c3
-rw-r--r--io/dns-resolver.c2
-rw-r--r--iothread.c28
-rw-r--r--job.c95
-rw-r--r--libdecnumber/decContext.c7
-rw-r--r--libdecnumber/decNumber.c131
-rw-r--r--linux-headers/asm-arm64/unistd.h1
-rw-r--r--linux-headers/asm-generic/unistd.h22
-rw-r--r--linux-headers/asm-mips/unistd_n32.h1
-rw-r--r--linux-headers/asm-mips/unistd_n64.h1
-rw-r--r--linux-headers/asm-mips/unistd_o32.h1
-rw-r--r--linux-headers/asm-powerpc/unistd_32.h1
-rw-r--r--linux-headers/asm-powerpc/unistd_64.h1
-rw-r--r--linux-headers/asm-s390/unistd_32.h1
-rw-r--r--linux-headers/asm-s390/unistd_64.h1
-rw-r--r--linux-headers/asm-x86/kvm.h5
-rw-r--r--linux-headers/asm-x86/unistd_32.h3
-rw-r--r--linux-headers/asm-x86/unistd_64.h3
-rw-r--r--linux-headers/asm-x86/unistd_x32.h3
-rw-r--r--linux-headers/linux/kvm.h40
-rw-r--r--linux-user/aarch64/cpu_loop.c52
-rw-r--r--linux-user/aarch64/signal.c38
-rw-r--r--linux-user/aarch64/target_prctl.h160
-rw-r--r--linux-user/aarch64/target_signal.h20
-rw-r--r--linux-user/aarch64/target_structs.h59
-rw-r--r--linux-user/aarch64/target_syscall.h24
-rw-r--r--linux-user/alpha/cpu_loop.c80
-rw-r--r--linux-user/alpha/signal.c42
-rw-r--r--linux-user/alpha/target_prctl.h1
-rw-r--r--linux-user/alpha/target_signal.h2
-rw-r--r--linux-user/alpha/target_syscall.h1
-rw-r--r--linux-user/arm/cpu_loop.c34
-rw-r--r--linux-user/arm/signal.c480
-rw-r--r--linux-user/arm/target_prctl.h1
-rw-r--r--linux-user/arm/target_signal.h20
-rw-r--r--linux-user/arm/target_structs.h60
-rw-r--r--linux-user/arm/target_syscall.h1
-rw-r--r--linux-user/cpu_loop-common.h1
-rw-r--r--linux-user/cris/cpu_loop.c26
-rw-r--r--linux-user/cris/signal.c33
-rw-r--r--linux-user/cris/target_prctl.h1
-rw-r--r--linux-user/cris/target_signal.h20
-rw-r--r--linux-user/cris/target_structs.h59
-rw-r--r--linux-user/cris/target_syscall.h1
-rw-r--r--linux-user/elfload.c125
-rw-r--r--linux-user/fd-trans.c184
-rw-r--r--linux-user/generic/signal.h15
-rw-r--r--linux-user/generic/target_errno_defs.h17
-rw-r--r--linux-user/generic/target_prctl_unalign.h27
-rw-r--r--linux-user/generic/target_structs.h58
-rw-r--r--linux-user/hexagon/cpu_loop.c29
-rw-r--r--linux-user/hexagon/signal.c21
-rw-r--r--linux-user/hexagon/target_prctl.h1
-rw-r--r--linux-user/hexagon/target_signal.h13
-rw-r--r--linux-user/hexagon/target_structs.h55
-rw-r--r--linux-user/host/aarch64/hostdep.h38
-rw-r--r--linux-user/host/aarch64/safe-syscall.inc.S75
-rw-r--r--linux-user/host/arm/hostdep.h38
-rw-r--r--linux-user/host/arm/safe-syscall.inc.S90
-rw-r--r--linux-user/host/i386/hostdep.h38
-rw-r--r--linux-user/host/i386/safe-syscall.inc.S100
-rw-r--r--linux-user/host/ia64/hostdep.h15
-rw-r--r--linux-user/host/mips/hostdep.h15
-rw-r--r--linux-user/host/ppc/hostdep.h15
-rw-r--r--linux-user/host/ppc64/hostdep.h38
-rw-r--r--linux-user/host/ppc64/safe-syscall.inc.S96
-rw-r--r--linux-user/host/riscv32/hostdep.h11
-rw-r--r--linux-user/host/riscv64/hostdep.h34
-rw-r--r--linux-user/host/riscv64/safe-syscall.inc.S77
-rw-r--r--linux-user/host/s390/hostdep.h15
-rw-r--r--linux-user/host/s390x/hostdep.h38
-rw-r--r--linux-user/host/s390x/safe-syscall.inc.S90
-rw-r--r--linux-user/host/sparc/hostdep.h15
-rw-r--r--linux-user/host/sparc64/hostdep.h15
-rw-r--r--linux-user/host/x32/hostdep.h15
-rw-r--r--linux-user/host/x86_64/hostdep.h38
-rw-r--r--linux-user/hppa/cpu_loop.c53
-rw-r--r--linux-user/hppa/signal.c4
-rw-r--r--linux-user/hppa/target_prctl.h1
-rw-r--r--linux-user/hppa/target_signal.h15
-rw-r--r--linux-user/hppa/target_syscall.h1
-rw-r--r--linux-user/i386/cpu_loop.c90
-rw-r--r--linux-user/i386/signal.c73
-rw-r--r--linux-user/i386/target_prctl.h1
-rw-r--r--linux-user/i386/target_signal.h20
-rw-r--r--linux-user/i386/target_structs.h59
-rw-r--r--linux-user/i386/target_syscall.h1
-rw-r--r--linux-user/include/host/aarch64/host-signal.h79
-rw-r--r--linux-user/include/host/alpha/host-signal.h47
-rw-r--r--linux-user/include/host/arm/host-signal.h35
-rw-r--r--linux-user/include/host/i386/host-signal.h30
-rw-r--r--linux-user/include/host/loongarch64/host-signal.h85
-rw-r--r--linux-user/include/host/mips/host-signal.h67
-rw-r--r--linux-user/include/host/ppc/host-signal.h30
-rw-r--r--linux-user/include/host/ppc64/host-signal.h1
-rw-r--r--linux-user/include/host/riscv/host-signal.h63
-rw-r--r--linux-user/include/host/s390/host-signal.h98
-rw-r--r--linux-user/include/host/s390x/host-signal.h1
-rw-r--r--linux-user/include/host/sparc/host-signal.h63
-rw-r--r--linux-user/include/host/sparc64/host-signal.h1
-rw-r--r--linux-user/include/host/x32/host-signal.h1
-rw-r--r--linux-user/include/host/x86_64/host-signal.h29
-rw-r--r--linux-user/include/special-errno.h32
-rw-r--r--linux-user/ioctls.h4
-rw-r--r--linux-user/linux_loop.h2
-rw-r--r--linux-user/m68k/cpu_loop.c38
-rw-r--r--linux-user/m68k/signal.c55
-rw-r--r--linux-user/m68k/target_prctl.h1
-rw-r--r--linux-user/m68k/target_signal.h20
-rw-r--r--linux-user/m68k/target_structs.h59
-rw-r--r--linux-user/m68k/target_syscall.h1
-rw-r--r--linux-user/meson.build13
-rw-r--r--linux-user/microblaze/cpu_loop.c85
-rw-r--r--linux-user/microblaze/signal.c28
-rw-r--r--linux-user/microblaze/target_prctl.h1
-rw-r--r--linux-user/microblaze/target_signal.h20
-rw-r--r--linux-user/microblaze/target_structs.h59
-rw-r--r--linux-user/microblaze/target_syscall.h1
-rw-r--r--linux-user/mips/cpu_loop.c181
-rw-r--r--linux-user/mips/signal.c47
-rw-r--r--linux-user/mips/target_prctl.h88
-rw-r--r--linux-user/mips/target_signal.h2
-rw-r--r--linux-user/mips/target_syscall.h7
-rw-r--r--linux-user/mips64/target_prctl.h1
-rw-r--r--linux-user/mips64/target_signal.h3
-rw-r--r--linux-user/mips64/target_syscall.h7
-rw-r--r--linux-user/nios2/cpu_loop.c93
-rw-r--r--linux-user/nios2/signal.c58
-rw-r--r--linux-user/nios2/target_prctl.h1
-rw-r--r--linux-user/nios2/target_signal.h19
-rw-r--r--linux-user/nios2/target_structs.h59
-rw-r--r--linux-user/nios2/target_syscall.h1
-rw-r--r--linux-user/openrisc/cpu_loop.c47
-rw-r--r--linux-user/openrisc/signal.c22
-rw-r--r--linux-user/openrisc/target_prctl.h1
-rw-r--r--linux-user/openrisc/target_signal.h25
-rw-r--r--linux-user/openrisc/target_structs.h59
-rw-r--r--linux-user/openrisc/target_syscall.h1
-rw-r--r--linux-user/ppc/cpu_loop.c148
-rw-r--r--linux-user/ppc/signal.c59
-rw-r--r--linux-user/ppc/target_prctl.h1
-rw-r--r--linux-user/ppc/target_signal.h20
-rw-r--r--linux-user/ppc/target_syscall.h1
-rw-r--r--linux-user/qemu.h2
-rw-r--r--linux-user/riscv/cpu_loop.c44
-rw-r--r--linux-user/riscv/signal.c24
-rw-r--r--linux-user/riscv/target_prctl.h1
-rw-r--r--linux-user/riscv/target_signal.h14
-rw-r--r--linux-user/riscv/target_structs.h47
-rw-r--r--linux-user/riscv/target_syscall.h4
-rw-r--r--linux-user/s390x/cpu_loop.c24
-rw-r--r--linux-user/s390x/signal.c32
-rw-r--r--linux-user/s390x/target_prctl.h1
-rw-r--r--linux-user/s390x/target_signal.h17
-rw-r--r--linux-user/s390x/target_syscall.h1
-rw-r--r--linux-user/sh4/cpu_loop.c18
-rw-r--r--linux-user/sh4/signal.c48
-rw-r--r--linux-user/sh4/target_prctl.h1
-rw-r--r--linux-user/sh4/target_signal.h20
-rw-r--r--linux-user/sh4/target_structs.h59
-rw-r--r--linux-user/sh4/target_syscall.h1
-rw-r--r--linux-user/signal-common.h14
-rw-r--r--linux-user/signal.c167
-rw-r--r--linux-user/sparc/cpu_loop.c41
-rw-r--r--linux-user/sparc/signal.c48
-rw-r--r--linux-user/sparc/target_prctl.h1
-rw-r--r--linux-user/sparc/target_signal.h5
-rw-r--r--linux-user/sparc/target_syscall.h1
-rw-r--r--linux-user/syscall.c1009
-rw-r--r--linux-user/syscall_defs.h65
-rw-r--r--linux-user/syscall_types.h6
-rw-r--r--linux-user/thunk.c (renamed from thunk.c)0
-rw-r--r--linux-user/trace-events2
-rw-r--r--linux-user/user-internals.h3
-rw-r--r--linux-user/x86_64/target_prctl.h1
-rw-r--r--linux-user/x86_64/target_signal.h21
-rw-r--r--linux-user/x86_64/target_structs.h36
-rw-r--r--linux-user/x86_64/target_syscall.h1
-rw-r--r--linux-user/xtensa/cpu_loop.c39
-rw-r--r--linux-user/xtensa/signal.c60
-rw-r--r--linux-user/xtensa/target_prctl.h1
-rw-r--r--linux-user/xtensa/target_signal.h19
m---------meson0
-rw-r--r--meson.build807
-rw-r--r--meson_options.txt59
-rw-r--r--migration/block-dirty-bitmap.c5
-rw-r--r--migration/colo.c53
-rw-r--r--migration/dirtyrate.c367
-rw-r--r--migration/dirtyrate.h19
-rw-r--r--migration/migration.c93
-rw-r--r--migration/migration.h2
-rw-r--r--migration/multifd-zlib.c48
-rw-r--r--migration/multifd-zstd.c47
-rw-r--r--migration/multifd.c105
-rw-r--r--migration/multifd.h10
-rw-r--r--migration/postcopy-ram.c44
-rw-r--r--migration/ram.c272
-rw-r--r--migration/ram.h2
-rw-r--r--migration/rdma.c257
-rw-r--r--migration/savevm.c6
-rw-r--r--migration/trace-events4
-rw-r--r--monitor/hmp-cmds.c112
-rw-r--r--monitor/hmp.c32
-rw-r--r--monitor/misc.c68
-rw-r--r--monitor/monitor-internal.h7
-rw-r--r--monitor/monitor.c9
-rw-r--r--monitor/qmp-cmds.c98
-rw-r--r--nbd/client-connection.c56
-rw-r--r--nbd/client.c2
-rw-r--r--nbd/server.c41
-rw-r--r--net/colo-compare.c12
-rw-r--r--net/colo.c31
-rw-r--r--net/colo.h6
-rw-r--r--net/filter-rewriter.c10
-rw-r--r--net/meson.build10
-rw-r--r--net/net.c24
-rw-r--r--net/vhost-user.c41
-rw-r--r--net/vhost-vdpa.c160
-rw-r--r--pc-bios/README2
-rw-r--r--pc-bios/bios-256k.binbin262144 -> 262144 bytes
-rw-r--r--pc-bios/bios-microvm.binbin131072 -> 131072 bytes
-rw-r--r--pc-bios/bios.binbin131072 -> 131072 bytes
-rw-r--r--pc-bios/descriptors/meson.build4
-rw-r--r--pc-bios/hppa-firmware.imgbin785696 -> 757144 bytes
-rw-r--r--pc-bios/meson.build8
-rw-r--r--pc-bios/multiboot_dma.binbin0 -> 1024 bytes
-rw-r--r--pc-bios/openbios-ppcbin696912 -> 697088 bytes
-rw-r--r--pc-bios/openbios-sparc32bin382048 -> 382048 bytes
-rw-r--r--pc-bios/openbios-sparc64bin1593408 -> 1593408 bytes
-rw-r--r--pc-bios/opensbi-riscv32-generic-fw_dynamic.binbin78680 -> 108504 bytes
-rw-r--r--pc-bios/opensbi-riscv32-generic-fw_dynamic.elfbin727464 -> 838904 bytes
-rw-r--r--pc-bios/opensbi-riscv64-generic-fw_dynamic.binbin75096 -> 105296 bytes
-rw-r--r--pc-bios/opensbi-riscv64-generic-fw_dynamic.elfbin781264 -> 934696 bytes
-rw-r--r--pc-bios/optionrom/Makefile9
-rw-r--r--pc-bios/optionrom/multiboot.S4
-rw-r--r--pc-bios/optionrom/multiboot_dma.S2
-rw-r--r--pc-bios/optionrom/optionrom.h66
-rw-r--r--pc-bios/s390-ccw/Makefile2
-rw-r--r--pc-bios/slof.binbin991744 -> 992384 bytes
-rw-r--r--pc-bios/vgabios-ati.binbin39424 -> 39936 bytes
-rw-r--r--pc-bios/vgabios-bochs-display.binbin28672 -> 28672 bytes
-rw-r--r--pc-bios/vgabios-cirrus.binbin38912 -> 39424 bytes
-rw-r--r--pc-bios/vgabios-qxl.binbin39424 -> 39424 bytes
-rw-r--r--pc-bios/vgabios-ramfb.binbin28672 -> 28672 bytes
-rw-r--r--pc-bios/vgabios-stdvga.binbin39424 -> 39424 bytes
-rw-r--r--pc-bios/vgabios-virtio.binbin39424 -> 39424 bytes
-rw-r--r--pc-bios/vgabios-vmware.binbin39424 -> 39424 bytes
-rw-r--r--pc-bios/vgabios.binbin38912 -> 38912 bytes
-rw-r--r--plugins/api.c19
-rw-r--r--plugins/core.c10
-rw-r--r--plugins/meson.build13
-rw-r--r--plugins/qemu-plugins.symbols3
-rw-r--r--po/tr.po25
-rw-r--r--python/qemu/aqmp/__init__.py14
-rw-r--r--python/qemu/aqmp/aqmp_tui.py3
-rw-r--r--python/qemu/aqmp/events.py15
-rw-r--r--python/qemu/aqmp/legacy.py138
-rw-r--r--python/qemu/aqmp/models.py13
-rw-r--r--python/qemu/aqmp/protocol.py36
-rw-r--r--python/qemu/aqmp/qmp_client.py30
-rw-r--r--python/qemu/machine/README.rst2
-rw-r--r--python/qemu/machine/machine.py192
-rw-r--r--python/qemu/machine/qtest.py2
-rw-r--r--python/qemu/qmp/README.rst2
-rw-r--r--python/qemu/qmp/__init__.py27
-rw-r--r--python/qemu/qmp/qmp_shell.py1
-rw-r--r--python/qemu/qmp/qom_common.py6
-rw-r--r--python/qemu/utils/README.rst2
-rwxr-xr-xpython/tests/iotests-mypy.sh4
-rwxr-xr-xpython/tests/iotests-pylint.sh4
-rw-r--r--qapi/audio.json3
-rw-r--r--qapi/block-core.json159
-rw-r--r--qapi/block-export.json6
-rw-r--r--qapi/char.json27
-rw-r--r--qapi/common.json11
-rw-r--r--qapi/compat.json11
-rw-r--r--qapi/introspect.json28
-rw-r--r--qapi/machine.json249
-rw-r--r--qapi/meson.build3
-rw-r--r--qapi/migration.json83
-rw-r--r--qapi/misc-target.json117
-rw-r--r--qapi/misc.json10
-rw-r--r--qapi/qapi-forward-visitor.c20
-rw-r--r--qapi/qapi-type-helpers.c23
-rw-r--r--qapi/qapi-util.c43
-rw-r--r--qapi/qapi-visit-core.c47
-rw-r--r--qapi/qdev.json49
-rw-r--r--qapi/qmp-dispatch.c23
-rw-r--r--qapi/qmp-registry.c4
-rw-r--r--qapi/qobject-input-visitor.c32
-rw-r--r--qapi/qobject-output-visitor.c21
-rw-r--r--qapi/qom.json69
-rw-r--r--qapi/sockets.json2
-rw-r--r--qapi/trace-events4
-rw-r--r--qapi/transaction.json6
-rw-r--r--qapi/ui.json36
-rw-r--r--qemu-edid.c4
-rw-r--r--qemu-img-cmds.hx2
-rw-r--r--qemu-img.c25
-rw-r--r--qemu-keymap.c1
-rw-r--r--qemu-nbd.c52
-rw-r--r--qemu-options.hx171
-rw-r--r--qga/commands-win32.c274
-rw-r--r--qga/qapi-schema.json3
-rw-r--r--qom/object.c18
-rw-r--r--qom/object_interfaces.c19
-rw-r--r--roms/Makefile3
-rw-r--r--roms/Makefile.edk27
m---------roms/SLOF0
m---------roms/openbios0
m---------roms/opensbi0
m---------roms/seabios0
m---------roms/seabios-hppa0
-rwxr-xr-xscripts/analyze-migration.py6
-rw-r--r--scripts/block-coroutine-wrapper.py12
-rwxr-xr-xscripts/checkpatch.pl5
-rw-r--r--scripts/ci/org.centos/stream/8/build-environment.yml51
-rwxr-xr-xscripts/ci/org.centos/stream/8/x86_64/configure207
-rwxr-xr-xscripts/ci/org.centos/stream/8/x86_64/test-avocado70
-rw-r--r--scripts/ci/org.centos/stream/README17
-rw-r--r--scripts/ci/setup/build-environment.yml38
-rwxr-xr-xscripts/coverity-scan/run-coverity-scan2
-rwxr-xr-xscripts/device-crash-test36
-rwxr-xr-xscripts/entitlement.sh2
-rwxr-xr-xscripts/make-config-poison.sh16
-rwxr-xr-xscripts/make-release7
-rwxr-xr-xscripts/meson-buildoptions.py163
-rw-r--r--scripts/meson-buildoptions.sh284
-rw-r--r--scripts/meson.build2
-rwxr-xr-xscripts/modinfo-collect.py3
-rw-r--r--scripts/mtest2make.py121
-rw-r--r--scripts/qapi/commands.py12
-rw-r--r--scripts/qapi/events.py10
-rw-r--r--scripts/qapi/expr.py3
-rw-r--r--scripts/qapi/gen.py11
-rw-r--r--scripts/qapi/introspect.py19
-rw-r--r--scripts/qapi/mypy.ini5
-rw-r--r--scripts/qapi/parser.py152
-rw-r--r--scripts/qapi/pylintrc4
-rw-r--r--scripts/qapi/schema.py33
-rw-r--r--scripts/qapi/types.py21
-rw-r--r--scripts/qapi/visit.py14
-rwxr-xr-xscripts/qemu-binfmt-conf.sh4
-rwxr-xr-xscripts/render_block_graph.py1
-rw-r--r--scripts/simplebench/bench-example.py2
-rwxr-xr-xscripts/simplebench/bench_block_job.py3
-rwxr-xr-xscripts/tap-driver.pl379
-rwxr-xr-xscripts/tap-merge.pl111
-rw-r--r--semihosting/arm-compat-semi.c2
-rw-r--r--softmmu/cpus.c4
-rw-r--r--softmmu/device_tree.c50
-rw-r--r--softmmu/dma-helpers.c55
-rw-r--r--softmmu/memory.c254
-rw-r--r--softmmu/memory_mapping.c64
-rw-r--r--softmmu/physmem.c87
-rw-r--r--softmmu/qdev-monitor.c143
-rw-r--r--softmmu/trace-events2
-rw-r--r--softmmu/vl.c92
-rw-r--r--storage-daemon/qemu-storage-daemon.c18
-rw-r--r--stubs/meson.build9
-rw-r--r--stubs/qdev.c7
-rw-r--r--stubs/qmp-quit.c8
-rw-r--r--stubs/usb-dev-stub.c8
-rw-r--r--subprojects/libvhost-user/libvhost-user.c1
-rw-r--r--target/alpha/cpu.c7
-rw-r--r--target/alpha/cpu.h26
-rw-r--r--target/alpha/helper.c39
-rw-r--r--target/alpha/mem_helper.c30
-rw-r--r--target/alpha/translate.c213
-rw-r--r--target/arm/cpu.c7
-rw-r--r--target/arm/cpu_tcg.c7
-rw-r--r--target/arm/debug_helper.c23
-rw-r--r--target/arm/gdbstub.c188
-rw-r--r--target/arm/gdbstub64.c140
-rw-r--r--target/arm/helper-a64.c77
-rw-r--r--target/arm/helper.c300
-rw-r--r--target/arm/helper.h1
-rw-r--r--target/arm/hvf/hvf.c7
-rw-r--r--target/arm/internals.h15
-rw-r--r--target/arm/kvm.c1
-rw-r--r--target/arm/m_helper.c8
-rw-r--r--target/arm/machine.c10
-rw-r--r--target/arm/mte_helper.c6
-rw-r--r--target/arm/sve_helper.c2
-rw-r--r--target/arm/syndrome.h5
-rw-r--r--target/arm/tlb_helper.c105
-rw-r--r--target/arm/translate-a32.h7
-rw-r--r--target/arm/translate-a64.c43
-rw-r--r--target/arm/translate-neon.c6
-rw-r--r--target/arm/translate-sve.c27
-rw-r--r--target/arm/translate-vfp.c8
-rw-r--r--target/arm/translate.c123
-rw-r--r--target/avr/translate.c19
-rw-r--r--target/cris/cpu.c4
-rw-r--r--target/cris/cpu.h8
-rw-r--r--target/cris/helper.c18
-rw-r--r--target/cris/meson.build7
-rw-r--r--target/cris/translate.c18
-rw-r--r--target/hexagon/README81
-rw-r--r--target/hexagon/attribs_def.h.inc23
-rw-r--r--target/hexagon/cpu.c103
-rw-r--r--target/hexagon/cpu.h45
-rw-r--r--target/hexagon/decode.c28
-rw-r--r--target/hexagon/gen_dectree_import.c13
-rwxr-xr-xtarget/hexagon/gen_helper_funcs.py115
-rwxr-xr-xtarget/hexagon/gen_helper_protos.py19
-rw-r--r--target/hexagon/gen_semantics.c33
-rw-r--r--target/hexagon/gen_tcg.h15
-rwxr-xr-xtarget/hexagon/gen_tcg_funcs.py272
-rw-r--r--target/hexagon/gen_tcg_hvx.h903
-rw-r--r--target/hexagon/genptr.c227
-rw-r--r--target/hexagon/helper.h18
-rw-r--r--target/hexagon/hex_arch_types.h5
-rwxr-xr-xtarget/hexagon/hex_common.py15
-rw-r--r--target/hexagon/hex_regs.h1
-rw-r--r--target/hexagon/imported/allext.idef25
-rw-r--r--target/hexagon/imported/allext_macros.def25
-rw-r--r--target/hexagon/imported/allextenc.def20
-rw-r--r--target/hexagon/imported/allidefs.def1
-rw-r--r--target/hexagon/imported/encode.def1
-rwxr-xr-xtarget/hexagon/imported/macros.def88
-rw-r--r--target/hexagon/imported/mmvec/encode_ext.def794
-rw-r--r--target/hexagon/imported/mmvec/ext.idef2606
-rwxr-xr-xtarget/hexagon/imported/mmvec/macros.def842
-rw-r--r--target/hexagon/insn.h3
-rw-r--r--target/hexagon/internal.h3
-rw-r--r--target/hexagon/macros.h36
-rw-r--r--target/hexagon/meson.build18
-rw-r--r--target/hexagon/mmvec/decode_ext_mmvec.c236
-rw-r--r--target/hexagon/mmvec/decode_ext_mmvec.h24
-rw-r--r--target/hexagon/mmvec/macros.h354
-rw-r--r--target/hexagon/mmvec/mmvec.h82
-rw-r--r--target/hexagon/mmvec/system_ext_mmvec.c47
-rw-r--r--target/hexagon/mmvec/system_ext_mmvec.h25
-rw-r--r--target/hexagon/op_helper.c298
-rw-r--r--target/hexagon/translate.c317
-rw-r--r--target/hexagon/translate.h61
-rw-r--r--target/hppa/cpu.c2
-rw-r--r--target/hppa/cpu.h7
-rw-r--r--target/hppa/mem_helper.c15
-rw-r--r--target/hppa/meson.build6
-rw-r--r--target/hppa/op_helper.c27
-rw-r--r--target/hppa/translate.c59
-rw-r--r--target/i386/cpu-dump.c4
-rw-r--r--target/i386/cpu.c215
-rw-r--r--target/i386/cpu.h35
-rw-r--r--target/i386/hax/hax-mem.c1
-rw-r--r--target/i386/helper.h1
-rw-r--r--target/i386/kvm/hyperv-proto.h1
-rw-r--r--target/i386/kvm/kvm.c289
-rw-r--r--target/i386/kvm/kvm_i386.h2
-rw-r--r--target/i386/kvm/meson.build8
-rw-r--r--target/i386/kvm/sev-stub.c (renamed from accel/kvm/sev-stub.c)2
-rw-r--r--target/i386/machine.c71
-rw-r--r--target/i386/meson.build4
-rw-r--r--target/i386/monitor.c98
-rw-r--r--target/i386/nvmm/nvmm-all.c11
-rw-r--r--target/i386/sev-stub.c83
-rw-r--r--target/i386/sev-sysemu-stub.c70
-rw-r--r--target/i386/sev.c393
-rw-r--r--target/i386/sev.h62
-rw-r--r--target/i386/sev_i386.h41
-rw-r--r--target/i386/tcg/helper-tcg.h6
-rw-r--r--target/i386/tcg/mem_helper.c4
-rw-r--r--target/i386/tcg/misc_helper.c8
-rw-r--r--target/i386/tcg/sysemu/excp_helper.c25
-rw-r--r--target/i386/tcg/tcg-cpu.c3
-rw-r--r--target/i386/tcg/translate.c57
-rw-r--r--target/i386/tcg/user/excp_helper.c23
-rw-r--r--target/i386/whpx/whpx-all.c1
-rw-r--r--target/m68k/cpu.c2
-rw-r--r--target/m68k/helper.c6
-rw-r--r--target/m68k/op_helper.c8
-rw-r--r--target/m68k/translate.c44
-rw-r--r--target/microblaze/cpu.c2
-rw-r--r--target/microblaze/cpu.h8
-rw-r--r--target/microblaze/helper.c13
-rw-r--r--target/microblaze/translate.c34
-rw-r--r--target/mips/cpu-defs.c.inc2
-rw-r--r--target/mips/cpu.c2
-rw-r--r--target/mips/tcg/meson.build3
-rw-r--r--target/mips/tcg/micromips_translate.c.inc20
-rw-r--r--target/mips/tcg/mips16e_translate.c.inc2
-rw-r--r--target/mips/tcg/msa.decode243
-rw-r--r--target/mips/tcg/msa_helper.c459
-rw-r--r--target/mips/tcg/msa_translate.c2634
-rw-r--r--target/mips/tcg/nanomips_translate.c.inc10
-rw-r--r--target/mips/tcg/tcg-internal.h7
-rw-r--r--target/mips/tcg/translate.c180
-rw-r--r--target/mips/tcg/translate.h1
-rw-r--r--target/mips/tcg/tx79_translate.c8
-rw-r--r--target/mips/tcg/user/meson.build3
-rw-r--r--target/mips/tcg/user/tlb_helper.c59
-rw-r--r--target/nios2/cpu.c12
-rw-r--r--target/nios2/cpu.h8
-rw-r--r--target/nios2/helper.c7
-rw-r--r--target/nios2/translate.c26
-rw-r--r--target/openrisc/cpu.c2
-rw-r--r--target/openrisc/cpu.h7
-rw-r--r--target/openrisc/meson.build2
-rw-r--r--target/openrisc/mmu.c9
-rw-r--r--target/openrisc/translate.c18
-rw-r--r--target/ppc/arch_dump.c2
-rw-r--r--target/ppc/cpu-models.c43
-rw-r--r--target/ppc/cpu-models.h19
-rw-r--r--target/ppc/cpu-qom.h12
-rw-r--r--target/ppc/cpu.c4
-rw-r--r--target/ppc/cpu.h123
-rw-r--r--target/ppc/cpu_init.c718
-rw-r--r--target/ppc/dfp_helper.c168
-rw-r--r--target/ppc/excp_helper.c502
-rw-r--r--target/ppc/fpu_helper.c598
-rw-r--r--target/ppc/gdbstub.c8
-rw-r--r--target/ppc/helper.h158
-rw-r--r--target/ppc/helper_regs.c16
-rw-r--r--target/ppc/insn32.decode351
-rw-r--r--target/ppc/insn64.decode72
-rw-r--r--target/ppc/int_helper.c213
-rw-r--r--target/ppc/internal.h17
-rw-r--r--target/ppc/machine.c138
-rw-r--r--target/ppc/mem_helper.c1
-rw-r--r--target/ppc/meson.build1
-rw-r--r--target/ppc/misc_helper.c9
-rw-r--r--target/ppc/mmu-hash64.c4
-rw-r--r--target/ppc/mmu-hash64.h5
-rw-r--r--target/ppc/mmu-radix64.c60
-rw-r--r--target/ppc/mmu-radix64.h1
-rw-r--r--target/ppc/mmu_common.c224
-rw-r--r--target/ppc/mmu_helper.c131
-rw-r--r--target/ppc/monitor.c9
-rw-r--r--target/ppc/power8-pmu-regs.c.inc325
-rw-r--r--target/ppc/power8-pmu.c320
-rw-r--r--target/ppc/power8-pmu.h24
-rw-r--r--target/ppc/spr_tcg.h16
-rw-r--r--target/ppc/timebase_helper.c10
-rw-r--r--target/ppc/trace-events8
-rw-r--r--target/ppc/translate.c575
-rw-r--r--target/ppc/translate/branch-impl.c.inc33
-rw-r--r--target/ppc/translate/dfp-impl.c.inc419
-rw-r--r--target/ppc/translate/dfp-ops.c.inc165
-rw-r--r--target/ppc/translate/fixedpoint-impl.c.inc239
-rw-r--r--target/ppc/translate/fp-impl.c.inc318
-rw-r--r--target/ppc/translate/fp-ops.c.inc29
-rw-r--r--target/ppc/translate/vector-impl.c.inc56
-rw-r--r--target/ppc/translate/vmx-impl.c.inc565
-rw-r--r--target/ppc/translate/vmx-ops.c.inc10
-rw-r--r--target/ppc/translate/vsx-impl.c.inc797
-rw-r--r--target/ppc/translate/vsx-ops.c.inc9
-rw-r--r--target/ppc/user_only_helper.c15
-rw-r--r--target/riscv/bitmanip_helper.c65
-rw-r--r--target/riscv/cpu.c299
-rw-r--r--target/riscv/cpu.h182
-rw-r--r--target/riscv/cpu_bits.h131
-rw-r--r--target/riscv/cpu_helper.c240
-rw-r--r--target/riscv/csr.c636
-rw-r--r--target/riscv/fpu_helper.c213
-rw-r--r--target/riscv/gdbstub.c199
-rw-r--r--target/riscv/helper.h479
-rw-r--r--target/riscv/insn16.decode27
-rw-r--r--target/riscv/insn32.decode472
-rw-r--r--target/riscv/insn_trans/trans_privileged.c.inc10
-rw-r--r--target/riscv/insn_trans/trans_rva.c.inc25
-rw-r--r--target/riscv/insn_trans/trans_rvb.c.inc552
-rw-r--r--target/riscv/insn_trans/trans_rvd.c.inc6
-rw-r--r--target/riscv/insn_trans/trans_rvf.c.inc2
-rw-r--r--target/riscv/insn_trans/trans_rvh.c.inc4
-rw-r--r--target/riscv/insn_trans/trans_rvi.c.inc758
-rw-r--r--target/riscv/insn_trans/trans_rvm.c.inc222
-rw-r--r--target/riscv/insn_trans/trans_rvv.c.inc2471
-rw-r--r--target/riscv/insn_trans/trans_rvzfh.c.inc537
-rw-r--r--target/riscv/internals.h40
-rw-r--r--target/riscv/m128_helper.c109
-rw-r--r--target/riscv/machine.c107
-rw-r--r--target/riscv/meson.build1
-rw-r--r--target/riscv/monitor.c4
-rw-r--r--target/riscv/op_helper.c47
-rw-r--r--target/riscv/translate.c586
-rw-r--r--target/riscv/vector_helper.c3601
-rw-r--r--target/rx/cpu.h1
-rw-r--r--target/rx/helper.h1
-rw-r--r--target/rx/op_helper.c8
-rw-r--r--target/rx/translate.c12
-rw-r--r--target/s390x/cpu-dump.c3
-rw-r--r--target/s390x/cpu.c7
-rw-r--r--target/s390x/cpu.h9
-rw-r--r--target/s390x/cpu_models.c4
-rw-r--r--target/s390x/kvm/kvm.c4
-rw-r--r--target/s390x/s390x-internal.h12
-rw-r--r--target/s390x/sigp.c30
-rw-r--r--target/s390x/tcg/cc_helper.c38
-rw-r--r--target/s390x/tcg/excp_helper.c45
-rw-r--r--target/s390x/tcg/insn-data.def64
-rw-r--r--target/s390x/tcg/mem_helper.c53
-rw-r--r--target/s390x/tcg/translate.c79
-rw-r--r--target/s390x/tcg/translate_vx.c.inc20
-rw-r--r--target/sh4/cpu.c2
-rw-r--r--target/sh4/cpu.h10
-rw-r--r--target/sh4/helper.c9
-rw-r--r--target/sh4/helper.h1
-rw-r--r--target/sh4/op_helper.c10
-rw-r--r--target/sh4/translate.c78
-rw-r--r--target/sparc/cpu.c2
-rw-r--r--target/sparc/ldst_helper.c38
-rw-r--r--target/sparc/meson.build2
-rw-r--r--target/sparc/mmu_helper.c115
-rw-r--r--target/sparc/translate.c36
-rw-r--r--target/tricore/helper.h1
-rw-r--r--target/tricore/op_helper.c7
-rw-r--r--target/tricore/translate.c18
-rw-r--r--target/xtensa/cores.list9
-rw-r--r--target/xtensa/cpu.c2
-rw-r--r--target/xtensa/cpu.h2
-rw-r--r--target/xtensa/helper.c22
-rwxr-xr-xtarget/xtensa/import_core.sh3
-rw-r--r--target/xtensa/meson.build4
-rw-r--r--target/xtensa/mmu_helper.c2
-rw-r--r--target/xtensa/translate.c29
-rw-r--r--tcg/README6
-rw-r--r--tcg/aarch64/tcg-target.c.inc20
-rw-r--r--tcg/arm/tcg-target.c.inc37
-rw-r--r--tcg/i386/tcg-target.c.inc26
-rw-r--r--tcg/loongarch64/tcg-insn-defs.c.inc979
-rw-r--r--tcg/loongarch64/tcg-target-con-set.h31
-rw-r--r--tcg/loongarch64/tcg-target-con-str.h28
-rw-r--r--tcg/loongarch64/tcg-target.c.inc1677
-rw-r--r--tcg/loongarch64/tcg-target.h180
-rw-r--r--tcg/mips/tcg-target.c.inc28
-rw-r--r--tcg/optimize.c2597
-rw-r--r--tcg/ppc/tcg-target.c.inc34
-rw-r--r--tcg/riscv/tcg-target.c.inc26
-rw-r--r--tcg/s390x/tcg-target-con-set.h (renamed from tcg/s390/tcg-target-con-set.h)7
-rw-r--r--tcg/s390x/tcg-target-con-str.h (renamed from tcg/s390/tcg-target-con-str.h)1
-rw-r--r--tcg/s390x/tcg-target.c.inc (renamed from tcg/s390/tcg-target.c.inc)968
-rw-r--r--tcg/s390x/tcg-target.h (renamed from tcg/s390/tcg-target.h)91
-rw-r--r--tcg/s390x/tcg-target.opc.h15
-rw-r--r--tcg/sparc/tcg-target.c.inc36
-rw-r--r--tcg/tcg-ldst.c.inc2
-rw-r--r--tcg/tcg-op-vec.c37
-rw-r--r--tcg/tcg-op.c67
-rw-r--r--tcg/tcg.c119
-rw-r--r--tcg/tci.c31
-rw-r--r--tests/Makefile.include40
-rw-r--r--tests/acceptance/README.rst10
-rw-r--r--tests/avocado/README.rst10
-rw-r--r--tests/avocado/avocado_qemu/__init__.py (renamed from tests/acceptance/avocado_qemu/__init__.py)163
-rw-r--r--tests/avocado/boot_linux.py (renamed from tests/acceptance/boot_linux.py)0
-rw-r--r--tests/avocado/boot_linux_console.py (renamed from tests/acceptance/boot_linux_console.py)11
-rw-r--r--tests/avocado/boot_xen.py (renamed from tests/acceptance/boot_xen.py)0
-rw-r--r--tests/avocado/cpu_queries.py (renamed from tests/acceptance/cpu_queries.py)4
-rw-r--r--tests/avocado/empty_cpu_model.py (renamed from tests/acceptance/empty_cpu_model.py)4
-rw-r--r--tests/avocado/hotplug_cpu.py (renamed from tests/acceptance/hotplug_cpu.py)0
-rw-r--r--tests/avocado/info_usernet.py (renamed from tests/acceptance/info_usernet.py)4
-rw-r--r--tests/avocado/intel_iommu.py (renamed from tests/acceptance/intel_iommu.py)0
-rw-r--r--tests/avocado/linux_initrd.py (renamed from tests/acceptance/linux_initrd.py)6
-rw-r--r--tests/avocado/linux_ssh_mips_malta.py (renamed from tests/acceptance/linux_ssh_mips_malta.py)5
-rw-r--r--tests/avocado/load_bflt.py54
-rw-r--r--tests/avocado/machine_arm_canona1100.py (renamed from tests/acceptance/machine_arm_canona1100.py)4
-rw-r--r--tests/avocado/machine_arm_integratorcp.py (renamed from tests/acceptance/machine_arm_integratorcp.py)4
-rw-r--r--tests/avocado/machine_arm_n8x0.py (renamed from tests/acceptance/machine_arm_n8x0.py)4
-rw-r--r--tests/avocado/machine_avr6.py (renamed from tests/acceptance/machine_avr6.py)6
-rw-r--r--tests/avocado/machine_m68k_nextcube.py (renamed from tests/acceptance/machine_m68k_nextcube.py)4
-rw-r--r--tests/avocado/machine_microblaze.py (renamed from tests/acceptance/machine_microblaze.py)4
-rw-r--r--tests/avocado/machine_mips_fuloong2e.py (renamed from tests/acceptance/machine_mips_fuloong2e.py)4
-rw-r--r--tests/avocado/machine_mips_loongson3v.py (renamed from tests/acceptance/machine_mips_loongson3v.py)4
-rw-r--r--tests/avocado/machine_mips_malta.py (renamed from tests/acceptance/machine_mips_malta.py)4
-rw-r--r--tests/avocado/machine_rx_gdbsim.py (renamed from tests/acceptance/machine_rx_gdbsim.py)4
-rw-r--r--tests/avocado/machine_s390_ccw_virtio.py (renamed from tests/acceptance/machine_s390_ccw_virtio.py)4
-rw-r--r--tests/avocado/machine_sparc64_sun4u.py (renamed from tests/acceptance/machine_sparc64_sun4u.py)0
-rw-r--r--tests/avocado/machine_sparc_leon3.py (renamed from tests/acceptance/machine_sparc_leon3.py)4
-rw-r--r--tests/avocado/migration.py (renamed from tests/acceptance/migration.py)4
-rw-r--r--tests/avocado/multiprocess.py (renamed from tests/acceptance/multiprocess.py)4
-rw-r--r--tests/avocado/pc_cpu_hotplug_props.py (renamed from tests/acceptance/pc_cpu_hotplug_props.py)4
-rw-r--r--tests/avocado/ppc_405.py42
-rw-r--r--tests/avocado/ppc_74xx.py123
-rw-r--r--tests/avocado/ppc_bamboo.py39
-rw-r--r--tests/avocado/ppc_mpc8544ds.py (renamed from tests/acceptance/ppc_mpc8544ds.py)4
-rw-r--r--tests/avocado/ppc_prep_40p.py (renamed from tests/acceptance/ppc_prep_40p.py)4
-rw-r--r--tests/avocado/ppc_pseries.py (renamed from tests/acceptance/ppc_pseries.py)4
-rw-r--r--tests/avocado/ppc_virtex_ml507.py (renamed from tests/acceptance/ppc_virtex_ml507.py)4
-rw-r--r--tests/avocado/replay_kernel.py (renamed from tests/acceptance/replay_kernel.py)0
-rw-r--r--tests/avocado/replay_linux.py (renamed from tests/acceptance/replay_linux.py)0
-rw-r--r--tests/avocado/reverse_debugging.py (renamed from tests/acceptance/reverse_debugging.py)0
-rw-r--r--tests/avocado/smmu.py (renamed from tests/acceptance/smmu.py)0
-rw-r--r--tests/avocado/tcg_plugins.py (renamed from tests/acceptance/tcg_plugins.py)2
-rw-r--r--tests/avocado/tesseract_utils.py (renamed from tests/acceptance/tesseract_utils.py)0
-rw-r--r--tests/avocado/version.py (renamed from tests/acceptance/version.py)4
-rw-r--r--tests/avocado/virtio-gpu.py (renamed from tests/acceptance/virtio-gpu.py)4
-rw-r--r--tests/avocado/virtio_check_params.py (renamed from tests/acceptance/virtio_check_params.py)4
-rw-r--r--tests/avocado/virtio_version.py (renamed from tests/acceptance/virtio_version.py)4
-rw-r--r--tests/avocado/virtiofs_submounts.py (renamed from tests/acceptance/virtiofs_submounts.py)59
-rw-r--r--tests/avocado/virtiofs_submounts.py.data/cleanup.sh (renamed from tests/acceptance/virtiofs_submounts.py.data/cleanup.sh)0
-rw-r--r--tests/avocado/virtiofs_submounts.py.data/guest-cleanup.sh (renamed from tests/acceptance/virtiofs_submounts.py.data/guest-cleanup.sh)0
-rw-r--r--tests/avocado/virtiofs_submounts.py.data/guest.sh (renamed from tests/acceptance/virtiofs_submounts.py.data/guest.sh)0
-rw-r--r--tests/avocado/virtiofs_submounts.py.data/host.sh (renamed from tests/acceptance/virtiofs_submounts.py.data/host.sh)0
-rw-r--r--tests/avocado/vnc.py (renamed from tests/acceptance/vnc.py)4
-rw-r--r--tests/avocado/x86_cpu_model_versions.py (renamed from tests/acceptance/x86_cpu_model_versions.py)4
-rw-r--r--tests/data/acpi/q35/APIC.xapicbin0 -> 2686 bytes
-rw-r--r--tests/data/acpi/q35/DMAR.dmarbin0 -> 120 bytes
-rw-r--r--tests/data/acpi/q35/DSDTbin8289 -> 8289 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.acpihmatbin9614 -> 9614 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.bridgebin11003 -> 11003 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.cphpbin8753 -> 8753 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.dimmpxmbin9943 -> 9943 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.ipmibtbin8364 -> 8364 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.ivrsbin0 -> 8306 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.memhpbin9648 -> 9648 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.mmio64bin9419 -> 9419 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.multi-bridgebin0 -> 8583 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.nohpetbin8147 -> 8147 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.numamembin8295 -> 8295 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.tis.tpm12bin8894 -> 8900 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.tis.tpm2bin8894 -> 8921 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.viotbin0 -> 9398 bytes
-rw-r--r--tests/data/acpi/q35/DSDT.xapicbin0 -> 35652 bytes
-rw-r--r--tests/data/acpi/q35/FACP.slicbin0 -> 244 bytes
-rw-r--r--tests/data/acpi/q35/FACP.xapicbin0 -> 244 bytes
-rw-r--r--tests/data/acpi/q35/IVRS.ivrsbin0 -> 104 bytes
-rw-r--r--tests/data/acpi/q35/SLIC.slicbin0 -> 36 bytes
-rw-r--r--tests/data/acpi/q35/SRAT.xapicbin0 -> 5080 bytes
-rw-r--r--tests/data/acpi/q35/VIOT.viotbin0 -> 112 bytes
-rwxr-xr-xtests/data/acpi/rebuild-expected-aml.sh22
-rw-r--r--tests/data/acpi/virt/DBG2bin0 -> 87 bytes
-rw-r--r--tests/data/acpi/virt/IORTbin124 -> 128 bytes
-rw-r--r--tests/data/acpi/virt/IORT.memhpbin124 -> 128 bytes
-rw-r--r--tests/data/acpi/virt/IORT.numamembin124 -> 128 bytes
-rw-r--r--tests/data/acpi/virt/IORT.pxbbin124 -> 128 bytes
-rw-r--r--tests/data/acpi/virt/PPTTbin0 -> 76 bytes
-rw-r--r--tests/data/acpi/virt/VIOTbin0 -> 88 bytes
-rw-r--r--tests/docker/Makefile.include50
-rwxr-xr-xtests/docker/common.rc10
-rw-r--r--tests/docker/dockerfiles/alpine.docker176
-rw-r--r--tests/docker/dockerfiles/centos8.docker243
-rwxr-xr-xtests/docker/dockerfiles/debian-microblaze-cross.d/build-toolchain.sh88
-rw-r--r--tests/docker/dockerfiles/debian-native.docker49
-rwxr-xr-xtests/docker/dockerfiles/debian-nios2-cross.d/build-toolchain.sh87
-rw-r--r--tests/docker/dockerfiles/debian-riscv64-cross.docker46
-rw-r--r--tests/docker/dockerfiles/debian-toolchain.docker36
-rw-r--r--tests/docker/dockerfiles/debian-tricore-cross.docker1
-rw-r--r--tests/docker/dockerfiles/fedora-i386-cross.docker12
-rw-r--r--tests/docker/dockerfiles/fedora.docker262
-rw-r--r--tests/docker/dockerfiles/opensuse-leap.docker245
-rw-r--r--tests/docker/dockerfiles/ubuntu.docker71
-rw-r--r--tests/docker/dockerfiles/ubuntu1804.docker254
-rw-r--r--tests/docker/dockerfiles/ubuntu2004.docker257
-rw-r--r--tests/fp/meson.build2
-rw-r--r--tests/lcitool/Makefile.include17
m---------tests/lcitool/libvirt-ci0
-rw-r--r--tests/lcitool/projects/qemu.yml116
-rwxr-xr-xtests/lcitool/refresh96
-rw-r--r--tests/meson.build4
-rw-r--r--tests/plugin/insn.c37
-rw-r--r--tests/plugin/syscall.c8
-rw-r--r--tests/qapi-schema/doc-bad-feature.err2
-rw-r--r--tests/qapi-schema/doc-empty-symbol.err2
-rw-r--r--tests/qapi-schema/doc-good.json13
-rw-r--r--tests/qapi-schema/doc-good.out3
-rw-r--r--tests/qapi-schema/doc-good.txt3
-rw-r--r--tests/qapi-schema/enum-dict-member-unknown.err2
-rw-r--r--tests/qapi-schema/meson.build8
-rw-r--r--tests/qapi-schema/qapi-schema-test.json10
-rw-r--r--tests/qapi-schema/qapi-schema-test.out6
-rwxr-xr-xtests/qapi-schema/test-qapi.py1
-rwxr-xr-xtests/qemu-iotests/03011
-rwxr-xr-xtests/qemu-iotests/0407
-rw-r--r--tests/qemu-iotests/049.out6
-rwxr-xr-xtests/qemu-iotests/0512
-rw-r--r--tests/qemu-iotests/051.pc.out4
-rwxr-xr-xtests/qemu-iotests/08531
-rw-r--r--tests/qemu-iotests/085.out33
-rw-r--r--tests/qemu-iotests/109.out60
-rwxr-xr-xtests/qemu-iotests/1221
-rw-r--r--tests/qemu-iotests/122.out2
-rwxr-xr-xtests/qemu-iotests/12918
-rw-r--r--tests/qemu-iotests/141.out2
-rwxr-xr-xtests/qemu-iotests/14229
-rw-r--r--tests/qemu-iotests/142.out18
-rwxr-xr-xtests/qemu-iotests/14923
-rwxr-xr-xtests/qemu-iotests/2064
-rw-r--r--tests/qemu-iotests/206.out8
-rwxr-xr-xtests/qemu-iotests/2104
-rw-r--r--tests/qemu-iotests/210.out6
-rwxr-xr-xtests/qemu-iotests/2182
-rwxr-xr-xtests/qemu-iotests/2352
-rw-r--r--tests/qemu-iotests/237.out6
-rwxr-xr-xtests/qemu-iotests/2456
-rwxr-xr-xtests/qemu-iotests/2552
-rw-r--r--tests/qemu-iotests/273.out4
-rwxr-xr-xtests/qemu-iotests/2833
-rw-r--r--tests/qemu-iotests/283.out2
-rwxr-xr-xtests/qemu-iotests/2872
-rwxr-xr-xtests/qemu-iotests/297119
-rwxr-xr-xtests/qemu-iotests/30014
-rwxr-xr-xtests/qemu-iotests/30827
-rw-r--r--tests/qemu-iotests/308.out2
-rwxr-xr-xtests/qemu-iotests/31016
-rwxr-xr-xtests/qemu-iotests/check15
-rw-r--r--tests/qemu-iotests/iotests.py69
-rw-r--r--tests/qemu-iotests/linters.py105
-rw-r--r--tests/qemu-iotests/meson.build5
-rw-r--r--tests/qemu-iotests/mypy.ini12
-rw-r--r--tests/qemu-iotests/pylintrc22
-rw-r--r--tests/qemu-iotests/socket_scm_helper.c136
-rw-r--r--tests/qemu-iotests/testenv.py23
-rw-r--r--tests/qemu-iotests/testrunner.py111
-rwxr-xr-xtests/qemu-iotests/tests/image-fleecing5
-rwxr-xr-xtests/qemu-iotests/tests/migrate-bitmaps-test50
-rwxr-xr-xtests/qemu-iotests/tests/mirror-ready-cancel-error143
-rw-r--r--tests/qemu-iotests/tests/mirror-ready-cancel-error.out5
-rwxr-xr-xtests/qemu-iotests/tests/mirror-top-perms25
-rwxr-xr-xtests/qemu-iotests/tests/nbd-reconnect-on-open71
-rw-r--r--tests/qemu-iotests/tests/nbd-reconnect-on-open.out11
-rw-r--r--tests/qemu-iotests/tests/qsd-jobs.out2
-rwxr-xr-xtests/qemu-iotests/tests/stream-error-on-reset140
-rw-r--r--tests/qemu-iotests/tests/stream-error-on-reset.out5
-rw-r--r--tests/qtest/acpi-utils.c14
-rw-r--r--tests/qtest/am53c974-test.c66
-rw-r--r--tests/qtest/arm-cpu-features.c29
-rw-r--r--tests/qtest/bios-tables-test.c176
-rw-r--r--tests/qtest/boot-order-test.c5
-rw-r--r--tests/qtest/boot-serial-test.c13
-rw-r--r--tests/qtest/cdrom-test.c68
-rw-r--r--tests/qtest/dbus-display-test.c257
-rw-r--r--tests/qtest/dbus-vmstate1.xml12
-rw-r--r--tests/qtest/device-plug-test.c19
-rw-r--r--tests/qtest/endianness-test.c5
-rw-r--r--tests/qtest/fdc-test.c38
-rw-r--r--tests/qtest/fuzz-lsi53c895a-test.c52
-rw-r--r--tests/qtest/fuzz-megasas-test.c30
-rw-r--r--tests/qtest/fuzz/meson.build6
-rw-r--r--tests/qtest/hd-geo-test.c8
-rw-r--r--tests/qtest/ivshmem-test.c5
-rw-r--r--tests/qtest/libqos/ahci.c6
-rw-r--r--tests/qtest/libqos/libqtest.h34
-rw-r--r--tests/qtest/libqos/meson.build2
-rw-r--r--tests/qtest/libqos/pci.c119
-rw-r--r--tests/qtest/libqos/pci.h1
-rw-r--r--tests/qtest/libqos/qgraph.c2
-rw-r--r--tests/qtest/libqos/sdhci-cmd.c116
-rw-r--r--tests/qtest/libqos/sdhci-cmd.h70
-rw-r--r--tests/qtest/libqos/virtio-iommu.c126
-rw-r--r--tests/qtest/libqos/virtio-iommu.h40
-rw-r--r--tests/qtest/libqtest.c169
-rw-r--r--tests/qtest/meson.build71
-rw-r--r--tests/qtest/migration-test.c15
-rw-r--r--tests/qtest/numa-test.c6
-rw-r--r--tests/qtest/prom-env-test.c8
-rw-r--r--tests/qtest/qmp-cmd-test.c10
-rw-r--r--tests/qtest/test-filter-mirror.c10
-rw-r--r--tests/qtest/test-filter-redirector.c20
-rw-r--r--tests/qtest/test-netfilter.c8
-rw-r--r--tests/qtest/test-x86-cpuid-compat.c85
-rw-r--r--tests/qtest/vhost-user-blk-test.c4
-rw-r--r--tests/qtest/virtio-iommu-test.c326
-rw-r--r--tests/qtest/virtio-net-failover.c1354
-rw-r--r--tests/qtest/virtio-net-test.c2
-rw-r--r--tests/tcg/Makefile.target14
-rw-r--r--tests/tcg/aarch64/Makefile.target4
-rw-r--r--tests/tcg/aarch64/pcalign-a64.c37
-rw-r--r--tests/tcg/arm/Makefile.target4
-rw-r--r--tests/tcg/arm/pcalign-a32.c46
-rwxr-xr-xtests/tcg/configure.sh40
-rw-r--r--tests/tcg/hexagon/Makefile.target2
-rw-r--r--tests/tcg/hexagon/float_convs.ref152
-rw-r--r--tests/tcg/hexagon/float_madds.ref48
-rw-r--r--tests/tcg/hexagon/hex_sigsegv.c106
-rw-r--r--tests/tcg/hexagon/hvx_histogram.c88
-rw-r--r--tests/tcg/hexagon/hvx_histogram_input.h717
-rw-r--r--tests/tcg/hexagon/hvx_histogram_row.S294
-rw-r--r--tests/tcg/hexagon/hvx_histogram_row.h24
-rw-r--r--tests/tcg/hexagon/hvx_misc.c469
-rw-r--r--tests/tcg/hexagon/overflow.c107
-rw-r--r--tests/tcg/hexagon/scatter_gather.c1011
-rw-r--r--tests/tcg/hexagon/vector_add_int.c61
-rw-r--r--tests/tcg/hppa/Makefile.target12
-rw-r--r--tests/tcg/hppa/stby.c87
-rw-r--r--tests/tcg/i386/Makefile.target3
-rw-r--r--tests/tcg/multiarch/Makefile.target34
-rw-r--r--tests/tcg/multiarch/float_convs.c2
-rw-r--r--tests/tcg/multiarch/float_madds.c2
-rw-r--r--tests/tcg/multiarch/gdbstub/test-thread-breakpoint.py60
-rw-r--r--tests/tcg/multiarch/libs/float_helpers.c (renamed from tests/tcg/multiarch/float_helpers.c)2
-rw-r--r--tests/tcg/multiarch/linux/linux-test.c (renamed from tests/tcg/multiarch/linux-test.c)0
-rw-r--r--tests/tcg/multiarch/sha1.c1
-rw-r--r--tests/tcg/nios2/Makefile.target11
-rw-r--r--tests/tcg/ppc64/Makefile.target7
-rw-r--r--tests/tcg/ppc64le/Makefile.target19
-rw-r--r--tests/tcg/ppc64le/float_convs.ref748
-rw-r--r--tests/tcg/ppc64le/float_madds.ref768
-rw-r--r--tests/tcg/ppc64le/mtfsf.c61
-rw-r--r--tests/tcg/ppc64le/non_signalling_xscv.c37
-rw-r--r--tests/tcg/ppc64le/signal_save_restore_xer.c42
-rw-r--r--tests/tcg/s390x/Makefile.target1
-rw-r--r--tests/tcg/s390x/shift.c270
-rw-r--r--tests/tcg/sh4/Makefile.target13
-rw-r--r--tests/tcg/x86_64/Makefile.target4
-rw-r--r--tests/tcg/x86_64/system/kernel.ld5
-rw-r--r--tests/unit/check-qom-proplist.c2
-rw-r--r--tests/unit/meson.build8
-rw-r--r--tests/unit/test-aio.c4
-rw-r--r--tests/unit/test-bdrv-drain.c28
-rw-r--r--tests/unit/test-block-iothread.c21
-rw-r--r--tests/unit/test-blockjob-txn.c10
-rw-r--r--tests/unit/test-blockjob.c2
-rw-r--r--tests/unit/test-div128.c197
-rw-r--r--tests/unit/test-fdmon-epoll.c4
-rw-r--r--tests/unit/test-smp-parse.c749
-rw-r--r--tests/unit/test-util-sockets.c6
-rw-r--r--tests/vm/Makefile.include29
-rwxr-xr-xtests/vm/freebsd8
-rwxr-xr-xtests/vm/openbsd7
-rw-r--r--tools/virtiofsd/fuse_virtio.c80
-rw-r--r--tools/virtiofsd/passthrough_ll.c17
-rw-r--r--trace-events18
-rw-r--r--trace/mem.h63
-rw-r--r--trace/meson.build19
-rw-r--r--trace/simple.c2
-rw-r--r--ui/clipboard.c36
-rw-r--r--ui/cocoa.m40
-rw-r--r--ui/console.c414
-rw-r--r--ui/curses.c4
-rw-r--r--ui/dbus-chardev.c296
-rw-r--r--ui/dbus-clipboard.c457
-rw-r--r--ui/dbus-console.c497
-rw-r--r--ui/dbus-display1.xml761
-rw-r--r--ui/dbus-error.c48
-rw-r--r--ui/dbus-listener.c486
-rw-r--r--ui/dbus-module.c35
-rw-r--r--ui/dbus.c483
-rw-r--r--ui/dbus.h144
-rw-r--r--ui/egl-context.c6
-rw-r--r--ui/egl-headless.c20
-rw-r--r--ui/egl-helpers.c25
-rw-r--r--ui/gtk-clipboard.c44
-rw-r--r--ui/gtk-egl.c62
-rw-r--r--ui/gtk-gl-area.c69
-rw-r--r--ui/gtk.c120
-rw-r--r--ui/input-legacy.c15
-rw-r--r--ui/meson.build32
-rw-r--r--ui/sdl2-gl.c12
-rw-r--r--ui/sdl2.c21
-rw-r--r--ui/spice-core.c50
-rw-r--r--ui/spice-display.c38
-rw-r--r--ui/trace-events15
-rw-r--r--ui/util.c75
-rw-r--r--ui/vdagent.c94
-rw-r--r--ui/vnc-clipboard.c29
-rw-r--r--ui/vnc.c8
-rw-r--r--util/aio-posix.c89
-rw-r--r--util/aio-posix.h1
-rw-r--r--util/aio-win32.c4
-rw-r--r--util/async.c10
-rw-r--r--util/compatfd.c5
-rw-r--r--util/host-utils.c137
-rw-r--r--util/int128.c147
-rw-r--r--util/iova-tree.c12
-rw-r--r--util/main-loop.c4
-rw-r--r--util/meson.build12
-rw-r--r--util/oslib-posix.c232
-rw-r--r--util/qemu-coroutine-io.c5
-rw-r--r--util/qemu-option.c4
-rw-r--r--util/qemu-sockets.c6
-rw-r--r--util/qemu-thread-posix.c5
-rw-r--r--util/rcu.c19
-rw-r--r--util/transactions.c8
-rw-r--r--util/vhost-user-server.c11
1813 files changed, 86811 insertions, 38160 deletions
diff --git a/.github/lockdown.yml b/.github/lockdown.yml
deleted file mode 100644
index d3546bd2bc..0000000000
--- a/.github/lockdown.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown
-
-# Close issues and pull requests
-close: true
-
-# Lock issues and pull requests
-lock: true
-
-issues:
- comment: |
- Thank you for your interest in the QEMU project.
-
- This repository is a read-only mirror of the project's repostories hosted
- at https://gitlab.com/qemu-project/qemu.git.
- The project does not process issues filed on GitHub.
-
- The project issues are tracked on GitLab:
- https://gitlab.com/qemu-project/qemu/-/issues
-
- QEMU welcomes bug report contributions. You can file new ones on:
- https://gitlab.com/qemu-project/qemu/-/issues/new
-
-pulls:
- comment: |
- Thank you for your interest in the QEMU project.
-
- This repository is a read-only mirror of the project's repostories hosted
- on https://gitlab.com/qemu-project/qemu.git.
- The project does not process merge requests filed on GitHub.
-
- QEMU welcomes contributions of code (either fixing bugs or adding new
- functionality). However, we get a lot of patches, and so we have some
- guidelines about contributing on the project website:
- https://www.qemu.org/contribute/
diff --git a/.github/workflows/lockdown.yml b/.github/workflows/lockdown.yml
new file mode 100644
index 0000000000..ad8b8f7e30
--- /dev/null
+++ b/.github/workflows/lockdown.yml
@@ -0,0 +1,30 @@
+# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown
+
+name: 'Repo Lockdown'
+
+on:
+ pull_request_target:
+ types: opened
+
+permissions:
+ pull-requests: write
+
+jobs:
+ action:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: dessant/repo-lockdown@v2
+ with:
+ pull-comment: |
+ Thank you for your interest in the QEMU project.
+
+ This repository is a read-only mirror of the project's repostories hosted
+ on https://gitlab.com/qemu-project/qemu.git.
+ The project does not process merge requests filed on GitHub.
+
+ QEMU welcomes contributions of code (either fixing bugs or adding new
+ functionality). However, we get a lot of patches, and so we have some
+ guidelines about contributing on the project website:
+ https://www.qemu.org/contribute/
+ lock-pull: true
+ close-pull: true
diff --git a/.gitlab-ci.d/buildtest-template.yml b/.gitlab-ci.d/buildtest-template.yml
index fcbcc4e627..2c7980a4f6 100644
--- a/.gitlab-ci.d/buildtest-template.yml
+++ b/.gitlab-ci.d/buildtest-template.yml
@@ -37,7 +37,7 @@
# Avoid recompiling by hiding ninja with NINJA=":"
- make NINJA=":" $MAKE_CHECK_ARGS
-.acceptance_test_job_template:
+.avocado_test_job_template:
extends: .native_test_job_template
cache:
key: "${CI_JOB_NAME}-cache"
diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
index 5c378e35f9..8f2a3c8f5b 100644
--- a/.gitlab-ci.d/buildtest.yml
+++ b/.gitlab-ci.d/buildtest.yml
@@ -24,16 +24,16 @@ check-system-alpine:
artifacts: true
variables:
IMAGE: alpine
- MAKE_CHECK_ARGS: check
+ MAKE_CHECK_ARGS: check-unit check-qtest
-acceptance-system-alpine:
- extends: .acceptance_test_job_template
+avocado-system-alpine:
+ extends: .avocado_test_job_template
needs:
- job: build-system-alpine
artifacts: true
variables:
IMAGE: alpine
- MAKE_CHECK_ARGS: check-acceptance
+ MAKE_CHECK_ARGS: check-avocado
build-system-ubuntu:
extends: .native_build_job_template
@@ -59,14 +59,14 @@ check-system-ubuntu:
IMAGE: ubuntu2004
MAKE_CHECK_ARGS: check
-acceptance-system-ubuntu:
- extends: .acceptance_test_job_template
+avocado-system-ubuntu:
+ extends: .avocado_test_job_template
needs:
- job: build-system-ubuntu
artifacts: true
variables:
IMAGE: ubuntu2004
- MAKE_CHECK_ARGS: check-acceptance
+ MAKE_CHECK_ARGS: check-avocado
build-system-debian:
extends: .native_build_job_template
@@ -91,14 +91,25 @@ check-system-debian:
IMAGE: debian-amd64
MAKE_CHECK_ARGS: check
-acceptance-system-debian:
- extends: .acceptance_test_job_template
+avocado-system-debian:
+ extends: .avocado_test_job_template
+ needs:
+ - job: build-system-debian
+ artifacts: true
+ variables:
+ IMAGE: debian-amd64
+ MAKE_CHECK_ARGS: check-avocado
+
+crash-test-debian:
+ extends: .native_test_job_template
needs:
- job: build-system-debian
artifacts: true
variables:
IMAGE: debian-amd64
- MAKE_CHECK_ARGS: check-acceptance
+ script:
+ - cd build
+ - scripts/device-crash-test -q ./qemu-system-i386
build-system-fedora:
extends: .native_build_job_template
@@ -125,14 +136,26 @@ check-system-fedora:
IMAGE: fedora
MAKE_CHECK_ARGS: check
-acceptance-system-fedora:
- extends: .acceptance_test_job_template
+avocado-system-fedora:
+ extends: .avocado_test_job_template
needs:
- job: build-system-fedora
artifacts: true
variables:
IMAGE: fedora
- MAKE_CHECK_ARGS: check-acceptance
+ MAKE_CHECK_ARGS: check-avocado
+
+crash-test-fedora:
+ extends: .native_test_job_template
+ needs:
+ - job: build-system-fedora
+ artifacts: true
+ variables:
+ IMAGE: fedora
+ script:
+ - cd build
+ - scripts/device-crash-test -q ./qemu-system-ppc
+ - scripts/device-crash-test -q ./qemu-system-riscv32
build-system-centos:
extends: .native_build_job_template
@@ -141,7 +164,7 @@ build-system-centos:
variables:
IMAGE: centos8
CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
- --enable-modules --enable-trace-backends=dtrace
+ --enable-modules --enable-trace-backends=dtrace --enable-docs
TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
MAKE_CHECK_ARGS: check-build
@@ -159,14 +182,14 @@ check-system-centos:
IMAGE: centos8
MAKE_CHECK_ARGS: check
-acceptance-system-centos:
- extends: .acceptance_test_job_template
+avocado-system-centos:
+ extends: .avocado_test_job_template
needs:
- job: build-system-centos
artifacts: true
variables:
IMAGE: centos8
- MAKE_CHECK_ARGS: check-acceptance
+ MAKE_CHECK_ARGS: check-avocado
build-system-opensuse:
extends: .native_build_job_template
@@ -191,14 +214,14 @@ check-system-opensuse:
IMAGE: opensuse-leap
MAKE_CHECK_ARGS: check
-acceptance-system-opensuse:
- extends: .acceptance_test_job_template
+avocado-system-opensuse:
+ extends: .avocado_test_job_template
needs:
- job: build-system-opensuse
artifacts: true
variables:
IMAGE: opensuse-leap
- MAKE_CHECK_ARGS: check-acceptance
+ MAKE_CHECK_ARGS: check-avocado
# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
@@ -317,7 +340,7 @@ clang-user:
# This can be accomplished by using -enable-slirp=git, which avoids the use of
# a system-wide version of the library
#
-# Split in three sets of build/check/acceptance to limit the execution time of each
+# Split in three sets of build/check/avocado to limit the execution time of each
# job
build-cfi-aarch64:
extends: .native_build_job_template
@@ -352,14 +375,14 @@ check-cfi-aarch64:
IMAGE: fedora
MAKE_CHECK_ARGS: check
-acceptance-cfi-aarch64:
- extends: .acceptance_test_job_template
+avocado-cfi-aarch64:
+ extends: .avocado_test_job_template
needs:
- job: build-cfi-aarch64
artifacts: true
variables:
IMAGE: fedora
- MAKE_CHECK_ARGS: check-acceptance
+ MAKE_CHECK_ARGS: check-avocado
build-cfi-ppc64-s390x:
extends: .native_build_job_template
@@ -394,14 +417,14 @@ check-cfi-ppc64-s390x:
IMAGE: fedora
MAKE_CHECK_ARGS: check
-acceptance-cfi-ppc64-s390x:
- extends: .acceptance_test_job_template
+avocado-cfi-ppc64-s390x:
+ extends: .avocado_test_job_template
needs:
- job: build-cfi-ppc64-s390x
artifacts: true
variables:
IMAGE: fedora
- MAKE_CHECK_ARGS: check-acceptance
+ MAKE_CHECK_ARGS: check-avocado
build-cfi-x86_64:
extends: .native_build_job_template
@@ -430,14 +453,14 @@ check-cfi-x86_64:
IMAGE: fedora
MAKE_CHECK_ARGS: check
-acceptance-cfi-x86_64:
- extends: .acceptance_test_job_template
+avocado-cfi-x86_64:
+ extends: .avocado_test_job_template
needs:
- job: build-cfi-x86_64
artifacts: true
variables:
IMAGE: fedora
- MAKE_CHECK_ARGS: check-acceptance
+ MAKE_CHECK_ARGS: check-avocado
tsan-build:
extends: .native_build_job_template
@@ -575,7 +598,6 @@ build-without-default-features:
CONFIGURE_ARGS:
--without-default-features
--disable-capstone
- --disable-fdt
--disable-pie
--disable-qom-cast-debug
--disable-slirp
diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml
index 675db69622..b96b22e269 100644
--- a/.gitlab-ci.d/cirrus.yml
+++ b/.gitlab-ci.d/cirrus.yml
@@ -14,6 +14,7 @@
stage: build
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
needs: []
+ timeout: 80m
allow_failure: true
script:
- source .gitlab-ci.d/cirrus/$NAME.vars
@@ -35,11 +36,14 @@
-e "s|[@]PIP3@|$PIP3|g"
-e "s|[@]PYPI_PKGS@|$PYPI_PKGS|g"
-e "s|[@]CONFIGURE_ARGS@|$CONFIGURE_ARGS|g"
- -e "s|[@]TEST_TARGETSS@|$TEST_TARGETSS|g"
+ -e "s|[@]TEST_TARGETS@|$TEST_TARGETS|g"
<.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
- cat .gitlab-ci.d/cirrus/$NAME.yml
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
rules:
+ # Allow on 'staging' branch and 'stable-X.Y-staging' branches only
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
+ when: never
- if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
x64-freebsd-12-build:
@@ -48,14 +52,11 @@ x64-freebsd-12-build:
NAME: freebsd-12
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
CIRRUS_VM_IMAGE_SELECTOR: image_family
- CIRRUS_VM_IMAGE_NAME: freebsd-12-2
+ CIRRUS_VM_IMAGE_NAME: freebsd-12-3
CIRRUS_VM_CPUS: 8
CIRRUS_VM_RAM: 8G
UPDATE_COMMAND: pkg update
INSTALL_COMMAND: pkg install -y
- # TODO: Enable gnutls again once FreeBSD's libtasn1 got fixed
- # See: https://gitlab.com/gnutls/libtasn1/-/merge_requests/71
- CONFIGURE_ARGS: --disable-gnutls
TEST_TARGETS: check
x64-freebsd-13-build:
@@ -85,3 +86,38 @@ x64-macos-11-base-build:
PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
TEST_TARGETS: check-unit check-block check-qapi-schema check-softfloat check-qtest-x86_64
+
+
+# The following jobs run VM-based tests via KVM on a Linux-based Cirrus-CI job
+.cirrus_kvm_job:
+ stage: build
+ image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
+ needs: []
+ timeout: 80m
+ allow_failure: true
+ script:
+ - sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
+ -e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g"
+ -e "s|[@]CI_COMMIT_SHA@|$CI_COMMIT_SHA|g"
+ -e "s|[@]NAME@|$NAME|g"
+ -e "s|[@]CONFIGURE_ARGS@|$CONFIGURE_ARGS|g"
+ -e "s|[@]TEST_TARGETS@|$TEST_TARGETS|g"
+ <.gitlab-ci.d/cirrus/kvm-build.yml >.gitlab-ci.d/cirrus/$NAME.yml
+ - cat .gitlab-ci.d/cirrus/$NAME.yml
+ - cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
+ rules:
+ - when: manual
+
+x86-netbsd:
+ extends: .cirrus_kvm_job
+ variables:
+ NAME: netbsd
+ CONFIGURE_ARGS: --target-list=x86_64-softmmu,ppc64-softmmu,aarch64-softmmu
+ TEST_TARGETS: check
+
+x86-openbsd:
+ extends: .cirrus_kvm_job
+ variables:
+ NAME: openbsd
+ CONFIGURE_ARGS: --target-list=i386-softmmu,riscv64-softmmu,mips64-softmmu
+ TEST_TARGETS: check
diff --git a/.gitlab-ci.d/cirrus/build.yml b/.gitlab-ci.d/cirrus/build.yml
index 857bdc5536..c555f5d36e 100644
--- a/.gitlab-ci.d/cirrus/build.yml
+++ b/.gitlab-ci.d/cirrus/build.yml
@@ -13,6 +13,7 @@ env:
PYTHON: "@PYTHON@"
MAKE: "@MAKE@"
CONFIGURE_ARGS: "@CONFIGURE_ARGS@"
+ TEST_TARGETS: "@TEST_TARGETS@"
build_task:
install_script:
diff --git a/.gitlab-ci.d/cirrus/freebsd-12.vars b/.gitlab-ci.d/cirrus/freebsd-12.vars
index 2099b21354..9c52266811 100644
--- a/.gitlab-ci.d/cirrus/freebsd-12.vars
+++ b/.gitlab-ci.d/cirrus/freebsd-12.vars
@@ -2,12 +2,15 @@
#
# $ lcitool variables freebsd-12 qemu
#
-# https://gitlab.com/libvirt/libvirt-ci/-/commit/c7e275ab27ac0dcd09da290817b9adeea1fd1eb1
+# https://gitlab.com/libvirt/libvirt-ci
-PACKAGING_COMMAND='pkg'
CCACHE='/usr/local/bin/ccache'
+CPAN_PKGS=''
+CROSS_PKGS=''
MAKE='/usr/local/bin/gmake'
NINJA='/usr/local/bin/ninja'
-PYTHON='/usr/local/bin/python3'
+PACKAGING_COMMAND='pkg'
PIP3='/usr/local/bin/pip-3.8'
-PKGS='alsa-lib bash bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage ctags curl cyrus-sasl dbus diffutils gettext git glib gmake gnutls gsed gtk3 libepoxy libffi libgcrypt libjpeg-turbo libnfs libspice-server libssh libtasn1 libxml2 llvm lttng-ust lzo2 meson ncurses nettle ninja opencv p5-Test-Harness perl5 pixman pkgconf png py38-numpy py38-pillow py38-pip py38-sphinx py38-sphinx_rtd_theme py38-virtualenv py38-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
+PKGS='alsa-lib bash bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage ctags curl cyrus-sasl dbus diffutils dtc gettext git glib gmake gnutls gsed gtk3 libepoxy libffi libgcrypt libjpeg-turbo libnfs libspice-server libssh libtasn1 libxml2 llvm lttng-ust lzo2 meson ncurses nettle ninja opencv p5-Test-Harness perl5 pixman pkgconf png py38-numpy py38-pillow py38-pip py38-sphinx py38-sphinx_rtd_theme py38-virtualenv py38-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
+PYPI_PKGS=''
+PYTHON='/usr/local/bin/python3'
diff --git a/.gitlab-ci.d/cirrus/freebsd-13.vars b/.gitlab-ci.d/cirrus/freebsd-13.vars
index 323fe806d5..7b44dba324 100644
--- a/.gitlab-ci.d/cirrus/freebsd-13.vars
+++ b/.gitlab-ci.d/cirrus/freebsd-13.vars
@@ -2,12 +2,15 @@
#
# $ lcitool variables freebsd-13 qemu
#
-# https://gitlab.com/libvirt/libvirt-ci/-/commit/c7e275ab27ac0dcd09da290817b9adeea1fd1eb1
+# https://gitlab.com/libvirt/libvirt-ci
-PACKAGING_COMMAND='pkg'
CCACHE='/usr/local/bin/ccache'
+CPAN_PKGS=''
+CROSS_PKGS=''
MAKE='/usr/local/bin/gmake'
NINJA='/usr/local/bin/ninja'
-PYTHON='/usr/local/bin/python3'
+PACKAGING_COMMAND='pkg'
PIP3='/usr/local/bin/pip-3.8'
-PKGS='alsa-lib bash bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage ctags curl cyrus-sasl dbus diffutils gettext git glib gmake gnutls gsed gtk3 libepoxy libffi libgcrypt libjpeg-turbo libnfs libspice-server libssh libtasn1 libxml2 llvm lttng-ust lzo2 meson ncurses nettle ninja opencv p5-Test-Harness perl5 pixman pkgconf png py38-numpy py38-pillow py38-pip py38-sphinx py38-sphinx_rtd_theme py38-virtualenv py38-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
+PKGS='alsa-lib bash bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage ctags curl cyrus-sasl dbus diffutils dtc gettext git glib gmake gnutls gsed gtk3 libepoxy libffi libgcrypt libjpeg-turbo libnfs libspice-server libssh libtasn1 libxml2 llvm lttng-ust lzo2 meson ncurses nettle ninja opencv p5-Test-Harness perl5 pixman pkgconf png py38-numpy py38-pillow py38-pip py38-sphinx py38-sphinx_rtd_theme py38-virtualenv py38-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
+PYPI_PKGS=''
+PYTHON='/usr/local/bin/python3'
diff --git a/.gitlab-ci.d/cirrus/kvm-build.yml b/.gitlab-ci.d/cirrus/kvm-build.yml
new file mode 100644
index 0000000000..4334fabf39
--- /dev/null
+++ b/.gitlab-ci.d/cirrus/kvm-build.yml
@@ -0,0 +1,31 @@
+container:
+ image: fedora:35
+ cpu: 4
+ memory: 8Gb
+ kvm: true
+
+env:
+ CIRRUS_CLONE_DEPTH: 1
+ CI_REPOSITORY_URL: "@CI_REPOSITORY_URL@"
+ CI_COMMIT_REF_NAME: "@CI_COMMIT_REF_NAME@"
+ CI_COMMIT_SHA: "@CI_COMMIT_SHA@"
+
+@NAME@_task:
+ @NAME@_vm_cache:
+ folder: $HOME/.cache/qemu-vm
+ install_script:
+ - dnf update -y
+ - dnf install -y git make openssh-clients qemu-img qemu-system-x86 wget
+ clone_script:
+ - git clone --depth 100 "$CI_REPOSITORY_URL" .
+ - git fetch origin "$CI_COMMIT_REF_NAME"
+ - git reset --hard "$CI_COMMIT_SHA"
+ build_script:
+ - if [ -f $HOME/.cache/qemu-vm/images/@NAME@.img ]; then
+ make vm-build-@NAME@ J=$(getconf _NPROCESSORS_ONLN)
+ EXTRA_CONFIGURE_OPTS="@CONFIGURE_ARGS@"
+ BUILD_TARGET="@TEST_TARGETS@" ;
+ else
+ make vm-build-@NAME@ J=$(getconf _NPROCESSORS_ONLN) BUILD_TARGET=help
+ EXTRA_CONFIGURE_OPTS="--disable-system --disable-user --disable-tools" ;
+ fi
diff --git a/.gitlab-ci.d/cirrus/macos-11.vars b/.gitlab-ci.d/cirrus/macos-11.vars
index cbec8a44a3..613d1373c2 100644
--- a/.gitlab-ci.d/cirrus/macos-11.vars
+++ b/.gitlab-ci.d/cirrus/macos-11.vars
@@ -2,14 +2,15 @@
#
# $ lcitool variables macos-11 qemu
#
-# https://gitlab.com/libvirt/libvirt-ci/-/commit/c7e275ab27ac0dcd09da290817b9adeea1fd1eb1
+# https://gitlab.com/libvirt/libvirt-ci
-PACKAGING_COMMAND='brew'
CCACHE='/usr/local/bin/ccache'
+CPAN_PKGS='Test::Harness'
+CROSS_PKGS=''
MAKE='/usr/local/bin/gmake'
NINJA='/usr/local/bin/ninja'
-PYTHON='/usr/local/bin/python3'
+PACKAGING_COMMAND='brew'
PIP3='/usr/local/bin/pip3'
-PKGS='bash bc bzip2 capstone ccache cpanminus ctags curl dbus diffutils gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb libxml2 llvm lzo make meson ncurses nettle ninja perl pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy sparse spice-protocol tesseract texinfo usbredir vde vte3 zlib zstd'
+PKGS='bash bc bzip2 capstone ccache cpanminus ctags curl dbus diffutils dtc gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb libxml2 llvm lzo make meson ncurses nettle ninja perl pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy sparse spice-protocol tesseract texinfo usbredir vde vte3 zlib zstd'
PYPI_PKGS='PyYAML numpy pillow sphinx sphinx-rtd-theme virtualenv'
-CPAN_PKGS='Test::Harness'
+PYTHON='/usr/local/bin/python3'
diff --git a/.gitlab-ci.d/container-cross.yml b/.gitlab-ci.d/container-cross.yml
index 0fcebe363a..a3b5b90552 100644
--- a/.gitlab-ci.d/container-cross.yml
+++ b/.gitlab-ci.d/container-cross.yml
@@ -134,7 +134,8 @@ ppc64el-debian-cross-container:
riscv64-debian-cross-container:
extends: .container_job_template
stage: containers-layer2
- needs: ['amd64-debian10-container']
+ # as we are currently based on 'sid/unstable' we may break so...
+ allow_failure: true
variables:
NAME: debian-riscv64-cross
diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml
index cd06d3f5f4..b9b675fdcb 100644
--- a/.gitlab-ci.d/containers.yml
+++ b/.gitlab-ci.d/containers.yml
@@ -29,11 +29,6 @@ amd64-ubuntu2004-container:
variables:
NAME: ubuntu2004
-amd64-ubuntu-container:
- extends: .container_job_template
- variables:
- NAME: ubuntu
-
amd64-opensuse-leap-container:
extends: .container_job_template
variables:
diff --git a/.gitlab-ci.d/crossbuilds.yml b/.gitlab-ci.d/crossbuilds.yml
index f10168db2e..17d6cb3e45 100644
--- a/.gitlab-ci.d/crossbuilds.yml
+++ b/.gitlab-ci.d/crossbuilds.yml
@@ -124,6 +124,25 @@ cross-ppc64el-user:
variables:
IMAGE: debian-ppc64el-cross
+# The riscv64 cross-builds currently use a 'sid' container to get
+# compilers and libraries. Until something more stable is found we
+# allow_failure so as not to block CI.
+cross-riscv64-system:
+ extends: .cross_system_build_job
+ allow_failure: true
+ needs:
+ job: riscv64-debian-cross-container
+ variables:
+ IMAGE: debian-riscv64-cross
+
+cross-riscv64-user:
+ extends: .cross_user_build_job
+ allow_failure: true
+ needs:
+ job: riscv64-debian-cross-container
+ variables:
+ IMAGE: debian-riscv64-cross
+
cross-s390x-system:
extends: .cross_system_build_job
needs:
diff --git a/.gitlab-ci.d/custom-runners.yml b/.gitlab-ci.d/custom-runners.yml
index a89a20da48..056c374619 100644
--- a/.gitlab-ci.d/custom-runners.yml
+++ b/.gitlab-ci.d/custom-runners.yml
@@ -13,238 +13,7 @@
variables:
GIT_STRATEGY: clone
-# All ubuntu-18.04 jobs should run successfully in an environment
-# setup by the scripts/ci/setup/build-environment.yml task
-# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
-ubuntu-18.04-s390x-all-linux-static:
- needs: []
- stage: build
- tags:
- - ubuntu_18.04
- - s390x
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- - if: "$S390X_RUNNER_AVAILABLE"
- script:
- # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
- # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
- - mkdir build
- - cd build
- - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
- - make --output-sync -j`nproc` check-tcg V=1
-
-ubuntu-18.04-s390x-all:
- needs: []
- stage: build
- tags:
- - ubuntu_18.04
- - s390x
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- - if: "$S390X_RUNNER_AVAILABLE"
- script:
- - mkdir build
- - cd build
- - ../configure --disable-libssh
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
-
-ubuntu-18.04-s390x-alldbg:
- needs: []
- stage: build
- tags:
- - ubuntu_18.04
- - s390x
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$S390X_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --enable-debug --disable-libssh
- - make clean
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
-
-ubuntu-18.04-s390x-clang:
- needs: []
- stage: build
- tags:
- - ubuntu_18.04
- - s390x
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$S390X_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-libssh --cc=clang --cxx=clang++ --enable-sanitizers
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
-
-ubuntu-18.04-s390x-tci:
- needs: []
- stage: build
- tags:
- - ubuntu_18.04
- - s390x
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$S390X_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-libssh --enable-tcg-interpreter
- - make --output-sync -j`nproc`
-
-ubuntu-18.04-s390x-notcg:
- needs: []
- stage: build
- tags:
- - ubuntu_18.04
- - s390x
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$S390X_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-libssh --disable-tcg
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
-
-# All ubuntu-20.04 jobs should run successfully in an environment
-# setup by the scripts/ci/setup/qemu/build-environment.yml task
-# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
-ubuntu-20.04-aarch64-all-linux-static:
- needs: []
- stage: build
- tags:
- - ubuntu_20.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- - if: "$AARCH64_RUNNER_AVAILABLE"
- script:
- # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
- # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
- - mkdir build
- - cd build
- - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
- - make --output-sync -j`nproc` check-tcg V=1
-
-ubuntu-20.04-aarch64-all:
- needs: []
- stage: build
- tags:
- - ubuntu_20.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$AARCH64_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-libssh
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
-
-ubuntu-20.04-aarch64-alldbg:
- needs: []
- stage: build
- tags:
- - ubuntu_20.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- - if: "$AARCH64_RUNNER_AVAILABLE"
- script:
- - mkdir build
- - cd build
- - ../configure --enable-debug --disable-libssh
- - make clean
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
-
-ubuntu-20.04-aarch64-clang:
- needs: []
- stage: build
- tags:
- - ubuntu_20.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$AARCH64_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-libssh --cc=clang-10 --cxx=clang++-10 --enable-sanitizers
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
-
-ubuntu-20.04-aarch64-tci:
- needs: []
- stage: build
- tags:
- - ubuntu_20.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$AARCH64_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-libssh --enable-tcg-interpreter
- - make --output-sync -j`nproc`
-
-ubuntu-20.04-aarch64-notcg:
- needs: []
- stage: build
- tags:
- - ubuntu_20.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$AARCH64_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-libssh --disable-tcg
- - make --output-sync -j`nproc`
- - make --output-sync -j`nproc` check V=1
+include:
+ - local: '/.gitlab-ci.d/custom-runners/ubuntu-18.04-s390x.yml'
+ - local: '/.gitlab-ci.d/custom-runners/ubuntu-20.04-aarch64.yml'
+ - local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
diff --git a/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml b/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml
new file mode 100644
index 0000000000..49aa703f55
--- /dev/null
+++ b/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml
@@ -0,0 +1,28 @@
+centos-stream-8-x86_64:
+ allow_failure: true
+ needs: []
+ stage: build
+ tags:
+ - centos_stream_8
+ - x86_64
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ - if: "$CENTOS_STREAM_8_x86_64_RUNNER_AVAILABLE"
+ artifacts:
+ name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
+ when: on_failure
+ expire_in: 7 days
+ paths:
+ - build/tests/results/latest/results.xml
+ - build/tests/results/latest/test-results
+ reports:
+ junit: build/tests/results/latest/results.xml
+ before_script:
+ - JOBS=$(expr $(nproc) + 1)
+ script:
+ - mkdir build
+ - cd build
+ - ../scripts/ci/org.centos/stream/8/x86_64/configure
+ - make -j"$JOBS"
+ - make NINJA=":" check
+ - ../scripts/ci/org.centos/stream/8/x86_64/test-avocado
diff --git a/.gitlab-ci.d/custom-runners/ubuntu-18.04-s390x.yml b/.gitlab-ci.d/custom-runners/ubuntu-18.04-s390x.yml
new file mode 100644
index 0000000000..f39d874a1e
--- /dev/null
+++ b/.gitlab-ci.d/custom-runners/ubuntu-18.04-s390x.yml
@@ -0,0 +1,118 @@
+# All ubuntu-18.04 jobs should run successfully in an environment
+# setup by the scripts/ci/setup/build-environment.yml task
+# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
+
+ubuntu-18.04-s390x-all-linux-static:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_18.04
+ - s390x
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ - if: "$S390X_RUNNER_AVAILABLE"
+ script:
+ # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
+ # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
+ - mkdir build
+ - cd build
+ - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
+ - make --output-sync -j`nproc` check-tcg V=1
+
+ubuntu-18.04-s390x-all:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_18.04
+ - s390x
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ - if: "$S390X_RUNNER_AVAILABLE"
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --disable-libssh
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
+
+ubuntu-18.04-s390x-alldbg:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_18.04
+ - s390x
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$S390X_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --enable-debug --disable-libssh
+ - make clean
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
+
+ubuntu-18.04-s390x-clang:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_18.04
+ - s390x
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$S390X_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --disable-libssh --cc=clang --cxx=clang++ --enable-sanitizers
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
+
+ubuntu-18.04-s390x-tci:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_18.04
+ - s390x
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$S390X_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --disable-libssh --enable-tcg-interpreter
+ - make --output-sync -j`nproc`
+
+ubuntu-18.04-s390x-notcg:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_18.04
+ - s390x
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$S390X_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --disable-libssh --disable-tcg
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
diff --git a/.gitlab-ci.d/custom-runners/ubuntu-20.04-aarch64.yml b/.gitlab-ci.d/custom-runners/ubuntu-20.04-aarch64.yml
new file mode 100644
index 0000000000..920e388bd0
--- /dev/null
+++ b/.gitlab-ci.d/custom-runners/ubuntu-20.04-aarch64.yml
@@ -0,0 +1,118 @@
+# All ubuntu-20.04 jobs should run successfully in an environment
+# setup by the scripts/ci/setup/qemu/build-environment.yml task
+# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
+
+ubuntu-20.04-aarch64-all-linux-static:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_20.04
+ - aarch64
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ script:
+ # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
+ # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
+ - mkdir build
+ - cd build
+ - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
+ - make --output-sync -j`nproc` check-tcg V=1
+
+ubuntu-20.04-aarch64-all:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_20.04
+ - aarch64
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --disable-libssh
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
+
+ubuntu-20.04-aarch64-alldbg:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_20.04
+ - aarch64
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --enable-debug --disable-libssh
+ - make clean
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
+
+ubuntu-20.04-aarch64-clang:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_20.04
+ - aarch64
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --disable-libssh --cc=clang-10 --cxx=clang++-10 --enable-sanitizers
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
+
+ubuntu-20.04-aarch64-tci:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_20.04
+ - aarch64
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --disable-libssh --enable-tcg-interpreter
+ - make --output-sync -j`nproc`
+
+ubuntu-20.04-aarch64-notcg:
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_20.04
+ - aarch64
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
+ script:
+ - mkdir build
+ - cd build
+ - ../configure --disable-libssh --disable-tcg
+ - make --output-sync -j`nproc`
+ - make --output-sync -j`nproc` check V=1
diff --git a/.gitlab-ci.d/edk2.yml b/.gitlab-ci.d/edk2.yml
index 62497ba47f..13d0f8b019 100644
--- a/.gitlab-ci.d/edk2.yml
+++ b/.gitlab-ci.d/edk2.yml
@@ -50,7 +50,11 @@ build-edk2:
GIT_DEPTH: 3
script: # Clone the required submodules and build EDK2
- git submodule update --init roms/edk2
- - git -C roms/edk2 submodule update --init
+ - git -C roms/edk2 submodule update --init --
+ ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3
+ BaseTools/Source/C/BrotliCompress/brotli
+ CryptoPkg/Library/OpensslLib/openssl
+ MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
- export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1))
- echo "=== Using ${JOBS} simultaneous jobs ==="
- make -j${JOBS} -C roms efi 2>&1 1>edk2-stdout.log | tee -a edk2-stderr.log >&2
diff --git a/.gitlab-ci.d/edk2/Dockerfile b/.gitlab-ci.d/edk2/Dockerfile
index b4584d1cf6..13029310f6 100644
--- a/.gitlab-ci.d/edk2/Dockerfile
+++ b/.gitlab-ci.d/edk2/Dockerfile
@@ -3,7 +3,7 @@
#
FROM ubuntu:16.04
-MAINTAINER Philippe Mathieu-Daudé <philmd@redhat.com>
+MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
# Install packages required to build EDK2
RUN apt update \
diff --git a/.gitlab-ci.d/qemu-project.yml b/.gitlab-ci.d/qemu-project.yml
index b3d79bc429..871262fe0e 100644
--- a/.gitlab-ci.d/qemu-project.yml
+++ b/.gitlab-ci.d/qemu-project.yml
@@ -11,3 +11,4 @@ include:
- local: '/.gitlab-ci.d/static_checks.yml'
- local: '/.gitlab-ci.d/custom-runners.yml'
- local: '/.gitlab-ci.d/cirrus.yml'
+ - local: '/.gitlab-ci.d/windows.yml'
diff --git a/.gitlab-ci.d/static_checks.yml b/.gitlab-ci.d/static_checks.yml
index 96dbd9e310..5e955540d3 100644
--- a/.gitlab-ci.d/static_checks.yml
+++ b/.gitlab-ci.d/static_checks.yml
@@ -8,7 +8,7 @@ check-patch:
variables:
GIT_DEPTH: 1000
rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
when: never
- when: on_success
allow_failure: true
@@ -46,4 +46,6 @@ check-python-tox:
QEMU_TOX_EXTRA_ARGS: --skip-missing-interpreters=false
needs:
job: python-container
+ rules:
+ - when: manual
allow_failure: true
diff --git a/.gitlab-ci.d/windows.yml b/.gitlab-ci.d/windows.yml
new file mode 100644
index 0000000000..62dd9ed832
--- /dev/null
+++ b/.gitlab-ci.d/windows.yml
@@ -0,0 +1,98 @@
+.shared_msys2_builder:
+ tags:
+ - shared-windows
+ - windows
+ - windows-1809
+ cache:
+ key: "${CI_JOB_NAME}-cache"
+ paths:
+ - ${CI_PROJECT_DIR}/msys64/var/cache
+ needs: []
+ stage: build
+ timeout: 70m
+ before_script:
+ - If ( !(Test-Path -Path msys64\var\cache ) ) {
+ mkdir msys64\var\cache
+ }
+ - If ( !(Test-Path -Path msys64\var\cache\msys2.exe ) ) {
+ Invoke-WebRequest
+ "https://github.com/msys2/msys2-installer/releases/download/2021-07-25/msys2-base-x86_64-20210725.sfx.exe"
+ -outfile "msys64\var\cache\msys2.exe"
+ }
+ - msys64\var\cache\msys2.exe -y
+ - ((Get-Content -path .\msys64\etc\\post-install\\07-pacman-key.post -Raw)
+ -replace '--refresh-keys', '--version') |
+ Set-Content -Path ${CI_PROJECT_DIR}\msys64\etc\\post-install\\07-pacman-key.post
+ - .\msys64\usr\bin\bash -lc "sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf"
+ - .\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu' # Core update
+ - .\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu' # Normal update
+ - taskkill /F /FI "MODULES eq msys-2.0.dll"
+
+msys2-64bit:
+ extends: .shared_msys2_builder
+ script:
+ - .\msys64\usr\bin\bash -lc "pacman -Sy --noconfirm --needed
+ diffutils git grep make sed
+ mingw-w64-x86_64-capstone
+ mingw-w64-x86_64-curl
+ mingw-w64-x86_64-cyrus-sasl
+ mingw-w64-x86_64-gcc
+ mingw-w64-x86_64-glib2
+ mingw-w64-x86_64-gnutls
+ mingw-w64-x86_64-libnfs
+ mingw-w64-x86_64-libpng
+ mingw-w64-x86_64-libssh
+ mingw-w64-x86_64-libtasn1
+ mingw-w64-x86_64-libusb
+ mingw-w64-x86_64-libxml2
+ mingw-w64-x86_64-nettle
+ mingw-w64-x86_64-ninja
+ mingw-w64-x86_64-pixman
+ mingw-w64-x86_64-pkgconf
+ mingw-w64-x86_64-python
+ mingw-w64-x86_64-SDL2
+ mingw-w64-x86_64-SDL2_image
+ mingw-w64-x86_64-snappy
+ mingw-w64-x86_64-usbredir
+ mingw-w64-x86_64-zstd "
+ - $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
+ - $env:MSYSTEM = 'MINGW64' # Start a 64 bit Mingw environment
+ - .\msys64\usr\bin\bash -lc './configure --target-list=x86_64-softmmu
+ --enable-capstone=system --without-default-devices'
+ - .\msys64\usr\bin\bash -lc "sed -i '/^ROMS=/d' build/config-host.mak"
+ - .\msys64\usr\bin\bash -lc 'make -j2'
+ - .\msys64\usr\bin\bash -lc 'make check'
+
+msys2-32bit:
+ extends: .shared_msys2_builder
+ script:
+ - .\msys64\usr\bin\bash -lc "pacman -Sy --noconfirm --needed
+ diffutils git grep make sed
+ mingw-w64-i686-capstone
+ mingw-w64-i686-curl
+ mingw-w64-i686-cyrus-sasl
+ mingw-w64-i686-gcc
+ mingw-w64-i686-glib2
+ mingw-w64-i686-gnutls
+ mingw-w64-i686-gtk3
+ mingw-w64-i686-libgcrypt
+ mingw-w64-i686-libjpeg-turbo
+ mingw-w64-i686-libssh
+ mingw-w64-i686-libtasn1
+ mingw-w64-i686-libusb
+ mingw-w64-i686-libxml2
+ mingw-w64-i686-lzo2
+ mingw-w64-i686-ninja
+ mingw-w64-i686-pixman
+ mingw-w64-i686-pkgconf
+ mingw-w64-i686-python
+ mingw-w64-i686-snappy
+ mingw-w64-i686-usbredir "
+ - $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
+ - $env:MSYSTEM = 'MINGW32' # Start a 32-bit MinG environment
+ - mkdir output
+ - cd output
+ - ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu
+ --enable-capstone=system"
+ - ..\msys64\usr\bin\bash -lc 'make -j2'
+ - ..\msys64\usr\bin\bash -lc 'make check'
diff --git a/.gitmodules b/.gitmodules
index 08b1b48a09..84425d87e2 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -64,3 +64,6 @@
[submodule "roms/vbootrom"]
path = roms/vbootrom
url = https://gitlab.com/qemu-project/vbootrom.git
+[submodule "tests/lcitool/libvirt-ci"]
+ path = tests/lcitool/libvirt-ci
+ url = http://gitlab.com/libvirt/libvirt-ci
diff --git a/.mailmap b/.mailmap
index f029d1c21f..5113f55b3a 100644
--- a/.mailmap
+++ b/.mailmap
@@ -50,6 +50,7 @@ Aleksandar Rikalo <aleksandar.rikalo@syrmia.com> <arikalo@wavecomp.com>
Aleksandar Rikalo <aleksandar.rikalo@syrmia.com> <aleksandar.rikalo@rt-rk.com>
Alexander Graf <agraf@csgraf.de> <agraf@suse.de>
Anthony Liguori <anthony@codemonkey.ws> Anthony Liguori <aliguori@us.ibm.com>
+Christian Borntraeger <borntraeger@linux.ibm.com> <borntraeger@de.ibm.com>
Filip Bozuta <filip.bozuta@syrmia.com> <filip.bozuta@rt-rk.com.com>
Frederic Konrad <konrad@adacore.com> <fred.konrad@greensocs.com>
Greg Kurz <groug@kaod.org> <gkurz@linux.vnet.ibm.com>
@@ -62,6 +63,7 @@ Paul Burton <paulburton@kernel.org> <paul.burton@mips.com>
Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>
Paul Burton <paulburton@kernel.org> <paul@archlinuxmips.org>
Paul Burton <paulburton@kernel.org> <pburton@wavecomp.com>
+Philippe Mathieu-Daudé <f4bug@amsat.org> <philmd@redhat.com>
Stefan Brankovic <stefan.brankovic@syrmia.com> <stefan.brankovic@rt-rk.com.com>
Yongbok Kim <yongbok.kim@mips.com> <yongbok.kim@imgtec.com>
@@ -69,6 +71,7 @@ Yongbok Kim <yongbok.kim@mips.com> <yongbok.kim@imgtec.com>
# git author config, or had utf8/latin1 encoding issues.
Aaron Lindsay <aaron@os.amperecomputing.com>
Alexey Gerasimenko <x1917x@gmail.com>
+Alex Chen <alex.chen@huawei.com>
Alex Ivanov <void@aleksoft.net>
Andreas Färber <afaerber@suse.de>
Bandan Das <bsd@redhat.com>
@@ -99,9 +102,11 @@ Gautham R. Shenoy <ego@in.ibm.com>
Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Gonglei (Arei) <arei.gonglei@huawei.com>
Guang Wang <wang.guang55@zte.com.cn>
+Haibin Zhang <haibinzhang@tencent.com>
Hailiang Zhang <zhang.zhanghailiang@huawei.com>
Hanna Reitz <hreitz@redhat.com> <mreitz@redhat.com>
Hervé Poussineau <hpoussin@reactos.org>
+Hyman Huang <huangy81@chinatelecom.cn>
Jakub Jermář <jakub@jermar.eu>
Jakub Jermář <jakub.jermar@kernkonzept.com>
Jean-Christophe Dubois <jcd@tribudubois.net>
@@ -135,6 +140,7 @@ Nicholas Thomas <nick@bytemark.co.uk>
Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Orit Wasserman <owasserm@redhat.com>
Paolo Bonzini <pbonzini@redhat.com>
+Pan Nengyuan <pannengyuan@huawei.com>
Pavel Dovgaluk <dovgaluk@ispras.ru>
Pavel Dovgaluk <pavel.dovgaluk@gmail.com>
Pavel Dovgaluk <Pavel.Dovgaluk@ispras.ru>
diff --git a/.travis.yml b/.travis.yml
index 0faddf7b4e..41010ebe6b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -305,26 +305,3 @@ jobs:
- CONFIG="--disable-containers --disable-tcg --enable-kvm
--disable-tools --host-cc=clang --cxx=clang++"
- UNRELIABLE=true
-
- # Release builds
- # The make-release script expect a QEMU version, so our tag must start with a 'v'.
- # This is the case when release candidate tags are created.
- - name: "Release tarball"
- if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/
- env:
- # We want to build from the release tarball
- - BUILD_DIR="release/build/dir" SRC_DIR="../../.."
- - BASE_CONFIG="--prefix=$PWD/dist"
- - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user"
- - TEST_CMD="make install -j${JOBS}"
- - QEMU_VERSION="${TRAVIS_TAG:1}"
- - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
- script:
- - make -C ${SRC_DIR} qemu-${QEMU_VERSION}.tar.bz2
- - ls -l ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2
- - tar -xf ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION}
- - mkdir -p release-build && cd release-build
- - ../configure ${BASE_CONFIG} ${CONFIG} || { cat config.log meson-logs/meson-log.txt && exit 1; }
- - make install
- allow_failures:
- - env: UNRELIABLE=true
diff --git a/Kconfig.host b/Kconfig.host
index 24255ef441..60b9c07b5e 100644
--- a/Kconfig.host
+++ b/Kconfig.host
@@ -41,3 +41,7 @@ config PVRDMA
config MULTIPROCESS_ALLOWED
bool
imply MULTIPROCESS
+
+config FUZZ
+ bool
+ select SPARSE_MEM
diff --git a/MAINTAINERS b/MAINTAINERS
index bf1fc5b21e..893a556710 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -109,6 +109,12 @@ K: ^Subject:.*(?i)s390x?
T: git https://gitlab.com/cohuck/qemu.git s390-next
L: qemu-s390x@nongnu.org
+MIPS general architecture support
+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
+R: Jiaxun Yang <jiaxun.yang@flygoat.com>
+S: Odd Fixes
+K: ^Subject:.*(?i)mips
+
Guest CPU cores (TCG)
---------------------
Overall TCG CPUs
@@ -171,7 +177,7 @@ L: qemu-arm@nongnu.org
S: Maintained
F: hw/arm/smmu*
F: include/hw/arm/smmu*
-F: tests/acceptance/smmu.py
+F: tests/avocado/smmu.py
AVR TCG CPUs
M: Michael Rolnik <mrolnik@gmail.com>
@@ -179,7 +185,7 @@ S: Maintained
F: docs/system/target-avr.rst
F: gdb-xml/avr-cpu.xml
F: target/avr/
-F: tests/acceptance/machine_avr6.py
+F: tests/avocado/machine_avr6.py
CRIS TCG CPUs
M: Edgar E. Iglesias <edgar.iglesias@gmail.com>
@@ -205,10 +211,7 @@ HPPA (PA-RISC) TCG CPUs
M: Richard Henderson <richard.henderson@linaro.org>
S: Maintained
F: target/hppa/
-F: hw/hppa/
F: disas/hppa.c
-F: hw/net/*i82596*
-F: include/hw/net/lasi_82596.h
M68K TCG CPUs
M: Laurent Vivier <laurent@vivier.eu>
@@ -222,6 +225,8 @@ S: Maintained
F: target/microblaze/
F: hw/microblaze/
F: disas/microblaze.c
+F: tests/docker/dockerfiles/debian-microblaze-cross.d/build-toolchain.sh
+F: tests/tcg/nios2/Makefile.target
MIPS TCG CPUs
M: Philippe Mathieu-Daudé <f4bug@amsat.org>
@@ -230,19 +235,9 @@ R: Jiaxun Yang <jiaxun.yang@flygoat.com>
R: Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>
S: Odd Fixes
F: target/mips/
-F: configs/devices/mips*/*
F: disas/mips.c
F: docs/system/cpu-models-mips.rst.inc
-F: hw/intc/mips_gic.c
-F: hw/mips/
-F: hw/misc/mips_*
-F: hw/timer/mips_gictimer.c
-F: include/hw/intc/mips_gic.h
-F: include/hw/mips/
-F: include/hw/misc/mips_*
-F: include/hw/timer/mips_gictimer.h
F: tests/tcg/mips/
-K: ^Subject:.*(?i)mips
MIPS TCG CPUs (nanoMIPS ISA)
S: Orphan
@@ -257,6 +252,7 @@ F: target/nios2/
F: hw/nios2/
F: disas/nios2.c
F: configs/devices/nios2-softmmu/default.mak
+F: tests/docker/dockerfiles/debian-nios2-cross.d/build-toolchain.sh
OpenRISC TCG CPUs
M: Stafford Horne <shorne@gmail.com>
@@ -266,13 +262,16 @@ F: hw/openrisc/
F: tests/tcg/openrisc/
PowerPC TCG CPUs
-M: David Gibson <david@gibson.dropbear.id.au>
-M: Greg Kurz <groug@kaod.org>
+M: Cédric Le Goater <clg@kaod.org>
+M: Daniel Henrique Barboza <danielhb413@gmail.com>
+R: David Gibson <david@gibson.dropbear.id.au>
+R: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
S: Maintained
F: target/ppc/
-F: hw/ppc/
-F: include/hw/ppc/
+F: hw/ppc/ppc.c
+F: hw/ppc/ppc_booke.c
+F: include/hw/ppc/ppc.h
F: disas/ppc.c
RISC-V TCG CPUs
@@ -298,7 +297,6 @@ M: David Hildenbrand <david@redhat.com>
S: Maintained
F: target/s390x/
F: target/s390x/tcg
-F: target/s390x/cpu_models_*.[ch]
F: hw/s390x/
F: disas/s390.c
F: tests/tcg/s390x/
@@ -325,7 +323,7 @@ F: disas/sparc.c
X86 TCG CPUs
M: Paolo Bonzini <pbonzini@redhat.com>
M: Richard Henderson <richard.henderson@linaro.org>
-M: Eduardo Habkost <ehabkost@redhat.com>
+M: Eduardo Habkost <eduardo@habkost.net>
S: Maintained
F: target/i386/tcg/
F: tests/tcg/i386/
@@ -385,29 +383,23 @@ F: target/mips/kvm*
F: target/mips/sysemu/
PPC KVM CPUs
-M: David Gibson <david@gibson.dropbear.id.au>
-M: Greg Kurz <groug@kaod.org>
+M: Cédric Le Goater <clg@kaod.org>
+M: Daniel Henrique Barboza <danielhb413@gmail.com>
+R: David Gibson <david@gibson.dropbear.id.au>
+R: Greg Kurz <groug@kaod.org>
S: Maintained
F: target/ppc/kvm.c
S390 KVM CPUs
M: Halil Pasic <pasic@linux.ibm.com>
-M: Cornelia Huck <cohuck@redhat.com>
-M: Christian Borntraeger <borntraeger@de.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
S: Supported
F: target/s390x/kvm/
-F: target/s390x/ioinst.[ch]
F: target/s390x/machine.c
F: target/s390x/sigp.c
-F: target/s390x/cpu_features*.[ch]
-F: target/s390x/cpu_models.[ch]
F: hw/s390x/pv.c
F: include/hw/s390x/pv.h
-F: hw/intc/s390_flic.c
-F: hw/intc/s390_flic_kvm.c
-F: include/hw/s390x/s390_flic.h
F: gdb-xml/s390*.xml
-T: git https://gitlab.com/cohuck/qemu.git s390-next
T: git https://github.com/borntraeger/qemu.git s390-next
L: qemu-s390x@nongnu.org
@@ -416,7 +408,10 @@ M: Paolo Bonzini <pbonzini@redhat.com>
M: Marcelo Tosatti <mtosatti@redhat.com>
L: kvm@vger.kernel.org
S: Supported
+F: docs/amd-memory-encryption.txt
+F: docs/system/i386/sgx.rst
F: target/i386/kvm/
+F: target/i386/sev*
F: scripts/kvm/vmxcap
Guest CPU Cores (other accelerators)
@@ -659,7 +654,7 @@ S: Odd Fixes
F: include/hw/arm/digic.h
F: hw/*/digic*
F: include/hw/*/digic*
-F: tests/acceptance/machine_arm_canona1100.py
+F: tests/avocado/machine_arm_canona1100.py
F: docs/system/arm/digic.rst
Goldfish RTC
@@ -710,7 +705,7 @@ S: Maintained
F: hw/arm/integratorcp.c
F: hw/misc/arm_integrator_debug.c
F: include/hw/misc/arm_integrator_debug.h
-F: tests/acceptance/machine_arm_integratorcp.py
+F: tests/avocado/machine_arm_integratorcp.py
F: docs/system/arm/integratorcp.rst
MCIMX6UL EVK / i.MX6ul
@@ -807,7 +802,7 @@ F: include/hw/display/blizzard.h
F: include/hw/input/lm832x.h
F: include/hw/input/tsc2xxx.h
F: include/hw/misc/cbus.h
-F: tests/acceptance/machine_arm_n8x0.py
+F: tests/avocado/machine_arm_n8x0.py
F: docs/system/arm/nseries.rst
Palm
@@ -1097,6 +1092,8 @@ R: Helge Deller <deller@gmx.de>
S: Odd Fixes
F: configs/devices/hppa-softmmu/default.mak
F: hw/hppa/
+F: hw/net/*i82596*
+F: include/hw/net/lasi_82596.h
F: pc-bios/hppa-firmware.img
M68K Machines
@@ -1159,7 +1156,7 @@ M: Edgar E. Iglesias <edgar.iglesias@gmail.com>
S: Maintained
F: hw/microblaze/petalogix_s3adsp1800_mmu.c
F: include/hw/char/xilinx_uartlite.h
-F: tests/acceptance/machine_microblaze.py
+F: tests/avocado/machine_microblaze.py
petalogix_ml605
M: Edgar E. Iglesias <edgar.iglesias@gmail.com>
@@ -1168,6 +1165,13 @@ F: hw/microblaze/petalogix_ml605_mmu.c
MIPS Machines
-------------
+Overall MIPS Machines
+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
+S: Odd Fixes
+F: configs/devices/mips*/*
+F: hw/mips/
+F: include/hw/mips/
+
Jazz
M: Hervé Poussineau <hpoussin@reactos.org>
R: Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>
@@ -1185,8 +1189,8 @@ F: hw/acpi/piix4.c
F: hw/mips/malta.c
F: hw/mips/gt64xxx_pci.c
F: include/hw/southbridge/piix.h
-F: tests/acceptance/linux_ssh_mips_malta.py
-F: tests/acceptance/machine_mips_malta.py
+F: tests/avocado/linux_ssh_mips_malta.py
+F: tests/avocado/machine_mips_malta.py
Mipssim
R: Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>
@@ -1204,7 +1208,7 @@ F: hw/isa/vt82c686.c
F: hw/pci-host/bonito.c
F: hw/usb/vt82c686-uhci-pci.c
F: include/hw/isa/vt82c686.h
-F: tests/acceptance/machine_mips_fuloong2e.py
+F: tests/avocado/machine_mips_fuloong2e.py
Loongson-3 virtual platforms
M: Huacai Chen <chenhuacai@kernel.org>
@@ -1214,7 +1218,7 @@ F: hw/intc/loongson_liointc.c
F: hw/mips/loongson3_bootp.c
F: hw/mips/loongson3_bootp.h
F: hw/mips/loongson3_virt.c
-F: tests/acceptance/machine_mips_loongson3v.py
+F: tests/avocado/machine_mips_loongson3v.py
Boston
M: Paul Burton <paulburton@kernel.org>
@@ -1234,25 +1238,20 @@ F: hw/openrisc/openrisc_sim.c
PowerPC Machines
----------------
-405
-M: David Gibson <david@gibson.dropbear.id.au>
-M: Greg Kurz <groug@kaod.org>
+405 (ref405ep and taihu)
L: qemu-ppc@nongnu.org
-S: Odd Fixes
+S: Orphan
F: hw/ppc/ppc405_boards.c
Bamboo
-M: David Gibson <david@gibson.dropbear.id.au>
-M: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
-S: Odd Fixes
+S: Orphan
F: hw/ppc/ppc440_bamboo.c
+F: tests/avocado/ppc_bamboo.py
e500
-M: David Gibson <david@gibson.dropbear.id.au>
-M: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
-S: Odd Fixes
+S: Orphan
F: hw/ppc/e500*
F: hw/gpio/mpc8xxx.c
F: hw/i2c/mpc_i2c.c
@@ -1261,22 +1260,21 @@ F: hw/pci-host/ppce500.c
F: include/hw/ppc/ppc_e500.h
F: include/hw/pci-host/ppce500.h
F: pc-bios/u-boot.e500
+F: hw/intc/openpic_kvm.h
+F: include/hw/ppc/openpic_kvm.h
mpc8544ds
-M: David Gibson <david@gibson.dropbear.id.au>
-M: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
-S: Odd Fixes
+S: Orphan
F: hw/ppc/mpc8544ds.c
F: hw/ppc/mpc8544_guts.c
-F: tests/acceptance/ppc_mpc8544ds.py
+F: tests/avocado/ppc_mpc8544ds.py
New World (mac99)
M: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
-R: David Gibson <david@gibson.dropbear.id.au>
-R: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
S: Odd Fixes
+F: docs/system/ppc/powermac.rst
F: hw/ppc/mac_newworld.c
F: hw/pci-host/uninorth.c
F: hw/pci-bridge/dec.[hc]
@@ -1293,10 +1291,9 @@ F: pc-bios/qemu_vga.ndrv
Old World (g3beige)
M: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
-R: David Gibson <david@gibson.dropbear.id.au>
-R: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
S: Odd Fixes
+F: docs/system/ppc/powermac.rst
F: hw/ppc/mac_oldworld.c
F: hw/pci-host/grackle.c
F: hw/misc/macio/
@@ -1308,10 +1305,9 @@ F: pc-bios/qemu_vga.ndrv
PReP
M: Hervé Poussineau <hpoussin@reactos.org>
-R: David Gibson <david@gibson.dropbear.id.au>
-R: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
S: Maintained
+F: docs/system/ppc/prep.rst
F: hw/ppc/prep.c
F: hw/ppc/prep_systemio.c
F: hw/ppc/rs6000_mc.c
@@ -1322,32 +1318,33 @@ F: hw/dma/i82374.c
F: hw/rtc/m48t59-isa.c
F: include/hw/isa/pc87312.h
F: include/hw/rtc/m48t59.h
-F: tests/acceptance/ppc_prep_40p.py
+F: tests/avocado/ppc_prep_40p.py
-sPAPR
-M: David Gibson <david@gibson.dropbear.id.au>
-M: Greg Kurz <groug@kaod.org>
+sPAPR (pseries)
+M: Cédric Le Goater <clg@kaod.org>
+M: Daniel Henrique Barboza <danielhb413@gmail.com>
+R: David Gibson <david@gibson.dropbear.id.au>
+R: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
-S: Supported
+S: Maintained
F: hw/*/spapr*
F: include/hw/*/spapr*
F: hw/*/xics*
F: include/hw/*/xics*
F: pc-bios/slof.bin
-F: docs/specs/ppc-spapr-hcalls.txt
-F: docs/specs/ppc-spapr-hotplug.txt
+F: docs/system/ppc/pseries.rst
+F: docs/specs/ppc-spapr-*
F: tests/qtest/spapr*
F: tests/qtest/libqos/*spapr*
F: tests/qtest/rtas*
F: tests/qtest/libqos/rtas*
-F: tests/acceptance/ppc_pseries.py
+F: tests/avocado/ppc_pseries.py
PowerNV (Non-Virtualized)
M: Cédric Le Goater <clg@kaod.org>
-M: David Gibson <david@gibson.dropbear.id.au>
-M: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
S: Maintained
+F: docs/system/ppc/powernv.rst
F: hw/ppc/pnv*
F: hw/intc/pnv*
F: hw/intc/xics_pnv.c
@@ -1362,12 +1359,10 @@ M: Edgar E. Iglesias <edgar.iglesias@gmail.com>
L: qemu-ppc@nongnu.org
S: Odd Fixes
F: hw/ppc/virtex_ml507.c
-F: tests/acceptance/ppc_virtex_ml507.py
+F: tests/avocado/ppc_virtex_ml507.py
sam460ex
M: BALATON Zoltan <balaton@eik.bme.hu>
-R: David Gibson <david@gibson.dropbear.id.au>
-R: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
S: Maintained
F: hw/ppc/sam460ex.c
@@ -1381,7 +1376,6 @@ F: roms/u-boot-sam460ex
pegasos2
M: BALATON Zoltan <balaton@eik.bme.hu>
-R: David Gibson <david@gibson.dropbear.id.au>
L: qemu-ppc@nongnu.org
S: Maintained
F: hw/ppc/pegasos2.c
@@ -1391,6 +1385,8 @@ F: include/hw/pci-host/mv64361.h
Virtual Open Firmware (VOF)
M: Alexey Kardashevskiy <aik@ozlabs.ru>
+R: Cédric Le Goater <clg@kaod.org>
+R: Daniel Henrique Barboza <danielhb413@gmail.com>
R: David Gibson <david@gibson.dropbear.id.au>
R: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
@@ -1452,7 +1448,7 @@ R: Yoshinori Sato <ysato@users.sourceforge.jp>
S: Orphan
F: docs/system/target-rx.rst
F: hw/rx/rx-gdbsim.c
-F: tests/acceptance/machine_rx_gdbsim.py
+F: tests/avocado/machine_rx_gdbsim.py
SH4 Machines
------------
@@ -1506,7 +1502,7 @@ F: include/hw/pci-host/sabre.h
F: hw/pci-bridge/simba.c
F: include/hw/pci-bridge/simba.h
F: pc-bios/openbios-sparc64
-F: tests/acceptance/machine_sparc64_sun4u.py
+F: tests/avocado/machine_sparc64_sun4u.py
Sun4v
M: Artyom Tarasenko <atar4qemu@gmail.com>
@@ -1522,29 +1518,24 @@ S: Maintained
F: hw/sparc/leon3.c
F: hw/*/grlib*
F: include/hw/*/grlib*
-F: tests/acceptance/machine_sparc_leon3.py
+F: tests/avocado/machine_sparc_leon3.py
S390 Machines
-------------
S390 Virtio-ccw
-M: Cornelia Huck <cohuck@redhat.com>
M: Halil Pasic <pasic@linux.ibm.com>
-M: Christian Borntraeger <borntraeger@de.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
+M: Eric Farman <farman@linux.ibm.com>
S: Supported
-F: hw/char/sclp*.[hc]
-F: hw/char/terminal3270.c
F: hw/s390x/
F: include/hw/s390x/
-F: hw/watchdog/wdt_diag288.c
-F: include/hw/watchdog/wdt_diag288.h
F: configs/devices/s390x-softmmu/default.mak
-F: tests/acceptance/machine_s390_ccw_virtio.py
-T: git https://gitlab.com/cohuck/qemu.git s390-next
+F: tests/avocado/machine_s390_ccw_virtio.py
T: git https://github.com/borntraeger/qemu.git s390-next
L: qemu-s390x@nongnu.org
S390-ccw boot
-M: Christian Borntraeger <borntraeger@de.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
M: Thomas Huth <thuth@redhat.com>
S: Supported
F: hw/s390x/ipl.*
@@ -1562,6 +1553,38 @@ F: hw/s390x/s390-pci*
F: include/hw/s390x/s390-pci*
L: qemu-s390x@nongnu.org
+S390 channel subsystem
+M: Halil Pasic <pasic@linux.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
+M: Eric Farman <farman@linux.ibm.com>
+S: Supported
+F: hw/s390x/ccw-device.[ch]
+F: hw/s390x/css.c
+F: hw/s390x/css-bridge.c
+F: include/hw/s390x/css.h
+F: include/hw/s390x/css-bridge.h
+F: include/hw/s390x/ioinst.h
+F: target/s390x/ioinst.c
+L: qemu-s390x@nongnu.org
+
+S390 CPU models
+M: David Hildenbrand <david@redhat.com>
+S: Maintained
+F: target/s390x/cpu_features*.[ch]
+F: target/s390x/cpu_models.[ch]
+L: qemu-s390x@nongnu.org
+
+S390 SCLP-backed devices
+M: Halil Pasic <pasic@linux.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
+S: Supported
+F: include/hw/s390x/event-facility.h
+F: include/hw/s390x/sclp.h
+F: hw/char/sclp*.[hc]
+F: hw/s390x/event-facility.c
+F: hw/s390x/sclp*.c
+L: qemu-s390x@nongnu.org
+
X86 Machines
------------
PC
@@ -1625,19 +1648,22 @@ microvm
M: Sergio Lopez <slp@redhat.com>
M: Paolo Bonzini <pbonzini@redhat.com>
S: Maintained
-F: docs/microvm.rst
+F: docs/system/i386/microvm.rst
F: hw/i386/microvm.c
F: include/hw/i386/microvm.h
F: pc-bios/bios-microvm.bin
Machine core
-M: Eduardo Habkost <ehabkost@redhat.com>
+M: Eduardo Habkost <eduardo@habkost.net>
M: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
+R: Philippe Mathieu-Daudé <f4bug@amsat.org>
+R: Yanan Wang <wangyanan55@huawei.com>
S: Supported
F: cpu.c
F: hw/core/cpu.c
F: hw/core/machine-qmp-cmds.c
F: hw/core/machine.c
+F: hw/core/machine-smp.c
F: hw/core/null-machine.c
F: hw/core/numa.c
F: hw/cpu/cluster.c
@@ -1647,6 +1673,7 @@ F: include/hw/boards.h
F: include/hw/core/cpu.h
F: include/hw/cpu/cluster.h
F: include/sysemu/numa.h
+F: tests/unit/test-smp-parse.c
T: git https://gitlab.com/ehabkost/qemu.git machine-next
Xtensa Machines
@@ -1776,6 +1803,13 @@ F: docs/specs/acpi_mem_hotplug.rst
F: docs/specs/acpi_pci_hotplug.rst
F: docs/specs/acpi_hw_reduced_hotplug.rst
+ACPI/VIOT
+M: Jean-Philippe Brucker <jean-philippe@linaro.org>
+R: Ani Sinha <ani@anisinha.ca>
+S: Supported
+F: hw/acpi/viot.c
+F: hw/acpi/viot.h
+
ACPI/HEST/GHES
R: Dongjiu Geng <gengdongjiu1@gmail.com>
L: qemu-arm@nongnu.org
@@ -1785,9 +1819,8 @@ F: include/hw/acpi/ghes.h
F: docs/specs/acpi_hest_ghes.rst
ppc4xx
-M: David Gibson <david@gibson.dropbear.id.au>
L: qemu-ppc@nongnu.org
-S: Odd Fixes
+S: Orphan
F: hw/ppc/ppc4*.c
F: hw/i2c/ppc4xx_i2c.c
F: include/hw/ppc/ppc4xx.h
@@ -1811,7 +1844,7 @@ F: docs/virtio-net-failover.rst
T: git https://github.com/jasowang/qemu.git net
Parallel NOR Flash devices
-M: Philippe Mathieu-Daudé <philmd@redhat.com>
+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
T: git https://gitlab.com/philmd/qemu.git pflash-next
S: Maintained
F: hw/block/pflash_cfi*.c
@@ -1826,6 +1859,7 @@ F: hw/scsi/*
F: tests/qtest/virtio-scsi-test.c
F: tests/qtest/fuzz-virtio-scsi-test.c
F: tests/qtest/am53c974-test.c
+F: tests/qtest/fuzz-lsi53c895a-test.c
T: git https://github.com/bonzini/qemu.git scsi-next
SSI
@@ -1879,7 +1913,6 @@ F: docs/igd-assign.txt
F: docs/devel/vfio-migration.rst
vfio-ccw
-M: Cornelia Huck <cohuck@redhat.com>
M: Eric Farman <farman@linux.ibm.com>
M: Matthew Rosato <mjrosato@linux.ibm.com>
S: Supported
@@ -1887,7 +1920,6 @@ F: hw/vfio/ccw.c
F: hw/s390x/s390-ccw.c
F: include/hw/s390x/s390-ccw.h
F: include/hw/s390x/vfio-ccw.h
-T: git https://gitlab.com/cohuck/qemu.git s390-next
L: qemu-s390x@nongnu.org
vfio-ap
@@ -1926,6 +1958,7 @@ virtio-balloon
M: Michael S. Tsirkin <mst@redhat.com>
M: David Hildenbrand <david@redhat.com>
S: Maintained
+F: docs/interop/virtio-balloon-stats.rst
F: hw/virtio/virtio-balloon*.c
F: include/hw/virtio/virtio-balloon.h
F: softmmu/balloon.c
@@ -1956,9 +1989,11 @@ T: git https://github.com/stefanha/qemu.git block
virtio-ccw
M: Cornelia Huck <cohuck@redhat.com>
M: Halil Pasic <pasic@linux.ibm.com>
+M: Eric Farman <farman@linux.ibm.com>
S: Supported
F: hw/s390x/virtio-ccw*.[hc]
F: hw/s390x/vhost-vsock-ccw.c
+F: hw/s390x/vhost-user-fs-ccw.c
T: git https://gitlab.com/cohuck/qemu.git s390-next
T: git https://github.com/borntraeger/qemu.git s390-next
L: qemu-s390x@nongnu.org
@@ -2123,7 +2158,7 @@ M: Alex Bennée <alex.bennee@linaro.org>
S: Maintained
F: hw/core/guest-loader.c
F: docs/system/guest-loader.rst
-F: tests/acceptance/boot_xen.py
+F: tests/avocado/boot_xen.py
Intel Hexadecimal Object File Loader
M: Su Hang <suhang16@mails.ucas.ac.cn>
@@ -2228,7 +2263,7 @@ F: hw/isa/piix4.c
F: include/hw/southbridge/piix.h
Firmware configuration (fw_cfg)
-M: Philippe Mathieu-Daudé <philmd@redhat.com>
+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
R: Gerd Hoffmann <kraxel@redhat.com>
S: Supported
F: docs/specs/fw_cfg.txt
@@ -2242,8 +2277,6 @@ T: git https://github.com/philmd/qemu.git fw_cfg-next
XIVE
M: Cédric Le Goater <clg@kaod.org>
-R: David Gibson <david@gibson.dropbear.id.au>
-R: Greg Kurz <groug@kaod.org>
L: qemu-ppc@nongnu.org
S: Supported
F: hw/*/*xive*
@@ -2279,6 +2312,68 @@ F: net/can/*
F: hw/net/can/*
F: include/net/can_*.h
+OpenPIC interrupt controller
+M: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
+S: Odd Fixes
+F: hw/intc/openpic.c
+F: include/hw/ppc/openpic.h
+
+MIPS CPS
+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
+S: Odd Fixes
+F: hw/misc/mips_*
+F: include/hw/misc/mips_*
+
+MIPS GIC
+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
+S: Odd Fixes
+F: hw/intc/mips_gic.c
+F: hw/timer/mips_gictimer.c
+F: include/hw/intc/mips_gic.h
+F: include/hw/timer/mips_gictimer.h
+
+S390 3270 device
+M: Halil Pasic <pasic@linux.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
+S: Odd fixes
+F: include/hw/s390x/3270-ccw.h
+F: hw/char/terminal3270.c
+F: hw/s390x/3270-ccw.c
+L: qemu-s390x@nongnu.org
+
+S390 diag 288 watchdog
+M: Halil Pasic <pasic@linux.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
+S: Supported
+F: hw/watchdog/wdt_diag288.c
+F: include/hw/watchdog/wdt_diag288.h
+L: qemu-s390x@nongnu.org
+
+S390 storage key device
+M: Halil Pasic <pasic@linux.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
+S: Supported
+F: hw/s390x/storage-keys.h
+F: hw/390x/s390-skeys*.c
+L: qemu-s390x@nongnu.org
+
+S390 storage attribute device
+M: Halil Pasic <pasic@linux.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
+S: Supported
+F: hw/s390x/storage-attributes.h
+F: hw/s390/s390-stattrib*.c
+L: qemu-s390x@nongnu.org
+
+S390 floating interrupt controller
+M: Halil Pasic <pasic@linux.ibm.com>
+M: Christian Borntraeger <borntraeger@linux.ibm.com>
+M: David Hildenbrand <david@redhat.com>
+S: Supported
+F: hw/intc/s390_flic*.c
+F: include/hw/s390x/s390_flic.h
+L: qemu-s390x@nongnu.org
+
Subsystems
----------
Overall Audio backends
@@ -2297,11 +2392,13 @@ F: qapi/audio.json
ALSA Audio backend
M: Gerd Hoffmann <kraxel@redhat.com>
+R: Christian Schoenebeck <qemu_oss@crudebyte.com>
S: Odd Fixes
F: audio/alsaaudio.c
Core Audio framework backend
M: Gerd Hoffmann <kraxel@redhat.com>
+R: Christian Schoenebeck <qemu_oss@crudebyte.com>
S: Odd Fixes
F: audio/coreaudio.c
@@ -2312,6 +2409,7 @@ F: audio/dsound*
JACK Audio Connection Kit backend
M: Gerd Hoffmann <kraxel@redhat.com>
+R: Christian Schoenebeck <qemu_oss@crudebyte.com>
S: Odd Fixes
F: audio/jackaudio.c
@@ -2327,6 +2425,7 @@ F: audio/paaudio.c
SDL Audio backend
M: Gerd Hoffmann <kraxel@redhat.com>
+R: Thomas Huth <huth@tuxfamily.org>
S: Odd Fixes
F: audio/sdlaudio.c
@@ -2504,7 +2603,7 @@ F: scripts/coccinelle/errp-guard.cocci
GDB stub
M: Alex Bennée <alex.bennee@linaro.org>
-R: Philippe Mathieu-Daudé <philmd@redhat.com>
+R: Philippe Mathieu-Daudé <f4bug@amsat.org>
S: Maintained
F: gdbstub*
F: include/exec/gdbstub.h
@@ -2515,6 +2614,7 @@ Memory API
M: Paolo Bonzini <pbonzini@redhat.com>
M: Peter Xu <peterx@redhat.com>
M: David Hildenbrand <david@redhat.com>
+R: Philippe Mathieu-Daudé <f4bug@amsat.org>
S: Supported
F: include/exec/ioport.h
F: include/exec/memop.h
@@ -2628,13 +2728,13 @@ F: backends/cryptodev*.c
Python library
M: John Snow <jsnow@redhat.com>
M: Cleber Rosa <crosa@redhat.com>
-R: Eduardo Habkost <ehabkost@redhat.com>
+R: Eduardo Habkost <eduardo@habkost.net>
S: Maintained
F: python/
T: git https://gitlab.com/jsnow/qemu.git python
Python scripts
-M: Eduardo Habkost <ehabkost@redhat.com>
+M: Eduardo Habkost <eduardo@habkost.net>
M: Cleber Rosa <crosa@redhat.com>
S: Odd Fixes
F: scripts/*.py
@@ -2707,10 +2807,18 @@ F: scripts/qemu-guest-agent/
F: tests/unit/test-qga.c
T: git https://github.com/mdroth/qemu.git qga
+QEMU Guest Agent Win32
+M: Konstantin Kostiuk <kkostiuk@redhat.com>
+S: Maintained
+F: qga/*win32*
+F: qga/vss-win32/
+F: qga/installer/
+T: git https://github.com/kostyanf14/qemu.git qga-win32
+
QOM
M: Paolo Bonzini <pbonzini@redhat.com>
R: Daniel P. Berrange <berrange@redhat.com>
-R: Eduardo Habkost <ehabkost@redhat.com>
+R: Eduardo Habkost <eduardo@habkost.net>
S: Supported
F: docs/qdev-device-use.txt
F: hw/core/qdev*
@@ -2730,7 +2838,7 @@ F: tests/unit/check-qom-proplist.c
F: tests/unit/test-qdev-global-props.c
QOM boilerplate conversion script
-M: Eduardo Habkost <ehabkost@redhat.com>
+M: Eduardo Habkost <eduardo@habkost.net>
S: Maintained
F: scripts/codeconverter/
@@ -2852,11 +2960,15 @@ D-Bus
M: Marc-André Lureau <marcandre.lureau@redhat.com>
S: Maintained
F: backends/dbus-vmstate.c
-F: tests/dbus-vmstate*
+F: ui/dbus*
+F: audio/dbus*
F: util/dbus.c
+F: include/ui/dbus*
F: include/qemu/dbus.h
-F: docs/interop/dbus.rst
-F: docs/interop/dbus-vmstate.rst
+F: docs/interop/dbus*
+F: docs/sphinx/dbus*
+F: docs/sphinx/fakedbusdoc.py
+F: tests/qtest/dbus*
Seccomp
M: Eduardo Otubo <otubo@redhat.com>
@@ -2956,12 +3068,13 @@ F: docs/COLO-FT.txt
COLO Proxy
M: Zhang Chen <chen.zhang@intel.com>
-M: Li Zhijian <lizhijian@cn.fujitsu.com>
+M: Li Zhijian <lizhijian@fujitsu.com>
S: Supported
F: docs/colo-proxy.txt
F: net/colo*
F: net/filter-rewriter.c
F: net/filter-mirror.c
+F: tests/qtest/test-filter*
Record/replay
M: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
@@ -2974,9 +3087,9 @@ F: net/filter-replay.c
F: include/sysemu/replay.h
F: docs/replay.txt
F: stubs/replay.c
-F: tests/acceptance/replay_kernel.py
-F: tests/acceptance/replay_linux.py
-F: tests/acceptance/reverse_debugging.py
+F: tests/avocado/replay_kernel.py
+F: tests/avocado/replay_linux.py
+F: tests/avocado/reverse_debugging.py
F: qapi/replay.json
IOVA Tree
@@ -3003,14 +3116,14 @@ F: include/hw/i2c/smbus_slave.h
F: include/hw/i2c/smbus_eeprom.h
Firmware schema specifications
-M: Philippe Mathieu-Daudé <philmd@redhat.com>
+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
R: Daniel P. Berrange <berrange@redhat.com>
R: Kashyap Chamarthy <kchamart@redhat.com>
S: Maintained
F: docs/interop/firmware.json
EDK2 Firmware
-M: Philippe Mathieu-Daudé <philmd@redhat.com>
+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
R: Gerd Hoffmann <kraxel@redhat.com>
S: Supported
F: hw/i386/*ovmf*
@@ -3056,8 +3169,9 @@ Usermode Emulation
Overall usermode emulation
M: Riku Voipio <riku.voipio@iki.fi>
S: Maintained
-F: thunk.c
F: accel/tcg/user-exec*.c
+F: include/user/
+F: common-user/
BSD user
M: Warner Losh <imp@bsdimp.com>
@@ -3093,7 +3207,7 @@ S: Maintained
F: docs/devel/tcg-plugins.rst
F: plugins/
F: tests/plugin/
-F: tests/acceptance/tcg_plugins.py
+F: tests/avocado/tcg_plugins.py
F: contrib/plugins/
AArch64 TCG target
@@ -3117,6 +3231,11 @@ S: Maintained
F: tcg/i386/
F: disas/i386.c
+LoongArch64 TCG target
+M: WANG Xuerui <git@xen0n.name>
+S: Maintained
+F: tcg/loongarch64/
+
MIPS TCG target
M: Philippe Mathieu-Daudé <f4bug@amsat.org>
R: Aurelien Jarno <aurelien@aurel32.net>
@@ -3242,7 +3361,7 @@ F: block/null.c
NVMe Block Driver
M: Stefan Hajnoczi <stefanha@redhat.com>
R: Fam Zheng <fam@euphon.net>
-R: Philippe Mathieu-Daudé <philmd@redhat.com>
+R: Philippe Mathieu-Daudé <f4bug@amsat.org>
L: qemu-block@nongnu.org
S: Supported
F: block/nvme*
@@ -3449,7 +3568,7 @@ M: Alex Bennée <alex.bennee@linaro.org>
M: Philippe Mathieu-Daudé <f4bug@amsat.org>
M: Thomas Huth <thuth@redhat.com>
R: Wainer dos Santos Moschetta <wainersm@redhat.com>
-R: Willian Rampazzo <willianr@redhat.com>
+R: Beraldo Leal <bleal@redhat.com>
S: Maintained
F: .github/lockdown.yml
F: .gitlab-ci.yml
@@ -3482,14 +3601,20 @@ S: Maintained
F: tests/tcg/Makefile
F: tests/tcg/Makefile.include
-Acceptance (Integration) Testing with the Avocado framework
+Integration Testing with the Avocado framework
W: https://trello.com/b/6Qi1pxVn/avocado-qemu
R: Cleber Rosa <crosa@redhat.com>
-R: Philippe Mathieu-Daudé <philmd@redhat.com>
+R: Philippe Mathieu-Daudé <f4bug@amsat.org>
R: Wainer dos Santos Moschetta <wainersm@redhat.com>
-R: Willian Rampazzo <willianr@redhat.com>
+R: Beraldo Leal <bleal@redhat.com>
S: Odd Fixes
-F: tests/acceptance/
+F: tests/avocado/
+
+GitLab custom runner (Works On Arm Sponsored)
+M: Alex Bennée <alex.bennee@linaro.org>
+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
+S: Maintained
+F: .gitlab-ci.d/custom-runners/ubuntu-20.04-aarch64.yml
Documentation
-------------
diff --git a/Makefile b/Makefile
index 401c623a65..db9a788601 100644
--- a/Makefile
+++ b/Makefile
@@ -87,7 +87,7 @@ x := $(shell rm -rf meson-private meson-info meson-logs)
endif
# 1. ensure config-host.mak is up-to-date
-config-host.mak: $(SRC_PATH)/configure $(SRC_PATH)/pc-bios $(SRC_PATH)/VERSION
+config-host.mak: $(SRC_PATH)/configure $(SRC_PATH)/scripts/meson-buildoptions.sh $(SRC_PATH)/pc-bios $(SRC_PATH)/VERSION
@echo config-host.mak is out-of-date, running configure
@if test -f meson-private/coredata.dat; then \
./config.status --skip-meson; \
@@ -124,6 +124,12 @@ ifneq ($(MESON),)
Makefile.mtest: build.ninja scripts/mtest2make.py
$(MESON) introspect --targets --tests --benchmarks | $(PYTHON) scripts/mtest2make.py > $@
-include Makefile.mtest
+
+.PHONY: update-buildoptions
+all update-buildoptions: $(SRC_PATH)/scripts/meson-buildoptions.sh
+$(SRC_PATH)/scripts/meson-buildoptions.sh: $(SRC_PATH)/meson_options.txt
+ $(MESON) introspect --buildoptions $(SRC_PATH)/meson.build | $(PYTHON) \
+ scripts/meson-buildoptions.py > $@.tmp && mv $@.tmp $@
endif
# 4. Rules to bridge to other makefiles
@@ -139,7 +145,8 @@ NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \
$(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
-ninja-cmd-goals += $(foreach t, $(.tests), $(.test.deps.$t))
+ninja-cmd-goals += $(foreach t, $(.check.build-suites), $(.check-$t.deps))
+ninja-cmd-goals += $(foreach t, $(.bench.build-suites), $(.bench-$t.deps))
makefile-targets := build.ninja ctags TAGS cscope dist clean uninstall
# "ninja -t targets" also lists all prerequisites. If build system
@@ -199,14 +206,11 @@ recurse-clean: $(addsuffix /clean, $(ROM_DIRS))
clean: recurse-clean
-$(quiet-@)test -f build.ninja && $(NINJA) $(NINJAFLAGS) -t clean || :
-$(quiet-@)test -f build.ninja && $(NINJA) $(NINJAFLAGS) clean-ctlist || :
-# avoid old build problems by removing potentially incorrect old files
- rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
find . \( -name '*.so' -o -name '*.dll' -o -name '*.[oda]' \) -type f \
! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-aarch64.a \
! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
-exec rm {} +
- rm -f TAGS cscope.* *.pod *~ */*~
- rm -f fsdev/*.pod scsi/*.pod
+ rm -f TAGS cscope.* *~ */*~
VERSION = $(shell cat $(SRC_PATH)/VERSION)
@@ -217,10 +221,10 @@ qemu-%.tar.bz2:
distclean: clean
-$(quiet-@)test -f build.ninja && $(NINJA) $(NINJAFLAGS) -t clean -g || :
- rm -f config-host.mak config-host.h* config-poison.h
+ rm -f config-host.mak
rm -f tests/tcg/config-*.mak
- rm -f config-all-disas.mak config.status
- rm -f roms/seabios/config.mak roms/vgabios/config.mak
+ rm -f config.status
+ rm -f roms/seabios/config.mak
rm -f qemu-plugins-ld.symbols qemu-plugins-ld64.symbols
rm -f *-config-target.h *-config-devices.mak *-config-devices.h
rm -rf meson-private meson-logs meson-info compile_commands.json
@@ -229,7 +233,8 @@ distclean: clean
rm -f linux-headers/asm
rm -Rf .sdk
-find-src-path = find "$(SRC_PATH)/" -path "$(SRC_PATH)/meson" -prune -o \( -name "*.[chsS]" -o -name "*.[ch].inc" \)
+find-src-path = find "$(SRC_PATH)" -path "$(SRC_PATH)/meson" -prune -o \
+ -type l -prune -o \( -name "*.[chsS]" -o -name "*.[ch].inc" \)
.PHONY: ctags
ctags:
@@ -250,7 +255,7 @@ gtags:
"GTAGS", "Remove old $@ files")
$(call quiet-command, \
(cd $(SRC_PATH) && \
- $(find-src-path) | gtags -f -), \
+ $(find-src-path) -print | gtags -f -), \
"GTAGS", "Re-index $(SRC_PATH)")
.PHONY: TAGS
@@ -280,6 +285,7 @@ cscope:
# Needed by "meson install"
export DESTDIR
+include $(SRC_PATH)/tests/lcitool/Makefile.include
include $(SRC_PATH)/tests/docker/Makefile.include
include $(SRC_PATH)/tests/vm/Makefile.include
@@ -309,6 +315,7 @@ endif
@echo 'Test targets:'
$(call print-help,check,Run all tests (check-help for details))
$(call print-help,bench,Run all benchmarks)
+ $(call print-help,lcitool-help,Help about targets for managing build environment manifests)
$(call print-help,docker-help,Help about targets running tests inside containers)
$(call print-help,vm-help,Help about targets running tests inside VM)
@echo ''
diff --git a/README.rst b/README.rst
index 79b19f1481..23795b8377 100644
--- a/README.rst
+++ b/README.rst
@@ -59,9 +59,9 @@ of other UNIX targets. The simple steps to build QEMU are:
Additional information can also be found online via the QEMU website:
-* `<https://qemu.org/Hosts/Linux>`_
-* `<https://qemu.org/Hosts/Mac>`_
-* `<https://qemu.org/Hosts/W32>`_
+* `<https://wiki.qemu.org/Hosts/Linux>`_
+* `<https://wiki.qemu.org/Hosts/Mac>`_
+* `<https://wiki.qemu.org/Hosts/W32>`_
Submitting patches
@@ -84,8 +84,8 @@ the Developers Guide.
Additional information on submitting patches can be found online via
the QEMU website
-* `<https://qemu.org/Contribute/SubmitAPatch>`_
-* `<https://qemu.org/Contribute/TrivialPatches>`_
+* `<https://wiki.qemu.org/Contribute/SubmitAPatch>`_
+* `<https://wiki.qemu.org/Contribute/TrivialPatches>`_
The QEMU website is also maintained under source control.
@@ -144,7 +144,7 @@ reported via GitLab.
For additional information on bug reporting consult:
-* `<https://qemu.org/Contribute/ReportABug>`_
+* `<https://wiki.qemu.org/Contribute/ReportABug>`_
ChangeLog
@@ -168,4 +168,4 @@ main methods being email and IRC
Information on additional methods of contacting the community can be
found online via the QEMU website:
-* `<https://qemu.org/Contribute/StartHere>`_
+* `<https://wiki.qemu.org/Contribute/StartHere>`_
diff --git a/VERSION b/VERSION
index 0ad6cf7fe6..8e8e37d75b 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-6.1.50
+6.2.50
diff --git a/accel/hvf/hvf-accel-ops.c b/accel/hvf/hvf-accel-ops.c
index 93976f4ece..54457c76c2 100644
--- a/accel/hvf/hvf-accel-ops.c
+++ b/accel/hvf/hvf-accel-ops.c
@@ -122,6 +122,7 @@ static void hvf_set_phys_mem(MemoryRegionSection *section, bool add)
MemoryRegion *area = section->mr;
bool writeable = !area->readonly && !area->rom_device;
hv_memory_flags_t flags;
+ uint64_t page_size = qemu_real_host_page_size;
if (!memory_region_is_ram(area)) {
if (writeable) {
@@ -135,6 +136,12 @@ static void hvf_set_phys_mem(MemoryRegionSection *section, bool add)
}
}
+ if (!QEMU_IS_ALIGNED(int128_get64(section->size), page_size) ||
+ !QEMU_IS_ALIGNED(section->offset_within_address_space, page_size)) {
+ /* Not page aligned, so we can not map as RAM */
+ add = false;
+ }
+
mem = hvf_find_overlap_slot(
section->offset_within_address_space,
int128_get64(section->size));
@@ -295,6 +302,7 @@ static void hvf_region_del(MemoryListener *listener,
}
static MemoryListener hvf_memory_listener = {
+ .name = "hvf",
.priority = 10,
.region_add = hvf_region_add,
.region_del = hvf_region_del,
@@ -320,7 +328,7 @@ static int hvf_accel_init(MachineState *ms)
s = g_new0(HVFState, 1);
- s->num_slots = 32;
+ s->num_slots = ARRAY_SIZE(s->slots);
for (x = 0; x < s->num_slots; ++x) {
s->slots[x].size = 0;
s->slots[x].slot_id = x;
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index cace5ffe64..0e66ebb497 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -61,6 +61,10 @@
#endif
#define PAGE_SIZE qemu_real_host_page_size
+#ifndef KVM_GUESTDBG_BLOCKIRQ
+#define KVM_GUESTDBG_BLOCKIRQ 0
+#endif
+
//#define DEBUG_KVM
#ifdef DEBUG_KVM
@@ -168,6 +172,8 @@ bool kvm_vm_attributes_allowed;
bool kvm_direct_msi_allowed;
bool kvm_ioeventfd_any_length_allowed;
bool kvm_msi_use_devid;
+bool kvm_has_guest_debug;
+int kvm_sstep_flags;
static bool kvm_immediate_exit;
static hwaddr kvm_max_slot_size = ~0;
@@ -469,6 +475,7 @@ int kvm_init_vcpu(CPUState *cpu, Error **errp)
cpu->kvm_fd = ret;
cpu->kvm_state = s;
cpu->vcpu_dirty = true;
+ cpu->dirty_pages = 0;
mmap_size = kvm_ioctl(s, KVM_GET_VCPU_MMAP_SIZE, 0);
if (mmap_size < 0) {
@@ -743,6 +750,7 @@ static uint32_t kvm_dirty_ring_reap_one(KVMState *s, CPUState *cpu)
count++;
}
cpu->kvm_fetch_index = fetch;
+ cpu->dirty_pages += count;
return count;
}
@@ -1129,6 +1137,7 @@ static void kvm_coalesce_pio_del(MemoryListener *listener,
}
static MemoryListener kvm_coalesced_pio_listener = {
+ .name = "kvm-coalesced-pio",
.coalesced_io_add = kvm_coalesce_pio_add,
.coalesced_io_del = kvm_coalesce_pio_del,
};
@@ -1633,7 +1642,7 @@ static void kvm_io_ioeventfd_del(MemoryListener *listener,
}
void kvm_memory_listener_register(KVMState *s, KVMMemoryListener *kml,
- AddressSpace *as, int as_id)
+ AddressSpace *as, int as_id, const char *name)
{
int i;
@@ -1649,6 +1658,7 @@ void kvm_memory_listener_register(KVMState *s, KVMMemoryListener *kml,
kml->listener.log_start = kvm_log_start;
kml->listener.log_stop = kvm_log_stop;
kml->listener.priority = 10;
+ kml->listener.name = name;
if (s->kvm_dirty_ring_size) {
kml->listener.log_sync_global = kvm_log_sync_global;
@@ -1669,6 +1679,7 @@ void kvm_memory_listener_register(KVMState *s, KVMMemoryListener *kml,
}
static MemoryListener kvm_io_listener = {
+ .name = "kvm-io",
.eventfd_add = kvm_io_ioeventfd_add,
.eventfd_del = kvm_io_ioeventfd_del,
.priority = 10,
@@ -2293,6 +2304,11 @@ bool kvm_vcpu_id_is_valid(int vcpu_id)
return vcpu_id >= 0 && vcpu_id < kvm_max_vcpu_id(s);
}
+bool kvm_dirty_ring_enabled(void)
+{
+ return kvm_state->kvm_dirty_ring_size ? true : false;
+}
+
static int kvm_init(MachineState *ms)
{
MachineClass *mc = MACHINE_GET_CLASS(ms);
@@ -2554,6 +2570,25 @@ static int kvm_init(MachineState *ms)
kvm_ioeventfd_any_length_allowed =
(kvm_check_extension(s, KVM_CAP_IOEVENTFD_ANY_LENGTH) > 0);
+#ifdef KVM_CAP_SET_GUEST_DEBUG
+ kvm_has_guest_debug =
+ (kvm_check_extension(s, KVM_CAP_SET_GUEST_DEBUG) > 0);
+#endif
+
+ kvm_sstep_flags = 0;
+ if (kvm_has_guest_debug) {
+ kvm_sstep_flags = SSTEP_ENABLE;
+
+#if defined KVM_CAP_SET_GUEST_DEBUG2
+ int guest_debug_flags =
+ kvm_check_extension(s, KVM_CAP_SET_GUEST_DEBUG2);
+
+ if (guest_debug_flags & KVM_GUESTDBG_BLOCKIRQ) {
+ kvm_sstep_flags |= SSTEP_NOIRQ;
+ }
+#endif
+ }
+
kvm_state = s;
ret = kvm_arch_init(ms, s);
@@ -2579,7 +2614,7 @@ static int kvm_init(MachineState *ms)
s->memory_listener.listener.coalesced_io_del = kvm_uncoalesce_mmio_region;
kvm_memory_listener_register(s, &s->memory_listener,
- &address_space_memory, 0);
+ &address_space_memory, 0, "kvm-memory");
if (kvm_eventfds_allowed) {
memory_listener_register(&kvm_io_listener,
&address_space_io);
@@ -3183,6 +3218,10 @@ int kvm_update_guest_debug(CPUState *cpu, unsigned long reinject_trap)
if (cpu->singlestep_enabled) {
data.dbg.control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP;
+
+ if (cpu->singlestep_enabled & SSTEP_NOIRQ) {
+ data.dbg.control |= KVM_GUESTDBG_BLOCKIRQ;
+ }
}
kvm_arch_update_guest_debug(cpu, &data.dbg);
diff --git a/accel/kvm/meson.build b/accel/kvm/meson.build
index 8d219bea50..397a1fe1fd 100644
--- a/accel/kvm/meson.build
+++ b/accel/kvm/meson.build
@@ -3,6 +3,5 @@ kvm_ss.add(files(
'kvm-all.c',
'kvm-accel-ops.c',
))
-kvm_ss.add(when: 'CONFIG_SEV', if_false: files('sev-stub.c'))
specific_ss.add_all(when: 'CONFIG_KVM', if_true: kvm_ss)
diff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c
index 5b1d00a222..5319573e00 100644
--- a/accel/stubs/kvm-stub.c
+++ b/accel/stubs/kvm-stub.c
@@ -147,4 +147,9 @@ bool kvm_arm_supports_user_irq(void)
{
return false;
}
+
+bool kvm_dirty_ring_enabled(void)
+{
+ return false;
+}
#endif
diff --git a/accel/tcg/atomic_common.c.inc b/accel/tcg/atomic_common.c.inc
index 6c0339f610..1df1f243e9 100644
--- a/accel/tcg/atomic_common.c.inc
+++ b/accel/tcg/atomic_common.c.inc
@@ -13,56 +13,43 @@
* See the COPYING file in the top-level directory.
*/
-static uint16_t atomic_trace_rmw_pre(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi)
+static void atomic_trace_rmw_pre(CPUArchState *env, target_ulong addr,
+ MemOpIdx oi)
{
CPUState *cpu = env_cpu(env);
- uint16_t info = trace_mem_get_info(get_memop(oi), get_mmuidx(oi), false);
- trace_guest_mem_before_exec(cpu, addr, info);
- trace_guest_mem_before_exec(cpu, addr, info | TRACE_MEM_ST);
-
- return info;
+ trace_guest_rmw_before_exec(cpu, addr, oi);
}
static void atomic_trace_rmw_post(CPUArchState *env, target_ulong addr,
- uint16_t info)
+ MemOpIdx oi)
{
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, info);
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, info | TRACE_MEM_ST);
+ qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_RW);
}
#if HAVE_ATOMIC128
-static uint16_t atomic_trace_ld_pre(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi)
+static void atomic_trace_ld_pre(CPUArchState *env, target_ulong addr,
+ MemOpIdx oi)
{
- uint16_t info = trace_mem_get_info(get_memop(oi), get_mmuidx(oi), false);
-
- trace_guest_mem_before_exec(env_cpu(env), addr, info);
-
- return info;
+ trace_guest_ld_before_exec(env_cpu(env), addr, oi);
}
static void atomic_trace_ld_post(CPUArchState *env, target_ulong addr,
- uint16_t info)
+ MemOpIdx oi)
{
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, info);
+ qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
}
-static uint16_t atomic_trace_st_pre(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi)
+static void atomic_trace_st_pre(CPUArchState *env, target_ulong addr,
+ MemOpIdx oi)
{
- uint16_t info = trace_mem_get_info(get_memop(oi), get_mmuidx(oi), true);
-
- trace_guest_mem_before_exec(env_cpu(env), addr, info);
-
- return info;
+ trace_guest_st_before_exec(env_cpu(env), addr, oi);
}
static void atomic_trace_st_post(CPUArchState *env, target_ulong addr,
- uint16_t info)
+ MemOpIdx oi)
{
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, info);
+ qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
}
#endif
diff --git a/accel/tcg/atomic_template.h b/accel/tcg/atomic_template.h
index 8098a1be31..2d917b6b1f 100644
--- a/accel/tcg/atomic_template.h
+++ b/accel/tcg/atomic_template.h
@@ -19,7 +19,6 @@
*/
#include "qemu/plugin.h"
-#include "trace/mem.h"
#if DATA_SIZE == 16
# define SUFFIX o
@@ -72,77 +71,77 @@
ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, target_ulong addr,
ABI_TYPE cmpv, ABI_TYPE newv,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE,
PAGE_READ | PAGE_WRITE, retaddr);
DATA_TYPE ret;
- uint16_t info = atomic_trace_rmw_pre(env, addr, oi);
+ atomic_trace_rmw_pre(env, addr, oi);
#if DATA_SIZE == 16
ret = atomic16_cmpxchg(haddr, cmpv, newv);
#else
ret = qatomic_cmpxchg__nocheck(haddr, cmpv, newv);
#endif
ATOMIC_MMU_CLEANUP;
- atomic_trace_rmw_post(env, addr, info);
+ atomic_trace_rmw_post(env, addr, oi);
return ret;
}
#if DATA_SIZE >= 16
#if HAVE_ATOMIC128
ABI_TYPE ATOMIC_NAME(ld)(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE,
PAGE_READ, retaddr);
DATA_TYPE val;
- uint16_t info = atomic_trace_ld_pre(env, addr, oi);
+ atomic_trace_ld_pre(env, addr, oi);
val = atomic16_read(haddr);
ATOMIC_MMU_CLEANUP;
- atomic_trace_ld_post(env, addr, info);
+ atomic_trace_ld_post(env, addr, oi);
return val;
}
void ATOMIC_NAME(st)(CPUArchState *env, target_ulong addr, ABI_TYPE val,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE,
PAGE_WRITE, retaddr);
- uint16_t info = atomic_trace_st_pre(env, addr, oi);
+ atomic_trace_st_pre(env, addr, oi);
atomic16_set(haddr, val);
ATOMIC_MMU_CLEANUP;
- atomic_trace_st_post(env, addr, info);
+ atomic_trace_st_post(env, addr, oi);
}
#endif
#else
ABI_TYPE ATOMIC_NAME(xchg)(CPUArchState *env, target_ulong addr, ABI_TYPE val,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE,
PAGE_READ | PAGE_WRITE, retaddr);
DATA_TYPE ret;
- uint16_t info = atomic_trace_rmw_pre(env, addr, oi);
+ atomic_trace_rmw_pre(env, addr, oi);
ret = qatomic_xchg__nocheck(haddr, val);
ATOMIC_MMU_CLEANUP;
- atomic_trace_rmw_post(env, addr, info);
+ atomic_trace_rmw_post(env, addr, oi);
return ret;
}
#define GEN_ATOMIC_HELPER(X) \
ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
- ABI_TYPE val, TCGMemOpIdx oi, uintptr_t retaddr) \
+ ABI_TYPE val, MemOpIdx oi, uintptr_t retaddr) \
{ \
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, \
PAGE_READ | PAGE_WRITE, retaddr); \
DATA_TYPE ret; \
- uint16_t info = atomic_trace_rmw_pre(env, addr, oi); \
+ atomic_trace_rmw_pre(env, addr, oi); \
ret = qatomic_##X(haddr, val); \
ATOMIC_MMU_CLEANUP; \
- atomic_trace_rmw_post(env, addr, info); \
+ atomic_trace_rmw_post(env, addr, oi); \
return ret; \
}
@@ -167,12 +166,12 @@ GEN_ATOMIC_HELPER(xor_fetch)
*/
#define GEN_ATOMIC_HELPER_FN(X, FN, XDATA_TYPE, RET) \
ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
- ABI_TYPE xval, TCGMemOpIdx oi, uintptr_t retaddr) \
+ ABI_TYPE xval, MemOpIdx oi, uintptr_t retaddr) \
{ \
XDATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, \
PAGE_READ | PAGE_WRITE, retaddr); \
XDATA_TYPE cmp, old, new, val = xval; \
- uint16_t info = atomic_trace_rmw_pre(env, addr, oi); \
+ atomic_trace_rmw_pre(env, addr, oi); \
smp_mb(); \
cmp = qatomic_read__nocheck(haddr); \
do { \
@@ -180,7 +179,7 @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
cmp = qatomic_cmpxchg__nocheck(haddr, old, new); \
} while (cmp != old); \
ATOMIC_MMU_CLEANUP; \
- atomic_trace_rmw_post(env, addr, info); \
+ atomic_trace_rmw_post(env, addr, oi); \
return RET; \
}
@@ -211,78 +210,78 @@ GEN_ATOMIC_HELPER_FN(umax_fetch, MAX, DATA_TYPE, new)
ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, target_ulong addr,
ABI_TYPE cmpv, ABI_TYPE newv,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE,
PAGE_READ | PAGE_WRITE, retaddr);
DATA_TYPE ret;
- uint16_t info = atomic_trace_rmw_pre(env, addr, oi);
+ atomic_trace_rmw_pre(env, addr, oi);
#if DATA_SIZE == 16
ret = atomic16_cmpxchg(haddr, BSWAP(cmpv), BSWAP(newv));
#else
ret = qatomic_cmpxchg__nocheck(haddr, BSWAP(cmpv), BSWAP(newv));
#endif
ATOMIC_MMU_CLEANUP;
- atomic_trace_rmw_post(env, addr, info);
+ atomic_trace_rmw_post(env, addr, oi);
return BSWAP(ret);
}
#if DATA_SIZE >= 16
#if HAVE_ATOMIC128
ABI_TYPE ATOMIC_NAME(ld)(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE,
PAGE_READ, retaddr);
DATA_TYPE val;
- uint16_t info = atomic_trace_ld_pre(env, addr, oi);
+ atomic_trace_ld_pre(env, addr, oi);
val = atomic16_read(haddr);
ATOMIC_MMU_CLEANUP;
- atomic_trace_ld_post(env, addr, info);
+ atomic_trace_ld_post(env, addr, oi);
return BSWAP(val);
}
void ATOMIC_NAME(st)(CPUArchState *env, target_ulong addr, ABI_TYPE val,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE,
PAGE_WRITE, retaddr);
- uint16_t info = atomic_trace_st_pre(env, addr, oi);
+ atomic_trace_st_pre(env, addr, oi);
val = BSWAP(val);
atomic16_set(haddr, val);
ATOMIC_MMU_CLEANUP;
- atomic_trace_st_post(env, addr, info);
+ atomic_trace_st_post(env, addr, oi);
}
#endif
#else
ABI_TYPE ATOMIC_NAME(xchg)(CPUArchState *env, target_ulong addr, ABI_TYPE val,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE,
PAGE_READ | PAGE_WRITE, retaddr);
ABI_TYPE ret;
- uint16_t info = atomic_trace_rmw_pre(env, addr, oi);
+ atomic_trace_rmw_pre(env, addr, oi);
ret = qatomic_xchg__nocheck(haddr, BSWAP(val));
ATOMIC_MMU_CLEANUP;
- atomic_trace_rmw_post(env, addr, info);
+ atomic_trace_rmw_post(env, addr, oi);
return BSWAP(ret);
}
#define GEN_ATOMIC_HELPER(X) \
ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
- ABI_TYPE val, TCGMemOpIdx oi, uintptr_t retaddr) \
+ ABI_TYPE val, MemOpIdx oi, uintptr_t retaddr) \
{ \
DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, \
PAGE_READ | PAGE_WRITE, retaddr); \
DATA_TYPE ret; \
- uint16_t info = atomic_trace_rmw_pre(env, addr, oi); \
+ atomic_trace_rmw_pre(env, addr, oi); \
ret = qatomic_##X(haddr, BSWAP(val)); \
ATOMIC_MMU_CLEANUP; \
- atomic_trace_rmw_post(env, addr, info); \
+ atomic_trace_rmw_post(env, addr, oi); \
return BSWAP(ret); \
}
@@ -304,12 +303,12 @@ GEN_ATOMIC_HELPER(xor_fetch)
*/
#define GEN_ATOMIC_HELPER_FN(X, FN, XDATA_TYPE, RET) \
ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
- ABI_TYPE xval, TCGMemOpIdx oi, uintptr_t retaddr) \
+ ABI_TYPE xval, MemOpIdx oi, uintptr_t retaddr) \
{ \
XDATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, \
PAGE_READ | PAGE_WRITE, retaddr); \
XDATA_TYPE ldo, ldn, old, new, val = xval; \
- uint16_t info = atomic_trace_rmw_pre(env, addr, oi); \
+ atomic_trace_rmw_pre(env, addr, oi); \
smp_mb(); \
ldn = qatomic_read__nocheck(haddr); \
do { \
@@ -317,7 +316,7 @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
ldn = qatomic_cmpxchg__nocheck(haddr, ldo, BSWAP(new)); \
} while (ldo != ldn); \
ATOMIC_MMU_CLEANUP; \
- atomic_trace_rmw_post(env, addr, info); \
+ atomic_trace_rmw_post(env, addr, oi); \
return RET; \
}
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index 5fd1ed3422..8b4cd6c59d 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -20,6 +20,9 @@
#include "qemu/osdep.h"
#include "qemu-common.h"
#include "qemu/qemu-print.h"
+#include "qapi/error.h"
+#include "qapi/qapi-commands-machine.h"
+#include "qapi/type-helpers.h"
#include "hw/core/tcg-cpu-ops.h"
#include "trace.h"
#include "disas/disas.h"
@@ -38,6 +41,7 @@
#include "exec/cpu-all.h"
#include "sysemu/cpu-timers.h"
#include "sysemu/replay.h"
+#include "sysemu/tcg.h"
#include "exec/helper-proto.h"
#include "tb-hash.h"
#include "tb-context.h"
@@ -383,6 +387,17 @@ cpu_tb_exec(CPUState *cpu, TranslationBlock *itb, int *tb_exit)
cc->set_pc(cpu, last_tb->pc);
}
}
+
+ /*
+ * If gdb single-step, and we haven't raised another exception,
+ * raise a debug exception. Single-step with another exception
+ * is handled in cpu_handle_exception.
+ */
+ if (unlikely(cpu->singlestep_enabled) && cpu->exception_index == -1) {
+ cpu->exception_index = EXCP_DEBUG;
+ cpu_loop_exit(cpu);
+ }
+
return last_tb;
}
@@ -451,6 +466,7 @@ void cpu_exec_step_atomic(CPUState *cpu)
* memory.
*/
#ifndef CONFIG_SOFTMMU
+ clear_helper_retaddr();
tcg_debug_assert(!have_mmap_lock());
#endif
if (qemu_mutex_iothread_locked()) {
@@ -460,7 +476,6 @@ void cpu_exec_step_atomic(CPUState *cpu)
qemu_plugin_disable_mem_helpers(cpu);
}
-
/*
* As we start the exclusive region before codegen we must still
* be in the region if we longjump out of either the codegen or
@@ -706,6 +721,15 @@ static inline bool need_replay_interrupt(int interrupt_request)
static inline bool cpu_handle_interrupt(CPUState *cpu,
TranslationBlock **last_tb)
{
+ /*
+ * If we have requested custom cflags with CF_NOIRQ we should
+ * skip checking here. Any pending interrupts will get picked up
+ * by the next TB we execute under normal cflags.
+ */
+ if (cpu->cflags_next_tb != -1 && cpu->cflags_next_tb & CF_NOIRQ) {
+ return false;
+ }
+
/* Clear the interrupt flag now since we're processing
* cpu->interrupt_request and cpu->exit_request.
* Ensure zeroing happens before reading cpu->exit_request or
@@ -905,6 +929,7 @@ int cpu_exec(CPUState *cpu)
#endif
#ifndef CONFIG_SOFTMMU
+ clear_helper_retaddr();
tcg_debug_assert(!have_mmap_lock());
#endif
if (qemu_mutex_iothread_locked()) {
@@ -1017,23 +1042,83 @@ void tcg_exec_unrealizefn(CPUState *cpu)
#ifndef CONFIG_USER_ONLY
-void dump_drift_info(void)
+void dump_drift_info(GString *buf)
{
if (!icount_enabled()) {
return;
}
- qemu_printf("Host - Guest clock %"PRIi64" ms\n",
- (cpu_get_clock() - icount_get()) / SCALE_MS);
+ g_string_append_printf(buf, "Host - Guest clock %"PRIi64" ms\n",
+ (cpu_get_clock() - icount_get()) / SCALE_MS);
if (icount_align_option) {
- qemu_printf("Max guest delay %"PRIi64" ms\n",
- -max_delay / SCALE_MS);
- qemu_printf("Max guest advance %"PRIi64" ms\n",
- max_advance / SCALE_MS);
+ g_string_append_printf(buf, "Max guest delay %"PRIi64" ms\n",
+ -max_delay / SCALE_MS);
+ g_string_append_printf(buf, "Max guest advance %"PRIi64" ms\n",
+ max_advance / SCALE_MS);
} else {
- qemu_printf("Max guest delay NA\n");
- qemu_printf("Max guest advance NA\n");
+ g_string_append_printf(buf, "Max guest delay NA\n");
+ g_string_append_printf(buf, "Max guest advance NA\n");
}
}
+HumanReadableText *qmp_x_query_jit(Error **errp)
+{
+ g_autoptr(GString) buf = g_string_new("");
+
+ if (!tcg_enabled()) {
+ error_setg(errp, "JIT information is only available with accel=tcg");
+ return NULL;
+ }
+
+ dump_exec_info(buf);
+ dump_drift_info(buf);
+
+ return human_readable_text_from_str(buf);
+}
+
+HumanReadableText *qmp_x_query_opcount(Error **errp)
+{
+ g_autoptr(GString) buf = g_string_new("");
+
+ if (!tcg_enabled()) {
+ error_setg(errp, "Opcode count information is only available with accel=tcg");
+ return NULL;
+ }
+
+ dump_opcount_info(buf);
+
+ return human_readable_text_from_str(buf);
+}
+
+#ifdef CONFIG_PROFILER
+
+int64_t dev_time;
+
+HumanReadableText *qmp_x_query_profile(Error **errp)
+{
+ g_autoptr(GString) buf = g_string_new("");
+ static int64_t last_cpu_exec_time;
+ int64_t cpu_exec_time;
+ int64_t delta;
+
+ cpu_exec_time = tcg_cpu_exec_time();
+ delta = cpu_exec_time - last_cpu_exec_time;
+
+ g_string_append_printf(buf, "async time %" PRId64 " (%0.3f)\n",
+ dev_time, dev_time / (double)NANOSECONDS_PER_SECOND);
+ g_string_append_printf(buf, "qemu time %" PRId64 " (%0.3f)\n",
+ delta, delta / (double)NANOSECONDS_PER_SECOND);
+ last_cpu_exec_time = cpu_exec_time;
+ dev_time = 0;
+
+ return human_readable_text_from_str(buf);
+}
+#else
+HumanReadableText *qmp_x_query_profile(Error **errp)
+{
+ error_setg(errp, "Internal profiler not compiled");
+ return NULL;
+}
+#endif
+
#endif /* !CONFIG_USER_ONLY */
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
index b1e5471f94..5e0d0eebc3 100644
--- a/accel/tcg/cputlb.c
+++ b/accel/tcg/cputlb.c
@@ -34,12 +34,12 @@
#include "qemu/atomic128.h"
#include "exec/translate-all.h"
#include "trace/trace-root.h"
-#include "trace/mem.h"
#include "tb-hash.h"
#include "internal.h"
#ifdef CONFIG_PLUGIN
#include "qemu/plugin-memory.h"
#endif
+#include "tcg/tcg-ldst.h"
/* DEBUG defines, enable DEBUG_TLB_LOG to log to the CPU_LOG_MMU target */
/* #define DEBUG_TLB */
@@ -1749,7 +1749,7 @@ bool tlb_plugin_lookup(CPUState *cpu, target_ulong addr, int mmu_idx,
* @prot may be PAGE_READ, PAGE_WRITE, or PAGE_READ|PAGE_WRITE.
*/
static void *atomic_mmu_lookup(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, int size, int prot,
+ MemOpIdx oi, int size, int prot,
uintptr_t retaddr)
{
size_t mmu_idx = get_mmuidx(oi);
@@ -1841,6 +1841,25 @@ static void *atomic_mmu_lookup(CPUArchState *env, target_ulong addr,
}
/*
+ * Verify that we have passed the correct MemOp to the correct function.
+ *
+ * In the case of the helper_*_mmu functions, we will have done this by
+ * using the MemOp to look up the helper during code generation.
+ *
+ * In the case of the cpu_*_mmu functions, this is up to the caller.
+ * We could present one function to target code, and dispatch based on
+ * the MemOp, but so far we have worked hard to avoid an indirect function
+ * call along the memory path.
+ */
+static void validate_memop(MemOpIdx oi, MemOp expected)
+{
+#ifdef CONFIG_DEBUG_TCG
+ MemOp have = get_memop(oi) & (MO_SIZE | MO_BSWAP);
+ assert(have == expected);
+#endif
+}
+
+/*
* Load Helpers
*
* We support two different access types. SOFTMMU_CODE_ACCESS is
@@ -1850,7 +1869,7 @@ static void *atomic_mmu_lookup(CPUArchState *env, target_ulong addr,
*/
typedef uint64_t FullLoadHelper(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr);
+ MemOpIdx oi, uintptr_t retaddr);
static inline uint64_t QEMU_ALWAYS_INLINE
load_memop(const void *haddr, MemOp op)
@@ -1866,9 +1885,9 @@ load_memop(const void *haddr, MemOp op)
return (uint32_t)ldl_be_p(haddr);
case MO_LEUL:
return (uint32_t)ldl_le_p(haddr);
- case MO_BEQ:
+ case MO_BEUQ:
return ldq_be_p(haddr);
- case MO_LEQ:
+ case MO_LEUQ:
return ldq_le_p(haddr);
default:
qemu_build_not_reached();
@@ -1876,7 +1895,7 @@ load_memop(const void *haddr, MemOp op)
}
static inline uint64_t QEMU_ALWAYS_INLINE
-load_helper(CPUArchState *env, target_ulong addr, TCGMemOpIdx oi,
+load_helper(CPUArchState *env, target_ulong addr, MemOpIdx oi,
uintptr_t retaddr, MemOp op, bool code_read,
FullLoadHelper *full_load)
{
@@ -1991,80 +2010,87 @@ load_helper(CPUArchState *env, target_ulong addr, TCGMemOpIdx oi,
*/
static uint64_t full_ldub_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
+ validate_memop(oi, MO_UB);
return load_helper(env, addr, oi, retaddr, MO_UB, false, full_ldub_mmu);
}
tcg_target_ulong helper_ret_ldub_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return full_ldub_mmu(env, addr, oi, retaddr);
}
static uint64_t full_le_lduw_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
+ validate_memop(oi, MO_LEUW);
return load_helper(env, addr, oi, retaddr, MO_LEUW, false,
full_le_lduw_mmu);
}
tcg_target_ulong helper_le_lduw_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return full_le_lduw_mmu(env, addr, oi, retaddr);
}
static uint64_t full_be_lduw_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
+ validate_memop(oi, MO_BEUW);
return load_helper(env, addr, oi, retaddr, MO_BEUW, false,
full_be_lduw_mmu);
}
tcg_target_ulong helper_be_lduw_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return full_be_lduw_mmu(env, addr, oi, retaddr);
}
static uint64_t full_le_ldul_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
+ validate_memop(oi, MO_LEUL);
return load_helper(env, addr, oi, retaddr, MO_LEUL, false,
full_le_ldul_mmu);
}
tcg_target_ulong helper_le_ldul_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return full_le_ldul_mmu(env, addr, oi, retaddr);
}
static uint64_t full_be_ldul_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
+ validate_memop(oi, MO_BEUL);
return load_helper(env, addr, oi, retaddr, MO_BEUL, false,
full_be_ldul_mmu);
}
tcg_target_ulong helper_be_ldul_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return full_be_ldul_mmu(env, addr, oi, retaddr);
}
uint64_t helper_le_ldq_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
- return load_helper(env, addr, oi, retaddr, MO_LEQ, false,
+ validate_memop(oi, MO_LEUQ);
+ return load_helper(env, addr, oi, retaddr, MO_LEUQ, false,
helper_le_ldq_mmu);
}
uint64_t helper_be_ldq_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
- return load_helper(env, addr, oi, retaddr, MO_BEQ, false,
+ validate_memop(oi, MO_BEUQ);
+ return load_helper(env, addr, oi, retaddr, MO_BEUQ, false,
helper_be_ldq_mmu);
}
@@ -2075,31 +2101,31 @@ uint64_t helper_be_ldq_mmu(CPUArchState *env, target_ulong addr,
tcg_target_ulong helper_ret_ldsb_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return (int8_t)helper_ret_ldub_mmu(env, addr, oi, retaddr);
}
tcg_target_ulong helper_le_ldsw_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return (int16_t)helper_le_lduw_mmu(env, addr, oi, retaddr);
}
tcg_target_ulong helper_be_ldsw_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return (int16_t)helper_be_lduw_mmu(env, addr, oi, retaddr);
}
tcg_target_ulong helper_le_ldsl_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return (int32_t)helper_le_ldul_mmu(env, addr, oi, retaddr);
}
tcg_target_ulong helper_be_ldsl_mmu(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return (int32_t)helper_be_ldul_mmu(env, addr, oi, retaddr);
}
@@ -2109,193 +2135,56 @@ tcg_target_ulong helper_be_ldsl_mmu(CPUArchState *env, target_ulong addr,
*/
static inline uint64_t cpu_load_helper(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t retaddr,
- MemOp op, FullLoadHelper *full_load)
+ MemOpIdx oi, uintptr_t retaddr,
+ FullLoadHelper *full_load)
{
- uint16_t meminfo;
- TCGMemOpIdx oi;
uint64_t ret;
- meminfo = trace_mem_get_info(op, mmu_idx, false);
- trace_guest_mem_before_exec(env_cpu(env), addr, meminfo);
-
- op &= ~MO_SIGN;
- oi = make_memop_idx(op, mmu_idx);
+ trace_guest_ld_before_exec(env_cpu(env), addr, oi);
ret = full_load(env, addr, oi, retaddr);
-
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, meminfo);
-
+ qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
return ret;
}
-uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
-{
- return cpu_load_helper(env, addr, mmu_idx, ra, MO_UB, full_ldub_mmu);
-}
-
-int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
-{
- return (int8_t)cpu_load_helper(env, addr, mmu_idx, ra, MO_SB,
- full_ldub_mmu);
-}
-
-uint32_t cpu_lduw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
-{
- return cpu_load_helper(env, addr, mmu_idx, ra, MO_BEUW, full_be_lduw_mmu);
-}
-
-int cpu_ldsw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
-{
- return (int16_t)cpu_load_helper(env, addr, mmu_idx, ra, MO_BESW,
- full_be_lduw_mmu);
-}
-
-uint32_t cpu_ldl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
-{
- return cpu_load_helper(env, addr, mmu_idx, ra, MO_BEUL, full_be_ldul_mmu);
-}
-
-uint64_t cpu_ldq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
-{
- return cpu_load_helper(env, addr, mmu_idx, ra, MO_BEQ, helper_be_ldq_mmu);
-}
-
-uint32_t cpu_lduw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
-{
- return cpu_load_helper(env, addr, mmu_idx, ra, MO_LEUW, full_le_lduw_mmu);
-}
-
-int cpu_ldsw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
-{
- return (int16_t)cpu_load_helper(env, addr, mmu_idx, ra, MO_LESW,
- full_le_lduw_mmu);
-}
-
-uint32_t cpu_ldl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
+uint8_t cpu_ldb_mmu(CPUArchState *env, abi_ptr addr, MemOpIdx oi, uintptr_t ra)
{
- return cpu_load_helper(env, addr, mmu_idx, ra, MO_LEUL, full_le_ldul_mmu);
+ return cpu_load_helper(env, addr, oi, ra, full_ldub_mmu);
}
-uint64_t cpu_ldq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
- int mmu_idx, uintptr_t ra)
+uint16_t cpu_ldw_be_mmu(CPUArchState *env, abi_ptr addr,
+ MemOpIdx oi, uintptr_t ra)
{
- return cpu_load_helper(env, addr, mmu_idx, ra, MO_LEQ, helper_le_ldq_mmu);
+ return cpu_load_helper(env, addr, oi, ra, full_be_lduw_mmu);
}
-uint32_t cpu_ldub_data_ra(CPUArchState *env, target_ulong ptr,
- uintptr_t retaddr)
+uint32_t cpu_ldl_be_mmu(CPUArchState *env, abi_ptr addr,
+ MemOpIdx oi, uintptr_t ra)
{
- return cpu_ldub_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
+ return cpu_load_helper(env, addr, oi, ra, full_be_ldul_mmu);
}
-int cpu_ldsb_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
+uint64_t cpu_ldq_be_mmu(CPUArchState *env, abi_ptr addr,
+ MemOpIdx oi, uintptr_t ra)
{
- return cpu_ldsb_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
+ return cpu_load_helper(env, addr, oi, MO_BEUQ, helper_be_ldq_mmu);
}
-uint32_t cpu_lduw_be_data_ra(CPUArchState *env, target_ulong ptr,
- uintptr_t retaddr)
+uint16_t cpu_ldw_le_mmu(CPUArchState *env, abi_ptr addr,
+ MemOpIdx oi, uintptr_t ra)
{
- return cpu_lduw_be_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
+ return cpu_load_helper(env, addr, oi, ra, full_le_lduw_mmu);
}
-int cpu_ldsw_be_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
+uint32_t cpu_ldl_le_mmu(CPUArchState *env, abi_ptr addr,
+ MemOpIdx oi, uintptr_t ra)
{
- return cpu_ldsw_be_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
+ return cpu_load_helper(env, addr, oi, ra, full_le_ldul_mmu);
}
-uint32_t cpu_ldl_be_data_ra(CPUArchState *env, target_ulong ptr,
- uintptr_t retaddr)
+uint64_t cpu_ldq_le_mmu(CPUArchState *env, abi_ptr addr,
+ MemOpIdx oi, uintptr_t ra)
{
- return cpu_ldl_be_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
-}
-
-uint64_t cpu_ldq_be_data_ra(CPUArchState *env, target_ulong ptr,
- uintptr_t retaddr)
-{
- return cpu_ldq_be_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
-}
-
-uint32_t cpu_lduw_le_data_ra(CPUArchState *env, target_ulong ptr,
- uintptr_t retaddr)
-{
- return cpu_lduw_le_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
-}
-
-int cpu_ldsw_le_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
-{
- return cpu_ldsw_le_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
-}
-
-uint32_t cpu_ldl_le_data_ra(CPUArchState *env, target_ulong ptr,
- uintptr_t retaddr)
-{
- return cpu_ldl_le_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
-}
-
-uint64_t cpu_ldq_le_data_ra(CPUArchState *env, target_ulong ptr,
- uintptr_t retaddr)
-{
- return cpu_ldq_le_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
-}
-
-uint32_t cpu_ldub_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_ldub_data_ra(env, ptr, 0);
-}
-
-int cpu_ldsb_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_ldsb_data_ra(env, ptr, 0);
-}
-
-uint32_t cpu_lduw_be_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_lduw_be_data_ra(env, ptr, 0);
-}
-
-int cpu_ldsw_be_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_ldsw_be_data_ra(env, ptr, 0);
-}
-
-uint32_t cpu_ldl_be_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_ldl_be_data_ra(env, ptr, 0);
-}
-
-uint64_t cpu_ldq_be_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_ldq_be_data_ra(env, ptr, 0);
-}
-
-uint32_t cpu_lduw_le_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_lduw_le_data_ra(env, ptr, 0);
-}
-
-int cpu_ldsw_le_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_ldsw_le_data_ra(env, ptr, 0);
-}
-
-uint32_t cpu_ldl_le_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_ldl_le_data_ra(env, ptr, 0);
-}
-
-uint64_t cpu_ldq_le_data(CPUArchState *env, target_ulong ptr)
-{
- return cpu_ldq_le_data_ra(env, ptr, 0);
+ return cpu_load_helper(env, addr, oi, ra, helper_le_ldq_mmu);
}
/*
@@ -2321,10 +2210,10 @@ store_memop(void *haddr, uint64_t val, MemOp op)
case MO_LEUL:
stl_le_p(haddr, val);
break;
- case MO_BEQ:
+ case MO_BEUQ:
stq_be_p(haddr, val);
break;
- case MO_LEQ:
+ case MO_LEUQ:
stq_le_p(haddr, val);
break;
default:
@@ -2332,6 +2221,9 @@ store_memop(void *haddr, uint64_t val, MemOp op)
}
}
+static void full_stb_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr);
+
static void __attribute__((noinline))
store_helper_unaligned(CPUArchState *env, target_ulong addr, uint64_t val,
uintptr_t retaddr, size_t size, uintptr_t mmu_idx,
@@ -2341,7 +2233,7 @@ store_helper_unaligned(CPUArchState *env, target_ulong addr, uint64_t val,
uintptr_t index, index2;
CPUTLBEntry *entry, *entry2;
target_ulong page2, tlb_addr, tlb_addr2;
- TCGMemOpIdx oi;
+ MemOpIdx oi;
size_t size2;
int i;
@@ -2395,20 +2287,20 @@ store_helper_unaligned(CPUArchState *env, target_ulong addr, uint64_t val,
for (i = 0; i < size; ++i) {
/* Big-endian extract. */
uint8_t val8 = val >> (((size - 1) * 8) - (i * 8));
- helper_ret_stb_mmu(env, addr + i, val8, oi, retaddr);
+ full_stb_mmu(env, addr + i, val8, oi, retaddr);
}
} else {
for (i = 0; i < size; ++i) {
/* Little-endian extract. */
uint8_t val8 = val >> (i * 8);
- helper_ret_stb_mmu(env, addr + i, val8, oi, retaddr);
+ full_stb_mmu(env, addr + i, val8, oi, retaddr);
}
}
}
static inline void QEMU_ALWAYS_INLINE
store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
- TCGMemOpIdx oi, uintptr_t retaddr, MemOp op)
+ MemOpIdx oi, uintptr_t retaddr, MemOp op)
{
uintptr_t mmu_idx = get_mmuidx(oi);
uintptr_t index = tlb_index(env, mmu_idx, addr);
@@ -2504,187 +2396,145 @@ store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
store_memop(haddr, val, op);
}
-void __attribute__((noinline))
-helper_ret_stb_mmu(CPUArchState *env, target_ulong addr, uint8_t val,
- TCGMemOpIdx oi, uintptr_t retaddr)
+static void __attribute__((noinline))
+full_stb_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
+ validate_memop(oi, MO_UB);
store_helper(env, addr, val, oi, retaddr, MO_UB);
}
-void helper_le_stw_mmu(CPUArchState *env, target_ulong addr, uint16_t val,
- TCGMemOpIdx oi, uintptr_t retaddr)
-{
- store_helper(env, addr, val, oi, retaddr, MO_LEUW);
-}
-
-void helper_be_stw_mmu(CPUArchState *env, target_ulong addr, uint16_t val,
- TCGMemOpIdx oi, uintptr_t retaddr)
-{
- store_helper(env, addr, val, oi, retaddr, MO_BEUW);
-}
-
-void helper_le_stl_mmu(CPUArchState *env, target_ulong addr, uint32_t val,
- TCGMemOpIdx oi, uintptr_t retaddr)
-{
- store_helper(env, addr, val, oi, retaddr, MO_LEUL);
-}
-
-void helper_be_stl_mmu(CPUArchState *env, target_ulong addr, uint32_t val,
- TCGMemOpIdx oi, uintptr_t retaddr)
-{
- store_helper(env, addr, val, oi, retaddr, MO_BEUL);
-}
-
-void helper_le_stq_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
- TCGMemOpIdx oi, uintptr_t retaddr)
-{
- store_helper(env, addr, val, oi, retaddr, MO_LEQ);
-}
-
-void helper_be_stq_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
- TCGMemOpIdx oi, uintptr_t retaddr)
+void helper_ret_stb_mmu(CPUArchState *env, target_ulong addr, uint8_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- store_helper(env, addr, val, oi, retaddr, MO_BEQ);
+ full_stb_mmu(env, addr, val, oi, retaddr);
}
-/*
- * Store Helpers for cpu_ldst.h
- */
-
-static inline void QEMU_ALWAYS_INLINE
-cpu_store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
- int mmu_idx, uintptr_t retaddr, MemOp op)
+static void full_le_stw_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- TCGMemOpIdx oi;
- uint16_t meminfo;
-
- meminfo = trace_mem_get_info(op, mmu_idx, true);
- trace_guest_mem_before_exec(env_cpu(env), addr, meminfo);
-
- oi = make_memop_idx(op, mmu_idx);
- store_helper(env, addr, val, oi, retaddr, op);
-
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, meminfo);
-}
-
-void cpu_stb_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
- int mmu_idx, uintptr_t retaddr)
-{
- cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_UB);
+ validate_memop(oi, MO_LEUW);
+ store_helper(env, addr, val, oi, retaddr, MO_LEUW);
}
-void cpu_stw_be_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
- int mmu_idx, uintptr_t retaddr)
+void helper_le_stw_mmu(CPUArchState *env, target_ulong addr, uint16_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_BEUW);
+ full_le_stw_mmu(env, addr, val, oi, retaddr);
}
-void cpu_stl_be_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
- int mmu_idx, uintptr_t retaddr)
+static void full_be_stw_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_BEUL);
+ validate_memop(oi, MO_BEUW);
+ store_helper(env, addr, val, oi, retaddr, MO_BEUW);
}
-void cpu_stq_be_mmuidx_ra(CPUArchState *env, target_ulong addr, uint64_t val,
- int mmu_idx, uintptr_t retaddr)
+void helper_be_stw_mmu(CPUArchState *env, target_ulong addr, uint16_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_BEQ);
+ full_be_stw_mmu(env, addr, val, oi, retaddr);
}
-void cpu_stw_le_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
- int mmu_idx, uintptr_t retaddr)
+static void full_le_stl_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_LEUW);
+ validate_memop(oi, MO_LEUL);
+ store_helper(env, addr, val, oi, retaddr, MO_LEUL);
}
-void cpu_stl_le_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
- int mmu_idx, uintptr_t retaddr)
+void helper_le_stl_mmu(CPUArchState *env, target_ulong addr, uint32_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_LEUL);
+ full_le_stl_mmu(env, addr, val, oi, retaddr);
}
-void cpu_stq_le_mmuidx_ra(CPUArchState *env, target_ulong addr, uint64_t val,
- int mmu_idx, uintptr_t retaddr)
+static void full_be_stl_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_LEQ);
+ validate_memop(oi, MO_BEUL);
+ store_helper(env, addr, val, oi, retaddr, MO_BEUL);
}
-void cpu_stb_data_ra(CPUArchState *env, target_ulong ptr,
- uint32_t val, uintptr_t retaddr)
+void helper_be_stl_mmu(CPUArchState *env, target_ulong addr, uint32_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stb_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
+ full_be_stl_mmu(env, addr, val, oi, retaddr);
}
-void cpu_stw_be_data_ra(CPUArchState *env, target_ulong ptr,
- uint32_t val, uintptr_t retaddr)
+void helper_le_stq_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stw_be_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
+ validate_memop(oi, MO_LEUQ);
+ store_helper(env, addr, val, oi, retaddr, MO_LEUQ);
}
-void cpu_stl_be_data_ra(CPUArchState *env, target_ulong ptr,
- uint32_t val, uintptr_t retaddr)
+void helper_be_stq_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stl_be_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
+ validate_memop(oi, MO_BEUQ);
+ store_helper(env, addr, val, oi, retaddr, MO_BEUQ);
}
-void cpu_stq_be_data_ra(CPUArchState *env, target_ulong ptr,
- uint64_t val, uintptr_t retaddr)
-{
- cpu_stq_be_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
-}
+/*
+ * Store Helpers for cpu_ldst.h
+ */
-void cpu_stw_le_data_ra(CPUArchState *env, target_ulong ptr,
- uint32_t val, uintptr_t retaddr)
-{
- cpu_stw_le_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
-}
+typedef void FullStoreHelper(CPUArchState *env, target_ulong addr,
+ uint64_t val, MemOpIdx oi, uintptr_t retaddr);
-void cpu_stl_le_data_ra(CPUArchState *env, target_ulong ptr,
- uint32_t val, uintptr_t retaddr)
+static inline void cpu_store_helper(CPUArchState *env, target_ulong addr,
+ uint64_t val, MemOpIdx oi, uintptr_t ra,
+ FullStoreHelper *full_store)
{
- cpu_stl_le_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
+ trace_guest_st_before_exec(env_cpu(env), addr, oi);
+ full_store(env, addr, val, oi, ra);
+ qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
}
-void cpu_stq_le_data_ra(CPUArchState *env, target_ulong ptr,
- uint64_t val, uintptr_t retaddr)
+void cpu_stb_mmu(CPUArchState *env, target_ulong addr, uint8_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stq_le_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
+ cpu_store_helper(env, addr, val, oi, retaddr, full_stb_mmu);
}
-void cpu_stb_data(CPUArchState *env, target_ulong ptr, uint32_t val)
+void cpu_stw_be_mmu(CPUArchState *env, target_ulong addr, uint16_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stb_data_ra(env, ptr, val, 0);
+ cpu_store_helper(env, addr, val, oi, retaddr, full_be_stw_mmu);
}
-void cpu_stw_be_data(CPUArchState *env, target_ulong ptr, uint32_t val)
+void cpu_stl_be_mmu(CPUArchState *env, target_ulong addr, uint32_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stw_be_data_ra(env, ptr, val, 0);
+ cpu_store_helper(env, addr, val, oi, retaddr, full_be_stl_mmu);
}
-void cpu_stl_be_data(CPUArchState *env, target_ulong ptr, uint32_t val)
+void cpu_stq_be_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stl_be_data_ra(env, ptr, val, 0);
+ cpu_store_helper(env, addr, val, oi, retaddr, helper_be_stq_mmu);
}
-void cpu_stq_be_data(CPUArchState *env, target_ulong ptr, uint64_t val)
+void cpu_stw_le_mmu(CPUArchState *env, target_ulong addr, uint16_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stq_be_data_ra(env, ptr, val, 0);
+ cpu_store_helper(env, addr, val, oi, retaddr, full_le_stw_mmu);
}
-void cpu_stw_le_data(CPUArchState *env, target_ulong ptr, uint32_t val)
+void cpu_stl_le_mmu(CPUArchState *env, target_ulong addr, uint32_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stw_le_data_ra(env, ptr, val, 0);
+ cpu_store_helper(env, addr, val, oi, retaddr, full_le_stl_mmu);
}
-void cpu_stl_le_data(CPUArchState *env, target_ulong ptr, uint32_t val)
+void cpu_stq_le_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
+ MemOpIdx oi, uintptr_t retaddr)
{
- cpu_stl_le_data_ra(env, ptr, val, 0);
+ cpu_store_helper(env, addr, val, oi, retaddr, helper_le_stq_mmu);
}
-void cpu_stq_le_data(CPUArchState *env, target_ulong ptr, uint64_t val)
-{
- cpu_stq_le_data_ra(env, ptr, val, 0);
-}
+#include "ldst_common.c.inc"
/*
* First set of functions passes in OI and RETADDR.
@@ -2721,49 +2571,49 @@ void cpu_stq_le_data(CPUArchState *env, target_ulong ptr, uint64_t val)
/* Code access functions. */
static uint64_t full_ldub_code(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return load_helper(env, addr, oi, retaddr, MO_8, true, full_ldub_code);
}
uint32_t cpu_ldub_code(CPUArchState *env, abi_ptr addr)
{
- TCGMemOpIdx oi = make_memop_idx(MO_UB, cpu_mmu_index(env, true));
+ MemOpIdx oi = make_memop_idx(MO_UB, cpu_mmu_index(env, true));
return full_ldub_code(env, addr, oi, 0);
}
static uint64_t full_lduw_code(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return load_helper(env, addr, oi, retaddr, MO_TEUW, true, full_lduw_code);
}
uint32_t cpu_lduw_code(CPUArchState *env, abi_ptr addr)
{
- TCGMemOpIdx oi = make_memop_idx(MO_TEUW, cpu_mmu_index(env, true));
+ MemOpIdx oi = make_memop_idx(MO_TEUW, cpu_mmu_index(env, true));
return full_lduw_code(env, addr, oi, 0);
}
static uint64_t full_ldl_code(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
return load_helper(env, addr, oi, retaddr, MO_TEUL, true, full_ldl_code);
}
uint32_t cpu_ldl_code(CPUArchState *env, abi_ptr addr)
{
- TCGMemOpIdx oi = make_memop_idx(MO_TEUL, cpu_mmu_index(env, true));
+ MemOpIdx oi = make_memop_idx(MO_TEUL, cpu_mmu_index(env, true));
return full_ldl_code(env, addr, oi, 0);
}
static uint64_t full_ldq_code(CPUArchState *env, target_ulong addr,
- TCGMemOpIdx oi, uintptr_t retaddr)
+ MemOpIdx oi, uintptr_t retaddr)
{
- return load_helper(env, addr, oi, retaddr, MO_TEQ, true, full_ldq_code);
+ return load_helper(env, addr, oi, retaddr, MO_TEUQ, true, full_ldq_code);
}
uint64_t cpu_ldq_code(CPUArchState *env, abi_ptr addr)
{
- TCGMemOpIdx oi = make_memop_idx(MO_TEQ, cpu_mmu_index(env, true));
+ MemOpIdx oi = make_memop_idx(MO_TEUQ, cpu_mmu_index(env, true));
return full_ldq_code(env, addr, oi, 0);
}
diff --git a/accel/tcg/hmp.c b/accel/tcg/hmp.c
index a6e72fdb3e..d2ea352655 100644
--- a/accel/tcg/hmp.c
+++ b/accel/tcg/hmp.c
@@ -1,29 +1,15 @@
#include "qemu/osdep.h"
#include "qemu/error-report.h"
+#include "qapi/error.h"
+#include "qapi/qapi-commands-machine.h"
#include "exec/exec-all.h"
#include "monitor/monitor.h"
#include "sysemu/tcg.h"
-static void hmp_info_jit(Monitor *mon, const QDict *qdict)
-{
- if (!tcg_enabled()) {
- error_report("JIT information is only available with accel=tcg");
- return;
- }
-
- dump_exec_info();
- dump_drift_info();
-}
-
-static void hmp_info_opcount(Monitor *mon, const QDict *qdict)
-{
- dump_opcount_info();
-}
-
static void hmp_tcg_register(void)
{
- monitor_register_hmp("jit", true, hmp_info_jit);
- monitor_register_hmp("opcount", true, hmp_info_opcount);
+ monitor_register_hmp_info_hrt("jit", qmp_x_query_jit);
+ monitor_register_hmp_info_hrt("opcount", qmp_x_query_opcount);
}
type_init(hmp_tcg_register);
diff --git a/accel/tcg/ldst_common.c.inc b/accel/tcg/ldst_common.c.inc
new file mode 100644
index 0000000000..6ac8d871a3
--- /dev/null
+++ b/accel/tcg/ldst_common.c.inc
@@ -0,0 +1,307 @@
+/*
+ * Routines common to user and system emulation of load/store.
+ *
+ * Copyright (c) 2003 Fabrice Bellard
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_UB, mmu_idx);
+ return cpu_ldb_mmu(env, addr, oi, ra);
+}
+
+int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ return (int8_t)cpu_ldub_mmuidx_ra(env, addr, mmu_idx, ra);
+}
+
+uint32_t cpu_lduw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_BEUW | MO_UNALN, mmu_idx);
+ return cpu_ldw_be_mmu(env, addr, oi, ra);
+}
+
+int cpu_ldsw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ return (int16_t)cpu_lduw_be_mmuidx_ra(env, addr, mmu_idx, ra);
+}
+
+uint32_t cpu_ldl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_BEUL | MO_UNALN, mmu_idx);
+ return cpu_ldl_be_mmu(env, addr, oi, ra);
+}
+
+uint64_t cpu_ldq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_BEUQ | MO_UNALN, mmu_idx);
+ return cpu_ldq_be_mmu(env, addr, oi, ra);
+}
+
+uint32_t cpu_lduw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_LEUW | MO_UNALN, mmu_idx);
+ return cpu_ldw_le_mmu(env, addr, oi, ra);
+}
+
+int cpu_ldsw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ return (int16_t)cpu_lduw_le_mmuidx_ra(env, addr, mmu_idx, ra);
+}
+
+uint32_t cpu_ldl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_LEUL | MO_UNALN, mmu_idx);
+ return cpu_ldl_le_mmu(env, addr, oi, ra);
+}
+
+uint64_t cpu_ldq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_LEUQ | MO_UNALN, mmu_idx);
+ return cpu_ldq_le_mmu(env, addr, oi, ra);
+}
+
+void cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_UB, mmu_idx);
+ cpu_stb_mmu(env, addr, val, oi, ra);
+}
+
+void cpu_stw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_BEUW | MO_UNALN, mmu_idx);
+ cpu_stw_be_mmu(env, addr, val, oi, ra);
+}
+
+void cpu_stl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_BEUL | MO_UNALN, mmu_idx);
+ cpu_stl_be_mmu(env, addr, val, oi, ra);
+}
+
+void cpu_stq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_BEUQ | MO_UNALN, mmu_idx);
+ cpu_stq_be_mmu(env, addr, val, oi, ra);
+}
+
+void cpu_stw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_LEUW | MO_UNALN, mmu_idx);
+ cpu_stw_le_mmu(env, addr, val, oi, ra);
+}
+
+void cpu_stl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_LEUL | MO_UNALN, mmu_idx);
+ cpu_stl_le_mmu(env, addr, val, oi, ra);
+}
+
+void cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
+ int mmu_idx, uintptr_t ra)
+{
+ MemOpIdx oi = make_memop_idx(MO_LEUQ | MO_UNALN, mmu_idx);
+ cpu_stq_le_mmu(env, addr, val, oi, ra);
+}
+
+/*--------------------------*/
+
+uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return cpu_ldub_mmuidx_ra(env, addr, cpu_mmu_index(env, false), ra);
+}
+
+int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return (int8_t)cpu_ldub_data_ra(env, addr, ra);
+}
+
+uint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return cpu_lduw_be_mmuidx_ra(env, addr, cpu_mmu_index(env, false), ra);
+}
+
+int cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return (int16_t)cpu_lduw_be_data_ra(env, addr, ra);
+}
+
+uint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return cpu_ldl_be_mmuidx_ra(env, addr, cpu_mmu_index(env, false), ra);
+}
+
+uint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return cpu_ldq_be_mmuidx_ra(env, addr, cpu_mmu_index(env, false), ra);
+}
+
+uint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return cpu_lduw_le_mmuidx_ra(env, addr, cpu_mmu_index(env, false), ra);
+}
+
+int cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return (int16_t)cpu_lduw_le_data_ra(env, addr, ra);
+}
+
+uint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return cpu_ldl_le_mmuidx_ra(env, addr, cpu_mmu_index(env, false), ra);
+}
+
+uint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return cpu_ldq_le_mmuidx_ra(env, addr, cpu_mmu_index(env, false), ra);
+}
+
+void cpu_stb_data_ra(CPUArchState *env, abi_ptr addr,
+ uint32_t val, uintptr_t ra)
+{
+ cpu_stb_mmuidx_ra(env, addr, val, cpu_mmu_index(env, false), ra);
+}
+
+void cpu_stw_be_data_ra(CPUArchState *env, abi_ptr addr,
+ uint32_t val, uintptr_t ra)
+{
+ cpu_stw_be_mmuidx_ra(env, addr, val, cpu_mmu_index(env, false), ra);
+}
+
+void cpu_stl_be_data_ra(CPUArchState *env, abi_ptr addr,
+ uint32_t val, uintptr_t ra)
+{
+ cpu_stl_be_mmuidx_ra(env, addr, val, cpu_mmu_index(env, false), ra);
+}
+
+void cpu_stq_be_data_ra(CPUArchState *env, abi_ptr addr,
+ uint64_t val, uintptr_t ra)
+{
+ cpu_stq_be_mmuidx_ra(env, addr, val, cpu_mmu_index(env, false), ra);
+}
+
+void cpu_stw_le_data_ra(CPUArchState *env, abi_ptr addr,
+ uint32_t val, uintptr_t ra)
+{
+ cpu_stw_le_mmuidx_ra(env, addr, val, cpu_mmu_index(env, false), ra);
+}
+
+void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr addr,
+ uint32_t val, uintptr_t ra)
+{
+ cpu_stl_le_mmuidx_ra(env, addr, val, cpu_mmu_index(env, false), ra);
+}
+
+void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr addr,
+ uint64_t val, uintptr_t ra)
+{
+ cpu_stq_le_mmuidx_ra(env, addr, val, cpu_mmu_index(env, false), ra);
+}
+
+/*--------------------------*/
+
+uint32_t cpu_ldub_data(CPUArchState *env, abi_ptr addr)
+{
+ return cpu_ldub_data_ra(env, addr, 0);
+}
+
+int cpu_ldsb_data(CPUArchState *env, abi_ptr addr)
+{
+ return (int8_t)cpu_ldub_data(env, addr);
+}
+
+uint32_t cpu_lduw_be_data(CPUArchState *env, abi_ptr addr)
+{
+ return cpu_lduw_be_data_ra(env, addr, 0);
+}
+
+int cpu_ldsw_be_data(CPUArchState *env, abi_ptr addr)