Merge ~paelzer/ubuntu/+source/qemu:groovy-merge-5.0-some13 into ubuntu/+source/qemu:ubuntu/groovy-devel

Proposed by Christian Ehrhardt 
Status: Merged
Approved by: Christian Ehrhardt 
Approved revision: 0f979591ee724ffdb76d06bddd5a92ec1b43902c
Merge reported by: Christian Ehrhardt 
Merged at revision: 0f979591ee724ffdb76d06bddd5a92ec1b43902c
Proposed branch: ~paelzer/ubuntu/+source/qemu:groovy-merge-5.0-some13
Merge into: ubuntu/+source/qemu:ubuntu/groovy-devel
Diff against target: 344928 lines (+150431/-42780) (has conflicts)
2624 files modified
.cirrus.yml (+6/-2)
.github/lockdown.yml (+34/-0)
.gitignore (+2/-3)
.gitlab-ci-edk2.yml (+49/-0)
.gitlab-ci-opensbi.yml (+63/-0)
.gitlab-ci.d/edk2/Dockerfile (+27/-0)
.gitlab-ci.d/opensbi/Dockerfile (+33/-0)
.gitlab-ci.yml (+41/-20)
.gitmodules (+0/-3)
.mailmap (+6/-3)
.readthedocs.yml (+20/-0)
.shippable.yml (+3/-1)
.travis.yml (+291/-78)
Kconfig.host (+5/-0)
MAINTAINERS (+269/-75)
Makefile (+173/-97)
Makefile.objs (+25/-28)
Makefile.target (+21/-5)
VERSION (+1/-1)
accel/Makefile.objs (+1/-1)
accel/accel.c (+5/-67)
accel/kvm/kvm-all.c (+164/-26)
accel/tcg/atomic_template.h (+24/-43)
accel/tcg/cpu-exec.c (+14/-13)
accel/tcg/cputlb.c (+440/-162)
accel/tcg/tcg-all.c (+145/-4)
accel/tcg/tcg-runtime-gvec.c (+117/-183)
accel/tcg/tcg-runtime.c (+1/-0)
accel/tcg/translate-all.c (+44/-60)
accel/tcg/translator.c (+2/-2)
accel/tcg/user-exec.c (+237/-1)
arch_init.c (+2/-0)
audio/alsaaudio.c (+20/-2)
audio/audio.c (+79/-65)
audio/audio_int.h (+4/-3)
audio/audio_template.h (+28/-12)
audio/coreaudio.c (+9/-25)
audio/dsound_template.h (+1/-0)
audio/dsoundaudio.c (+30/-6)
audio/mixeng.c (+70/-0)
audio/mixeng.h (+5/-0)
audio/mixeng_template.h (+10/-12)
audio/noaudio.c (+1/-0)
audio/ossaudio.c (+17/-11)
audio/paaudio.c (+60/-25)
audio/sdlaudio.c (+33/-2)
audio/wavaudio.c (+1/-0)
authz/listfile.c (+1/-1)
backends/Makefile.objs (+4/-0)
backends/cryptodev-vhost-user.c (+6/-1)
backends/cryptodev.c (+1/-10)
backends/dbus-vmstate.c (+511/-0)
backends/hostmem-file.c (+0/-8)
backends/hostmem-memfd.c (+0/-1)
backends/hostmem-ram.c (+0/-2)
backends/hostmem.c (+40/-14)
backends/trace-events (+7/-0)
block.c (+346/-124)
block/Makefile.objs (+8/-1)
block/backup-top.c (+36/-27)
block/backup.c (+15/-24)
block/blkdebug.c (+92/-1)
block/blkverify.c (+10/-10)
block/block-backend.c (+128/-78)
block/block-copy.c (+316/-89)
block/commit.c (+12/-25)
block/copy-on-read.c (+0/-9)
block/crypto.c (+82/-1)
block/curl.c (+28/-4)
block/dirty-bitmap.c (+12/-4)
block/file-posix.c (+111/-90)
block/file-win32.c (+3/-1)
block/filter-compress.c (+159/-0)
block/gluster.c (+2/-1)
block/io.c (+108/-84)
block/io_uring.c (+433/-0)
block/iscsi.c (+10/-74)
block/linux-aio.c (+2/-2)
block/mirror.c (+24/-2)
block/monitor/Makefile.objs (+1/-0)
block/monitor/block-hmp-cmds.c (+1013/-0)
block/nbd.c (+40/-14)
block/nfs.c (+3/-1)
block/nvme.c (+3/-0)
block/parallels.c (+2/-1)
block/qapi-sysemu.c (+590/-0)
block/qapi.c (+11/-4)
block/qcow.c (+2/-1)
block/qcow2-bitmap.c (+23/-34)
block/qcow2-cluster.c (+34/-17)
block/qcow2-refcount.c (+2/-1)
block/qcow2-snapshot.c (+1/-2)
block/qcow2-threads.c (+15/-9)
block/qcow2.c (+178/-133)
block/qcow2.h (+0/-3)
block/qed.c (+2/-1)
block/quorum.c (+61/-9)
block/raw-format.c (+3/-1)
block/rbd.c (+33/-14)
block/replication.c (+38/-9)
block/sheepdog.c (+5/-1)
block/snapshot.c (+2/-2)
block/ssh.c (+3/-1)
block/stream.c (+1/-2)
block/throttle-groups.c (+2/-2)
block/throttle.c (+0/-8)
block/trace-events (+13/-0)
block/vdi.c (+3/-1)
block/vhdx.c (+2/-1)
block/vmdk.c (+4/-2)
block/vpc.c (+5/-3)
block/vvfat.c (+0/-7)
blockdev-nbd.c (+24/-15)
blockdev.c (+300/-964)
blockjob.c (+10/-9)
bsd-user/main.c (+2/-2)
bsd-user/qemu.h (+1/-1)
bsd-user/syscall.c (+3/-3)
chardev/char-mux.c (+4/-4)
chardev/char-pipe.c (+1/-1)
chardev/char-win.c (+1/-1)
chardev/char.c (+38/-11)
chardev/spice.c (+1/-3)
configure (+440/-251)
contrib/libvhost-user/libvhost-user-glib.c (+13/-4)
contrib/libvhost-user/libvhost-user-glib.h (+1/-0)
contrib/libvhost-user/libvhost-user.c (+171/-25)
contrib/libvhost-user/libvhost-user.h (+21/-1)
contrib/rdmacm-mux/main.c (+1/-1)
contrib/vhost-user-blk/vhost-user-blk.c (+65/-45)
contrib/vhost-user-gpu/50-qemu-gpu.json.in (+1/-1)
contrib/vhost-user-gpu/Makefile.objs (+3/-3)
contrib/vhost-user-gpu/vhost-user-gpu.c (+2/-2)
contrib/vhost-user-gpu/virgl.c (+1/-1)
contrib/vhost-user-input/main.c (+2/-4)
contrib/vhost-user-scsi/vhost-user-scsi.c (+1/-1)
cpus.c (+15/-74)
crypto/Makefile.objs (+5/-8)
crypto/block.c (+36/-0)
crypto/tlscredsx509.c (+1/-1)
debian/binfmt-install (+26/-0)
debian/changelog (+361/-0)
debian/control (+43/-11)
debian/control-in (+54/-27)
debian/get-orig-source.sh (+0/-2)
debian/not-installed (+2/-0)
debian/optionrom.mak (+5/-3)
debian/patches/9p-lock-directory-streams-with-a-CoMutex.patch (+67/-0)
debian/patches/acpi-accept-byte-and-word-access-to-core-ACPI-registers.patch (+61/-0)
debian/patches/aio-posix-disable-fdmon-io_uring-when-GSource-is-used.patch (+91/-0)
debian/patches/aio-posix-dont-duplicate-fd-handler-deletion-in-fdmon_io_uring_destroy.patch (+67/-0)
debian/patches/ati-vga-check-mm_index-before-recursive-call-CVE-2020-13800.patch (+58/-0)
debian/patches/es1370-check-total-frame-count-against-current-frame-CVE-2020-13361.patch (+60/-0)
debian/patches/exec-set-map-length-to-zero-when-returning-NULL-CVE-2020-13659.patch (+54/-0)
debian/patches/fix-tulip-breakage.patch (+58/-0)
debian/patches/hostmem-dont-use-mbind-if-host-nodes-is-empty.patch (+53/-0)
debian/patches/linux-user-add-netlink-RTM_SETLINK-command.patch (+44/-0)
debian/patches/linux-user-refactor-ipc-syscall-and-support-of-semtimedop.patch (+190/-0)
debian/patches/megasas-fix-possible-out-of-bounds-array-access.patch (+131/-0)
debian/patches/megasas-use-unsigned-type-for-positive-numeric-fields.patch (+98/-0)
debian/patches/megasas-use-unsigned-type-for-reply_queue_head-and-check-index-CVE-2020-13362.patch (+51/-0)
debian/patches/microvm-default-machine-type.patch (+31/-0)
debian/patches/nbd-server-avoid-long-error-message-assertions-CVE-2020-10761.patch (+148/-0)
debian/patches/net-do-not-include-a-newline-in-the-id-of-nic-device.patch (+36/-0)
debian/patches/net-use-peer-when-purging-queue-in-qemu_flush_or_purge_queue_packets.patch (+37/-0)
debian/patches/openbios-address-of-packet-member.patch (+11/-0)
debian/patches/qemu-nbd-close-inherited-stderr.patch (+39/-0)
debian/patches/revert-memory-accept-mismatching-sizes-in-memory_region_access_valid-CVE-2020-13754.patch (+86/-0)
debian/patches/riscv-allow-64-bit-access-to-SiFive-CLINT.patch (+34/-0)
debian/patches/sdcard-dont-allow-invalid-SD-card-sizes.patch (+105/-0)
debian/patches/sdcard-dont-switch-to-ReceivingData-if-address-is-invalid-CVE-2020-13253.patch (+131/-0)
debian/patches/sdcard-simplify-realize-a-bit.patch (+43/-0)
debian/patches/sdcard-update-coding-style-to-make-checkpatch-happy.patch (+86/-0)
debian/patches/seabios-hppa-fno-ipa-sra.patch (+14/-0)
debian/patches/series (+62/-0)
debian/patches/sm501-clean-up-local-variables-in-sm501_2d_operation.patch (+95/-0)
debian/patches/sm501-convert-printf-abort-to-qemu_log_mask.patch (+159/-0)
debian/patches/sm501-replace-hand-written-implementation-with-pixman-CVE-2020-12829.patch (+261/-0)
debian/patches/sm501-shorten-long-variable-names-in-sm501_2d_operation.patch (+134/-0)
debian/patches/sm501-use-BIT-macro-to-shorten-constant.patch (+42/-0)
debian/patches/ubuntu/define-ubuntu-machine-types.patch (+156/-0)
debian/patches/ubuntu/lp-1835546-docs-system-Add-protvirt-docs.patch (+107/-0)
debian/patches/ubuntu/lp-1835546-linux-headers-update-against-Linux-5.7-rc3.patch (+665/-0)
debian/patches/ubuntu/lp-1835546-s390x-Add-SIDA-memory-ops.patch (+38/-0)
debian/patches/ubuntu/lp-1835546-s390x-Add-unpack-facility-feature-to-GA1.patch (+30/-0)
debian/patches/ubuntu/lp-1835546-s390x-Move-diagnose-308-subcodes-and-rcs-into-ipl.h.patch (+22/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Add-migration-blocker.patch (+30/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Disable-address-checks-for-PV-guest-I.patch (+23/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Fix-stray-error_report_err-in-s390_ma.patch (+43/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Handle-SIGP-store-status-correctly.patch (+27/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Inhibit-balloon-when-switching-to-pro.patch (+38/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-KVM-intercept-changes.patch (+27/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Move-IO-control-structures-over-SIDA.patch (+23/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Move-STSI-data-over-SIDAD.patch (+33/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Move-diag-308-data-over-SIDA.patch (+19/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-SCLP-interpretation.patch (+40/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Set-guest-IPL-PSW.patch (+52/-0)
debian/patches/ubuntu/lp-1835546-s390x-protvirt-Support-unpack-facility.patch (+94/-0)
debian/patches/ubuntu/lp-1835546-s390x-pv-Fix-KVM_PV_PREP_RESET-command-wrapper-name.patch (+78/-0)
debian/patches/ubuntu/lp-1835546-s390x-pv-Retry-ioctls-on-EINTR.patch (+45/-0)
debian/patches/ubuntu/lp-1835546-s390x-s390-virtio-ccw-Fix-build-on-systems-without-K.patch (+138/-0)
debian/patches/ubuntu/lp-1887763-accel-tcg-better-handle-memory-constrained-systems.patch (+52/-0)
debian/patches/ubuntu/lp-1887763-util-add-qemu_get_host_physmem-utility-function.patch (+85/-0)
debian/patches/ubuntu/virtio-net-fix-rsc_ext-compat-handling.patch (+44/-0)
debian/patches/use-fixed-data-path.patch (+18/-20)
debian/patches/virtio-balloon-fix-free-page-hinting-check-on-unreal.patch (+44/-0)
debian/patches/virtio-balloon-fix-free-page-hinting-without-an-iothread.patch (+108/-0)
debian/patches/virtio-balloon-unref-the-iothread-when-unrealizing.patch (+42/-0)
debian/patches/virtiofsd-add-rlimit-nofile-NUM-option.patch (+148/-0)
debian/patches/virtiofsd-stay-below-fs.file-max-CVE-2020-10717.patch (+75/-0)
debian/patches/xgmac-fix-buffer-overflow-in-xgmac_enet_send-CVE-2020-15863.patch (+58/-0)
debian/patches/xhci-fix-valid.max_access_size-to-access-address-registers.patch (+59/-0)
debian/qemu-block-extra.postrm.in (+4/-0)
debian/qemu-system-common.doc-base (+2/-2)
debian/qemu-system-common.install (+9/-1)
debian/qemu-system-data.install (+3/-0)
debian/qemu-system-data.lintian-overrides (+13/-7)
debian/qemu-system-gui.postrm.in (+4/-0)
debian/qemu-system-ppc.links (+0/-4)
debian/qemu-system-x86.README.Debian (+4/-0)
debian/qemu-user-static.docs (+1/-0)
debian/qemu-user-static.lintian-overrides (+35/-0)
debian/qemu-user.docs (+1/-0)
debian/rules (+255/-10)
debian/source/lintian-overrides (+9/-0)
debian/upstream/signing-key.asc (+44/-0)
default-configs/arm-softmmu.mak (+2/-0)
default-configs/i386-softmmu.mak (+1/-1)
default-configs/ppc-softmmu.mak (+0/-1)
default-configs/ppc64-softmmu.mak (+1/-0)
default-configs/rx-softmmu.mak (+2/-0)
dev/null (+0/-118)
device_tree.c (+6/-1)
disas/libvixl/Makefile.objs (+1/-10)
disas/mips.c (+10/-0)
dma-helpers.c (+2/-2)
docs/COLO-FT.txt (+166/-58)
docs/block-replication.txt (+18/-10)
docs/can.txt (+1/-1)
docs/conf.py (+29/-4)
docs/defs.rst.inc (+15/-0)
docs/devel/atomics.rst (+507/-0)
docs/devel/bitops.rst (+8/-0)
docs/devel/fuzzing.txt (+116/-0)
docs/devel/index.rst (+4/-0)
docs/devel/kconfig.rst (+1/-1)
docs/devel/loads-stores.rst (+156/-59)
docs/devel/memory.rst (+5/-0)
docs/devel/multi-thread-tcg.txt (+4/-4)
docs/devel/qapi-code-gen.txt (+78/-22)
docs/devel/rcu.txt (+2/-2)
docs/devel/reset.rst (+289/-0)
docs/devel/s390-dasd-ipl.rst (+62/-57)
docs/devel/stable-process.rst (+4/-2)
docs/devel/tcg-plugins.rst (+11/-2)
docs/devel/tcg.rst (+1/-1)
docs/devel/testing.rst (+34/-13)
docs/devel/tracing.txt (+5/-7)
docs/index.html.in (+19/-0)
docs/index.rst (+4/-2)
docs/interop/conf.py (+1/-1)
docs/interop/dbus-vmstate.rst (+74/-0)
docs/interop/dbus.rst (+110/-0)
docs/interop/firmware.json (+1/-2)
docs/interop/index.rst (+2/-0)
docs/interop/qcow2.txt (+62/-5)
docs/interop/qemu-ga.rst (+3/-2)
docs/interop/vhost-user.json (+34/-1)
docs/interop/vhost-user.rst (+137/-19)
docs/qemu-option-trace.rst.inc (+26/-0)
docs/replay.txt (+2/-1)
docs/specs/acpi_cpu_hotplug.txt (+74/-17)
docs/specs/fw_cfg.txt (+1/-1)
docs/specs/index.rst (+1/-0)
docs/specs/ivshmem-spec.txt (+2/-2)
docs/specs/pvpanic.txt (+11/-7)
docs/specs/tpm.rst (+526/-0)
docs/sphinx/hxtool.py (+192/-0)
docs/sphinx/kerneldoc.py (+173/-0)
docs/sphinx/kernellog.py (+28/-0)
docs/system/arm/cpu-features.rst (+42/-13)
docs/system/arm/integratorcp.rst (+16/-0)
docs/system/arm/musicpal.rst (+19/-0)
docs/system/arm/nseries.rst (+33/-0)
docs/system/arm/orangepi.rst (+253/-0)
docs/system/arm/palm.rst (+23/-0)
docs/system/arm/realview.rst (+34/-0)
docs/system/arm/stellaris.rst (+26/-0)
docs/system/arm/sx1.rst (+18/-0)
docs/system/arm/versatile.rst (+29/-0)
docs/system/arm/xscale.rst (+29/-0)
docs/system/build-platforms.rst (+79/-0)
docs/system/conf.py (+28/-0)
docs/system/cpu-models-mips.rst.inc (+105/-0)
docs/system/cpu-models-x86.rst.inc (+418/-0)
docs/system/deprecated.rst (+509/-0)
docs/system/device-url-syntax.rst.inc (+228/-0)
docs/system/gdb.rst (+89/-0)
docs/system/images.rst (+85/-0)
docs/system/index.rst (+35/-0)
docs/system/invocation.rst (+18/-0)
docs/system/ivshmem.rst (+64/-0)
docs/system/keys.rst (+6/-0)
docs/system/keys.rst.inc (+35/-0)
docs/system/license.rst (+11/-0)
docs/system/linuxboot.rst (+30/-0)
docs/system/managed-startup.rst (+35/-0)
docs/system/monitor.rst (+31/-0)
docs/system/mux-chardev.rst (+6/-0)
docs/system/mux-chardev.rst.inc (+27/-0)
docs/system/net.rst (+100/-0)
docs/system/qemu-block-drivers.rst (+20/-0)
docs/system/qemu-block-drivers.rst.inc (+954/-0)
docs/system/qemu-cpu-models.rst (+20/-0)
docs/system/qemu-manpage.rst (+45/-0)
docs/system/quickstart.rst (+13/-0)
docs/system/s390x/vfio-ap.rst (+418/-378)
docs/system/security.rst (+44/-38)
docs/system/target-arm.rst (+88/-0)
docs/system/target-i386-desc.rst.inc (+62/-0)
docs/system/target-i386.rst (+23/-0)
docs/system/target-m68k.rst (+21/-0)
docs/system/target-mips.rst (+120/-0)
docs/system/target-ppc.rst (+47/-0)
docs/system/target-s390x.rst (+26/-0)
docs/system/target-sparc.rst (+62/-0)
docs/system/target-sparc64.rst (+37/-0)
docs/system/target-xtensa.rst (+27/-0)
docs/system/targets.rst (+20/-0)
docs/system/tls.rst (+328/-0)
docs/system/usb.rst (+137/-0)
docs/system/vnc-security.rst (+202/-0)
docs/tools/conf.py (+33/-0)
docs/tools/index.rst (+17/-0)
docs/tools/qemu-img.rst (+832/-0)
docs/tools/qemu-nbd.rst (+256/-0)
docs/tools/qemu-trace-stap.rst (+124/-0)
docs/tools/virtfs-proxy-helper.rst (+72/-0)
docs/tools/virtiofsd.rst (+120/-0)
docs/user/conf.py (+15/-0)
docs/user/index.rst (+16/-0)
docs/user/main.rst (+295/-0)
docs/virtio-net-failover.rst (+2/-2)
docs/virtio-pmem.rst (+10/-9)
docs/xbzrle.txt (+6/-1)
dump/dump-hmp-cmds.c (+2/-2)
dump/dump.c (+1/-1)
dump/win_dump.c (+1/-3)
exec.c (+125/-115)
fpu/softfloat.c (+3/-0)
fsdev/virtfs-proxy-helper.c (+47/-59)
gdb-xml/rx-core.xml (+70/-0)
gdbstub.c (+457/-483)
hmp-commands-info.hx (+275/-333)
hmp-commands.hx (+679/-810)
hw/9pfs/9p-local.c (+8/-10)
hw/9pfs/9p-proxy.c (+3/-3)
hw/9pfs/9p-synth.c (+19/-0)
hw/9pfs/9p-synth.h (+5/-0)
hw/9pfs/9p.c (+46/-17)
hw/9pfs/9p.h (+12/-1)
hw/9pfs/virtio-9p-device.c (+9/-5)
hw/9pfs/xen-9p-backend.c (+8/-5)
hw/Kconfig (+0/-1)
hw/Makefile.objs (+0/-1)
hw/acpi/Kconfig (+5/-2)
hw/acpi/Makefile.objs (+3/-1)
hw/acpi/cpu.c (+18/-0)
hw/acpi/cpu_hotplug.c (+4/-7)
hw/acpi/generic_event_device.c (+2/-2)
hw/acpi/hmat.c (+268/-0)
hw/acpi/hmat.h (+42/-0)
hw/acpi/ich9.c (+11/-90)
hw/acpi/nvdimm.c (+4/-30)
hw/acpi/pcihp.c (+5/-4)
hw/acpi/piix4.c (+8/-7)
hw/acpi/trace-events (+1/-0)
hw/acpi/vmgenid.c (+1/-1)
hw/adc/Makefile.objs (+1/-1)
hw/alpha/alpha_sys.h (+3/-3)
hw/alpha/dp264.c (+11/-11)
hw/alpha/typhoon.c (+2/-6)
hw/arm/Kconfig (+25/-0)
hw/arm/Makefile.objs (+3/-0)
hw/arm/allwinner-a10.c (+83/-18)
hw/arm/allwinner-h3.c (+465/-0)
hw/arm/armsse.c (+1/-1)
hw/arm/armv7m.c (+3/-3)
hw/arm/aspeed.c (+215/-126)
hw/arm/aspeed_ast2600.c (+76/-12)
hw/arm/aspeed_soc.c (+44/-7)
hw/arm/bcm2835_peripherals.c (+2/-1)
hw/arm/bcm2836.c (+3/-2)
hw/arm/boot.c (+3/-5)
hw/arm/collie.c (+40/-9)
hw/arm/cubieboard.c (+50/-18)
hw/arm/digic_boards.c (+21/-19)
hw/arm/exynos4210.c (+70/-21)
hw/arm/fsl-imx25.c (+72/-5)
hw/arm/fsl-imx31.c (+3/-3)
hw/arm/fsl-imx6.c (+60/-3)
hw/arm/fsl-imx6ul.c (+54/-4)
hw/arm/gumstix.c (+2/-14)
hw/arm/highbank.c (+4/-6)
hw/arm/imx25_pdk.c (+26/-9)
hw/arm/integratorcp.c (+6/-6)
hw/arm/kzm.c (+9/-9)
hw/arm/mainstone.c (+3/-19)
hw/arm/mcimx6ul-evk.c (+9/-16)
hw/arm/mcimx7d-sabre.c (+9/-16)
hw/arm/mps2-tz.c (+11/-4)
hw/arm/mps2.c (+11/-4)
hw/arm/msf2-soc.c (+4/-4)
hw/arm/musicpal.c (+14/-16)
hw/arm/netduinoplus2.c (+52/-0)
hw/arm/nrf51_soc.c (+2/-2)
hw/arm/nseries.c (+26/-22)
hw/arm/omap1.c (+4/-4)
hw/arm/omap2.c (+13/-12)
hw/arm/omap_sx1.c (+19/-18)
hw/arm/orangepi.c (+130/-0)
hw/arm/palm.c (+15/-7)
hw/arm/pxa2xx.c (+14/-12)
hw/arm/pxa2xx_gpio.c (+1/-1)
hw/arm/raspi.c (+149/-56)
hw/arm/sabrelite.c (+8/-15)
hw/arm/sbsa-ref.c (+47/-50)
hw/arm/smmu-common.c (+13/-12)
hw/arm/smmuv3-internal.h (+3/-3)
hw/arm/smmuv3.c (+25/-13)
hw/arm/spitz.c (+9/-4)
hw/arm/stellaris.c (+8/-4)
hw/arm/stm32f205_soc.c (+5/-8)
hw/arm/stm32f405_soc.c (+300/-0)
hw/arm/strongarm.c (+14/-8)
hw/arm/sysbus-fdt.c (+33/-0)
hw/arm/tosa.c (+1/-2)
hw/arm/versatilepb.c (+3/-4)
hw/arm/vexpress.c (+5/-9)
hw/arm/virt-acpi-build.c (+21/-29)
hw/arm/virt.c (+280/-103)
hw/arm/xilinx_zynq.c (+12/-13)
hw/arm/xlnx-versal-virt.c (+31/-6)
hw/arm/xlnx-versal.c (+27/-2)
hw/arm/xlnx-zcu102.c (+2/-5)
hw/arm/xlnx-zynqmp.c (+32/-8)
hw/arm/z2.c (+1/-13)
hw/audio/ac97.c (+1/-10)
hw/audio/adlib.c (+1/-1)
hw/audio/cs4231.c (+1/-1)
hw/audio/cs4231a.c (+1/-1)
hw/audio/es1370.c (+1/-1)
hw/audio/fmopl.c (+5/-3)
hw/audio/gus.c (+1/-1)
hw/audio/hda-codec.c (+5/-5)
hw/audio/intel-hda.c (+13/-17)
hw/audio/milkymist-ac97.c (+1/-1)
hw/audio/pcspk.c (+1/-1)
hw/audio/pl041.c (+1/-1)
hw/audio/sb16.c (+1/-1)
hw/audio/wm8750.c (+1/-1)
hw/block/Makefile.objs (+1/-1)
hw/block/dataplane/virtio-blk.c (+1/-1)
hw/block/dataplane/xen-block.c (+34/-34)
hw/block/fdc.c (+22/-47)
hw/block/m25p80.c (+32/-28)
hw/block/nand.c (+1/-1)
hw/block/nvme.c (+1/-1)
hw/block/onenand.c (+2/-2)
hw/block/pflash_cfi01.c (+1/-1)
hw/block/pflash_cfi02.c (+1/-2)
hw/block/swim.c (+1/-1)
hw/block/trace-events (+17/-1)
hw/block/vhost-user-blk.c (+24/-27)
hw/block/virtio-blk.c (+25/-6)
hw/block/xen-block.c (+15/-8)
hw/char/Makefile.objs (+8/-8)
hw/char/bcm2835_aux.c (+1/-1)
hw/char/cadence_uart.c (+2/-2)
hw/char/cmsdk-apb-uart.c (+1/-1)
hw/char/debugcon.c (+1/-1)
hw/char/digic-uart.c (+2/-2)
hw/char/escc.c (+2/-2)
hw/char/etraxfs_ser.c (+2/-2)
hw/char/exynos4210_uart.c (+158/-92)
hw/char/grlib_apbuart.c (+2/-2)
hw/char/imx_serial.c (+2/-2)
hw/char/ipoctal232.c (+2/-2)
hw/char/lm32_juart.c (+2/-2)
hw/char/lm32_uart.c (+2/-2)
hw/char/mcf_uart.c (+2/-2)
hw/char/milkymist-uart.c (+2/-2)
hw/char/nrf51_uart.c (+2/-2)
hw/char/omap_uart.c (+1/-1)
hw/char/parallel.c (+1/-1)
hw/char/pl011.c (+2/-2)
hw/char/sclpconsole-lm.c (+2/-2)
hw/char/sclpconsole.c (+2/-2)
hw/char/serial-isa.c (+11/-3)
hw/char/serial-pci-multi.c (+37/-22)
hw/char/serial-pci.c (+15/-5)
hw/char/serial.c (+164/-35)
hw/char/sh_serial.c (+1/-1)
hw/char/spapr_vty.c (+1/-1)
hw/char/stm32f2xx_usart.c (+1/-1)
hw/char/terminal3270.c (+7/-2)
hw/char/trace-events (+20/-0)
hw/char/virtio-console.c (+7/-2)
hw/char/virtio-serial-bus.c (+11/-3)
hw/char/xilinx_uartlite.c (+2/-2)
hw/core/Makefile.objs (+17/-14)
hw/core/bus.c (+102/-0)
hw/core/cpu.c (+6/-9)
hw/core/generic-loader.c (+2/-2)
hw/core/loader-fit.c (+8/-7)
hw/core/loader.c (+39/-28)
hw/core/machine-hmp-cmds.c (+3/-3)
hw/core/machine.c (+142/-145)
hw/core/null-machine.c (+3/-5)
hw/core/numa.c (+326/-79)
hw/core/or-irq.c (+2/-2)
hw/core/platform-bus.c (+3/-2)
hw/core/qdev-properties.c (+31/-40)
hw/core/qdev.c (+251/-135)
hw/core/resettable.c (+301/-0)
hw/core/split-irq.c (+1/-1)
hw/core/sysbus.c (+0/-32)
hw/core/trace-events (+27/-0)
hw/core/vmstate-if.c (+23/-0)
hw/cpu/a15mpcore.c (+1/-1)
hw/cpu/a9mpcore.c (+5/-1)
hw/cpu/arm11mpcore.c (+6/-1)
hw/cpu/cluster.c (+1/-1)
hw/cpu/realview_mpcore.c (+1/-1)
hw/cris/axis_dev88.c (+3/-11)
hw/cris/boot.c (+1/-1)
hw/display/Kconfig (+4/-0)
hw/display/Makefile.objs (+2/-1)
hw/display/ads7846.c (+1/-1)
hw/display/artist.c (+1443/-0)
hw/display/ati.c (+1/-1)
hw/display/ati_2d.c (+26/-11)
hw/display/bcm2835_fb.c (+1/-2)
hw/display/bochs-display.c (+5/-3)
hw/display/cg3.c (+3/-4)
hw/display/cirrus_vga.c (+1/-1)
hw/display/cirrus_vga_isa.c (+1/-1)
hw/display/edid-generate.c (+2/-2)
hw/display/exynos4210_fimd.c (+2/-2)
hw/display/g364fb.c (+3/-2)
hw/display/i2c-ddc.c (+1/-1)
hw/display/jazz_led.c (+62/-61)
hw/display/macfb.c (+4/-4)
hw/display/milkymist-tmu2.c (+4/-4)
hw/display/milkymist-vgafb.c (+1/-1)
hw/display/omap_dss.c (+1/-1)
hw/display/omap_lcdc.c (+5/-5)
hw/display/pxa2xx_lcd.c (+0/-1)
hw/display/qxl-render.c (+7/-2)
hw/display/qxl.c (+11/-5)
hw/display/qxl.h (+1/-1)
hw/display/ramfb-standalone.c (+1/-1)
hw/display/ramfb.c (+1/-1)
hw/display/sm501.c (+23/-12)
hw/display/tcx.c (+5/-4)
hw/display/trace-events (+9/-0)
hw/display/vga-isa-mm.c (+4/-1)
hw/display/vga-isa.c (+4/-2)
hw/display/vga-pci.c (+6/-11)
hw/display/vga.c (+0/-14)
hw/display/vga_int.h (+0/-3)
hw/display/vhost-user-gpu.c (+1/-1)
hw/display/virtio-gpu-pci.c (+1/-1)
hw/display/virtio-gpu.c (+1/-1)
hw/display/virtio-vga.c (+1/-1)
hw/display/vmware_vga.c (+1/-6)
hw/dma/Makefile.objs (+3/-3)
hw/dma/bcm2835_dma.c (+8/-4)
hw/dma/etraxfs_dma.c (+10/-15)
hw/dma/i82374.c (+1/-1)
hw/dma/i8257.c (+15/-9)
hw/dma/pl080.c (+1/-1)
hw/dma/pl330.c (+49/-41)
hw/dma/pxa2xx_dma.c (+1/-1)
hw/dma/rc4030.c (+13/-11)
hw/dma/soc_dma.c (+1/-1)
hw/dma/sparc32_dma.c (+1/-1)
hw/dma/trace-events (+24/-0)
hw/dma/xilinx_axidma.c (+1/-1)
hw/dma/xlnx-zdma.c (+34/-35)
hw/gpio/Makefile.objs (+5/-5)
hw/gpio/aspeed_gpio.c (+1/-2)
hw/gpio/imx_gpio.c (+1/-1)
hw/gpio/omap_gpio.c (+17/-29)
hw/hppa/Kconfig (+4/-0)
hw/hppa/Makefile.objs (+1/-1)
hw/hppa/dino.c (+86/-14)
hw/hppa/hppa_hardware.h (+1/-0)
hw/hppa/hppa_sys.h (+4/-2)
hw/hppa/lasi.c (+368/-0)
hw/hppa/machine.c (+30/-18)
hw/hppa/trace-events (+10/-0)
hw/hyperv/hyperv.c (+10/-14)
hw/i2c/Makefile.objs (+2/-2)
hw/i2c/aspeed_i2c.c (+411/-28)
hw/i2c/core.c (+2/-2)
hw/i2c/omap_i2c.c (+13/-8)
hw/i2c/ppc4xx_i2c.c (+0/-1)
hw/i2c/smbus_eeprom.c (+9/-9)
hw/i2c/smbus_ich9.c (+1/-0)
hw/i2c/trace-events (+9/-0)
hw/i386/Kconfig (+8/-2)
hw/i386/Makefile.objs (+6/-4)
hw/i386/acpi-build.c (+12/-6)
hw/i386/amd_iommu.c (+8/-8)
hw/i386/fw_cfg.c (+7/-1)
hw/i386/fw_cfg.h (+2/-0)
hw/i386/intel_iommu.c (+100/-38)
hw/i386/intel_iommu_internal.h (+1/-0)
hw/i386/kvm/Makefile.objs (+5/-1)
hw/i386/kvm/clock.c (+1/-1)
hw/i386/kvm/i8254.c (+1/-1)
hw/i386/kvm/i8259.c (+1/-0)
hw/i386/kvm/ioapic.c (+2/-14)
hw/i386/microvm.c (+8/-10)
hw/i386/multiboot.c (+1/-1)
hw/i386/pc.c (+57/-324)
hw/i386/pc_piix.c (+49/-104)
hw/i386/pc_q35.c (+14/-2)
hw/i386/port92.c (+126/-0)
hw/i386/trace-events (+8/-0)
hw/i386/vmmouse.c (+10/-6)
hw/i386/x86-iommu-stub.c (+43/-0)
hw/i386/x86-iommu.c (+1/-1)
hw/i386/x86.c (+255/-30)
hw/i386/xen/xen_pvdevice.c (+1/-1)
hw/ide/ahci.c (+2/-2)
hw/ide/ahci_internal.h (+1/-0)
hw/ide/cmd646.c (+9/-23)
hw/ide/core.c (+23/-9)
hw/ide/isa.c (+2/-2)
hw/ide/macio.c (+2/-2)
hw/ide/microdrive.c (+4/-4)
hw/ide/mmio.c (+1/-1)
hw/ide/pci.c (+8/-5)
hw/ide/piix.c (+2/-31)
hw/ide/qdev.c (+4/-4)
hw/ide/sii3112.c (+4/-4)
hw/ide/via.c (+9/-19)
hw/input/Kconfig (+3/-1)
hw/input/Makefile.objs (+4/-3)
hw/input/adb.c (+1/-1)
hw/input/lasips2.c (+291/-0)
hw/input/milkymist-softusb.c (+1/-1)
hw/input/pckbd.c (+3/-6)
hw/input/ps2.c (+15/-0)
hw/input/stellaris_input.c (+2/-1)
hw/input/trace-events (+5/-0)
hw/input/virtio-input-hid.c (+3/-3)
hw/input/virtio-input-host.c (+1/-1)
hw/input/virtio-input.c (+4/-3)
hw/intc/Kconfig (+3/-0)
hw/intc/apic.c (+1/-1)
hw/intc/apic_common.c (+6/-3)
hw/intc/arm_gic.c (+31/-2)
hw/intc/arm_gic_common.c (+2/-1)
hw/intc/arm_gic_kvm.c (+9/-0)
hw/intc/arm_gicv2m.c (+1/-1)
hw/intc/arm_gicv3_common.c (+1/-1)
hw/intc/arm_gicv3_cpuif.c (+3/-0)
hw/intc/arm_gicv3_its_kvm.c (+1/-1)
hw/intc/arm_gicv3_kvm.c (+4/-7)
hw/intc/armv7m_nvic.c (+22/-16)
hw/intc/bcm2835_ic.c (+2/-2)
hw/intc/bcm2836_control.c (+3/-1)
hw/intc/etraxfs_pic.c (+1/-25)
hw/intc/exynos4210_combiner.c (+1/-1)
hw/intc/exynos4210_gic.c (+10/-3)
hw/intc/grlib_irqmp.c (+4/-31)
hw/intc/i8259.c (+1/-1)
hw/intc/i8259_common.c (+2/-2)
hw/intc/ioapic.c (+3/-2)
hw/intc/mips_gic.c (+1/-1)
hw/intc/omap_intc.c (+12/-9)
hw/intc/ompic.c (+1/-1)
hw/intc/openpic.c (+1/-1)
hw/intc/openpic_kvm.c (+1/-1)
hw/intc/pnv_xive.c (+280/-135)
hw/intc/s390_flic.c (+1/-1)
hw/intc/s390_flic_kvm.c (+18/-16)
hw/intc/spapr_xive.c (+106/-18)
hw/intc/spapr_xive_kvm.c (+26/-19)
hw/intc/xics.c (+30/-45)
hw/intc/xics_kvm.c (+21/-3)
hw/intc/xics_spapr.c (+3/-2)
hw/intc/xilinx_intc.c (+1/-1)
hw/intc/xive.c (+237/-187)
hw/intc/xlnx-pmu-iomod-intc.c (+1/-1)
hw/ipack/ipack.c (+1/-1)
hw/ipmi/ipmi.c (+1/-1)
hw/ipmi/ipmi_bmc_extern.c (+8/-6)
hw/ipmi/ipmi_bmc_sim.c (+7/-45)
hw/ipmi/isa_ipmi_bt.c (+6/-3)
hw/ipmi/isa_ipmi_kcs.c (+6/-3)
hw/ipmi/pci_ipmi_bt.c (+4/-2)
hw/ipmi/pci_ipmi_kcs.c (+4/-2)
hw/isa/Kconfig (+1/-0)
hw/isa/i82378.c (+1/-1)
hw/isa/isa-bus.c (+7/-4)
hw/isa/isa-superio.c (+1/-1)
hw/isa/lpc_ich9.c (+7/-24)
hw/isa/pc87312.c (+1/-1)
hw/isa/piix4.c (+11/-14)
hw/isa/smc37c669-superio.c (+1/-1)
hw/isa/vt82c686.c (+13/-12)
hw/lm32/lm32_boards.c (+29/-17)
hw/lm32/milkymist.c (+15/-9)
hw/m68k/an5206.c (+3/-4)
hw/m68k/bootinfo.h (+1/-1)
hw/m68k/mcf5208.c (+4/-5)
hw/m68k/next-cube.c (+3/-4)
hw/m68k/q800.c (+40/-10)
hw/mem/Kconfig (+1/-1)
hw/mem/memory-device.c (+4/-2)
hw/mem/nvdimm.c (+41/-1)
hw/mem/pc-dimm.c (+1/-1)
hw/microblaze/boot.c (+2/-2)
hw/microblaze/petalogix_ml605_mmu.c (+0/-1)
hw/microblaze/petalogix_s3adsp1800_mmu.c (+1/-1)
hw/mips/boston.c (+7/-8)
hw/mips/cps.c (+2/-2)
hw/mips/gt64xxx_pci.c (+1/-1)
hw/mips/mips_fulong2e.c (+15/-15)
hw/mips/mips_int.c (+1/-1)
hw/mips/mips_jazz.c (+32/-23)
hw/mips/mips_malta.c (+97/-96)
hw/mips/mips_mipssim.c (+16/-12)
hw/mips/mips_r4k.c (+42/-32)
hw/misc/Kconfig (+6/-0)
hw/misc/Makefile.objs (+8/-0)
hw/misc/a9scu.c (+1/-1)
hw/misc/allwinner-cpucfg.c (+282/-0)
hw/misc/allwinner-h3-ccu.c (+242/-0)
hw/misc/allwinner-h3-dramc.c (+358/-0)
hw/misc/allwinner-h3-sysctrl.c (+140/-0)
hw/misc/allwinner-sid.c (+168/-0)
hw/misc/applesmc.c (+1/-1)
hw/misc/arm11scu.c (+1/-1)
hw/misc/arm_l2x0.c (+1/-1)
hw/misc/arm_sysctl.c (+1/-1)
hw/misc/armsse-cpuid.c (+1/-1)
hw/misc/aspeed_scu.c (+85/-29)
hw/misc/aspeed_sdmc.c (+65/-20)
hw/misc/bcm2835_mbox.c (+3/-1)
hw/misc/bcm2835_property.c (+4/-2)
hw/misc/debugexit.c (+1/-1)
hw/misc/eccmemctl.c (+1/-1)
hw/misc/edu.c (+3/-10)
hw/misc/imx2_wdt.c (+1/-1)
hw/misc/imx_rngc.c (+278/-0)
hw/misc/iotkit-secctl.c (+1/-1)
hw/misc/iotkit-sysctl.c (+1/-1)
hw/misc/iotkit-sysinfo.c (+1/-1)
hw/misc/ivshmem.c (+5/-41)
hw/misc/mac_via.c (+259/-83)
hw/misc/macio/cuda.c (+1/-1)
hw/misc/macio/macio.c (+2/-2)
hw/misc/macio/pmu.c (+1/-1)
hw/misc/max111x.c (+2/-1)
hw/misc/mips_cmgcr.c (+1/-1)
hw/misc/mips_cpc.c (+1/-1)
hw/misc/mips_itu.c (+1/-1)
hw/misc/mos6522.c (+9/-9)
hw/misc/mps2-fpgaio.c (+1/-1)
hw/misc/mps2-scc.c (+1/-1)
hw/misc/msf2-sysreg.c (+1/-1)
hw/misc/nrf51_rng.c (+1/-1)
hw/misc/omap_l4.c (+1/-1)
hw/misc/pc-testdev.c (+1/-1)
hw/misc/pca9552.c (+90/-0)
hw/misc/pci-testdev.c (+1/-1)
hw/misc/pvpanic.c (+10/-3)
hw/misc/stm32f4xx_exti.c (+188/-0)
hw/misc/stm32f4xx_syscfg.c (+171/-0)
hw/misc/trace-events (+49/-0)
hw/misc/tz-mpc.c (+1/-1)
hw/misc/tz-msc.c (+1/-1)
hw/misc/tz-ppc.c (+1/-1)
hw/misc/unimp.c (+1/-1)
hw/moxie/moxiesim.c (+2/-2)
hw/net/Kconfig (+12/-0)
hw/net/Makefile.objs (+6/-3)
hw/net/allwinner-sun8i-emac.c (+867/-0)
hw/net/allwinner_emac.c (+2/-2)
hw/net/cadence_gem.c (+20/-22)
hw/net/can/can_sja1000.c (+6/-6)
hw/net/can/can_sja1000.h (+1/-1)
hw/net/dp8393x.c (+176/-110)
hw/net/e1000.c (+6/-4)
hw/net/e1000e.c (+3/-3)
hw/net/e1000e_core.c (+14/-9)
hw/net/e1000e_core.h (+1/-1)
hw/net/eepro100.c (+4/-3)
hw/net/etraxfs_eth.c (+34/-12)
hw/net/fsl_etsec/etsec.c (+1/-1)
hw/net/ftgmac100.c (+26/-14)
hw/net/i82596.c (+755/-0)
hw/net/i82596.h (+55/-0)
hw/net/imx_fec.c (+10/-7)
hw/net/lan9118.c (+1/-1)
hw/net/lance.c (+3/-4)
hw/net/lasi_i82596.c (+189/-0)
hw/net/mcf_fec.c (+1/-1)
hw/net/milkymist-minimac2.c (+1/-1)
hw/net/mipsnet.c (+24/-20)
hw/net/ne2000-isa.c (+1/-1)
hw/net/ne2000-pci.c (+1/-1)
hw/net/net_rx_pkt.c (+43/-1)
hw/net/net_rx_pkt.h (+5/-1)
hw/net/opencores_eth.c (+3/-4)
hw/net/pcnet-pci.c (+2/-2)
hw/net/pcnet.h (+1/-1)
hw/net/rocker/rocker.c (+10/-7)
hw/net/rtl8139.c (+13/-11)
hw/net/smc91c111.c (+6/-6)
hw/net/spapr_llan.c (+3/-3)
hw/net/stellaris_enet.c (+1/-1)
hw/net/sungem.c (+4/-4)
hw/net/sunhme.c (+3/-3)
hw/net/trace-events (+27/-0)
hw/net/tulip.c (+28/-10)
hw/net/virtio-net.c (+10/-8)
hw/net/vmxnet3.c (+1/-1)
hw/net/xgmac.c (+1/-1)
hw/net/xilinx_axienet.c (+1/-1)
hw/net/xilinx_ethlite.c (+2/-2)
hw/nios2/10m50_devboard.c (+1/-1)
hw/nios2/boot.c (+3/-2)
hw/nvram/Kconfig (+8/-0)
hw/nvram/Makefile.objs (+3/-3)
hw/nvram/ds1225y.c (+1/-1)
hw/nvram/eeprom93xx.c (+3/-3)
hw/nvram/eeprom_at24c.c (+1/-1)
hw/nvram/fw_cfg.c (+92/-3)
hw/nvram/mac_nvram.c (+1/-1)
hw/nvram/nrf51_nvm.c (+1/-1)
hw/nvram/spapr_nvram.c (+3/-3)
hw/openrisc/openrisc_sim.c (+2/-2)
hw/pci-bridge/gen_pcie_root_port.c (+1/-1)
hw/pci-bridge/pci_bridge_dev.c (+1/-1)
hw/pci-bridge/pci_expander_bridge.c (+2/-2)
hw/pci-bridge/pcie_pci_bridge.c (+1/-1)
hw/pci-bridge/pcie_root_port.c (+2/-2)
hw/pci-bridge/xio3130_downstream.c (+2/-2)
hw/pci-host/Kconfig (+5/-0)
hw/pci-host/Makefile.objs (+3/-0)
hw/pci-host/bonito.c (+33/-28)
hw/pci-host/designware.c (+1/-1)
hw/pci-host/grackle.c (+1/-1)
hw/pci-host/i440fx.c (+3/-105)
hw/pci-host/pnv_phb3.c (+1197/-0)
hw/pci-host/pnv_phb3_msi.c (+349/-0)
hw/pci-host/pnv_phb3_pbcq.c (+359/-0)
hw/pci-host/pnv_phb4.c (+1439/-0)
hw/pci-host/pnv_phb4_pec.c (+595/-0)
hw/pci-host/ppce500.c (+1/-1)
hw/pci-host/prep.c (+6/-6)
hw/pci-host/q35.c (+83/-20)
hw/pci-host/sabre.c (+1/-1)
hw/pci-host/uninorth.c (+1/-1)
hw/pci-host/versatile.c (+1/-1)
hw/pci-host/xen_igd_pt.c (+120/-0)
hw/pci-host/xilinx-pcie.c (+1/-1)
hw/pci/pci-stub.c (+27/-0)
hw/pci/pci.c (+7/-8)
hw/pci/pci_host.c (+7/-18)
hw/pci/pcie.c (+7/-4)
hw/pci/pcie_port.c (+3/-2)
hw/pcmcia/Makefile.objs (+1/-1)
hw/ppc/Kconfig (+22/-0)
hw/ppc/Makefile.objs (+7/-6)
hw/ppc/e500.c (+16/-13)
hw/ppc/e500plat.c (+1/-0)
hw/ppc/mac_newworld.c (+6/-8)
hw/ppc/mac_oldworld.c (+6/-10)
hw/ppc/mpc8544ds.c (+1/-0)
hw/ppc/pnv.c (+664/-141)
hw/ppc/pnv_bmc.c (+163/-0)
hw/ppc/pnv_core.c (+32/-25)
hw/ppc/pnv_homer.c (+120/-10)
hw/ppc/pnv_lpc.c (+65/-25)
hw/ppc/pnv_occ.c (+14/-18)
hw/ppc/pnv_pnor.c (+141/-0)
hw/ppc/pnv_psi.c (+60/-37)
hw/ppc/pnv_xscom.c (+16/-63)
hw/ppc/ppc.c (+51/-42)
hw/ppc/ppc405_boards.c (+35/-25)
hw/ppc/ppc440_bamboo.c (+8/-14)
hw/ppc/ppc440_uc.c (+5/-6)
hw/ppc/ppc4xx_devs.c (+33/-34)
hw/ppc/prep.c (+1/-384)
hw/ppc/prep_systemio.c (+1/-1)
hw/ppc/rs6000_mc.c (+1/-1)
hw/ppc/sam460ex.c (+5/-4)
hw/ppc/spapr.c (+640/-515)
hw/ppc/spapr_caps.c (+43/-4)
hw/ppc/spapr_cpu_core.c (+7/-11)
hw/ppc/spapr_drc.c (+62/-12)
hw/ppc/spapr_events.c (+321/-0)
hw/ppc/spapr_hcall.c (+91/-29)
hw/ppc/spapr_iommu.c (+2/-2)
hw/ppc/spapr_irq.c (+15/-33)
hw/ppc/spapr_nvdimm.c (+478/-0)
hw/ppc/spapr_ovec.c (+12/-22)
hw/ppc/spapr_pci.c (+11/-10)
hw/ppc/spapr_pci_nvlink2.c (+5/-5)
hw/ppc/spapr_rng.c (+1/-1)
hw/ppc/spapr_rtas.c (+132/-6)
hw/ppc/spapr_tpm_proxy.c (+1/-1)
hw/ppc/spapr_vio.c (+10/-3)
hw/ppc/virtex_ml507.c (+9/-13)
hw/rdma/rdma_backend.c (+30/-31)
hw/rdma/rdma_backend.h (+0/-5)
hw/rdma/rdma_rm.c (+6/-7)
hw/rdma/vmw/pvrdma_dev_ring.c (+3/-2)
hw/rdma/vmw/pvrdma_main.c (+1/-1)
hw/rdma/vmw/pvrdma_qp_ops.c (+2/-2)
hw/riscv/Kconfig (+1/-0)
hw/riscv/boot.c (+2/-2)
hw/riscv/riscv_hart.c (+1/-1)
hw/riscv/riscv_htif.c (+1/-1)
hw/riscv/sifive_clint.c (+6/-2)
hw/riscv/sifive_e.c (+5/-6)
hw/riscv/sifive_plic.c (+1/-1)
hw/riscv/sifive_u.c (+8/-3)
hw/riscv/sifive_u_otp.c (+1/-1)
hw/riscv/sifive_uart.c (+1/-1)
hw/riscv/spike.c (+7/-4)
hw/riscv/virt.c (+40/-5)
hw/rtc/Kconfig (+4/-0)
hw/rtc/Makefile.objs (+2/-0)
hw/rtc/allwinner-rtc.c (+411/-0)
hw/rtc/goldfish_rtc.c (+285/-0)
hw/rtc/m48t59-internal.h (+0/-5)
hw/rtc/m48t59-isa.c (+1/-1)
hw/rtc/m48t59.c (+6/-7)
hw/rtc/mc146818rtc.c (+1/-1)
hw/rtc/pl031.c (+1/-1)
hw/rtc/trace-events (+14/-0)
hw/rtc/twl92230.c (+0/-1)
hw/s390x/3270-ccw.c (+1/-1)
hw/s390x/ccw-device.c (+1/-1)
hw/s390x/css-bridge.c (+1/-1)
hw/s390x/css.c (+6/-6)
hw/s390x/event-facility.c (+17/-24)
hw/s390x/ipl.c (+41/-7)
hw/s390x/ipl.h (+9/-9)
hw/s390x/s390-pci-bus.c (+2/-2)
hw/s390x/s390-pci-inst.c (+1/-1)
hw/s390x/s390-skeys.c (+2/-2)
hw/s390x/s390-stattrib-kvm.c (+2/-2)
hw/s390x/s390-stattrib.c (+2/-1)
hw/s390x/s390-virtio-ccw.c (+55/-9)
hw/s390x/sclp.c (+10/-23)
hw/s390x/vhost-vsock-ccw.c (+1/-1)
hw/s390x/virtio-ccw-9p.c (+1/-1)
hw/s390x/virtio-ccw-balloon.c (+1/-1)
hw/s390x/virtio-ccw-blk.c (+1/-1)
hw/s390x/virtio-ccw-crypto.c (+1/-1)
hw/s390x/virtio-ccw-gpu.c (+1/-1)
hw/s390x/virtio-ccw-input.c (+1/-1)
hw/s390x/virtio-ccw-net.c (+1/-1)
hw/s390x/virtio-ccw-rng.c (+1/-1)
hw/s390x/virtio-ccw-scsi.c (+2/-2)
hw/s390x/virtio-ccw-serial.c (+1/-1)
hw/s390x/virtio-ccw.c (+6/-2)
hw/scsi/Kconfig (+1/-0)
hw/scsi/esp.c (+1/-1)
hw/scsi/megasas.c (+1/-1)
hw/scsi/mptsas.c (+1/-1)
hw/scsi/scsi-bus.c (+1/-1)
hw/scsi/scsi-disk.c (+4/-5)
hw/scsi/scsi-generic.c (+1/-1)
hw/scsi/spapr_vscsi.c (+43/-31)
hw/scsi/trace-events (+1/-0)
hw/scsi/vhost-scsi.c (+3/-1)
hw/scsi/vhost-user-scsi.c (+25/-1)
hw/scsi/viosrp.h (+2/-1)
hw/scsi/virtio-scsi.c (+24/-5)
hw/scsi/vmw_pvscsi.c (+9/-8)
hw/sd/Makefile.objs (+6/-5)
hw/sd/allwinner-sdhost.c (+854/-0)
hw/sd/aspeed_sdhci.c (+9/-2)
hw/sd/omap_mmc.c (+1/-1)
hw/sd/pl181.c (+1/-1)
hw/sd/sd.c (+1/-1)
hw/sd/sdhci-pci.c (+1/-1)
hw/sd/sdhci.c (+7/-12)
hw/sd/ssi-sd.c (+14/-2)
hw/sd/trace-events (+7/-0)
hw/semihosting/console.c (+79/-0)
hw/sh4/r2d.c (+1/-1)
hw/sh4/sh_pci.c (+3/-8)
hw/sh4/shix.c (+2/-3)
hw/smbios/smbios.c (+0/-1)
hw/sparc/Kconfig (+1/-0)
hw/sparc/leon3.c (+16/-10)
hw/sparc/sun4m.c (+41/-41)
hw/sparc/sun4m_iommu.c (+1/-1)
hw/sparc64/Kconfig (+1/-0)
hw/sparc64/niagara.c (+2/-5)
hw/sparc64/sun4u.c (+8/-11)
hw/ssi/Makefile.objs (+2/-2)
hw/ssi/aspeed_smc.c (+100/-38)
hw/ssi/trace-events (+11/-0)
hw/ssi/xilinx_spi.c (+1/-1)
hw/ssi/xilinx_spips.c (+3/-3)
hw/timer/Kconfig (+1/-0)
hw/timer/a9gtimer.c (+1/-1)
hw/timer/allwinner-a10-pit.c (+1/-1)
hw/timer/altera_timer.c (+1/-1)
hw/timer/arm_mptimer.c (+1/-1)
hw/timer/arm_timer.c (+2/-2)
hw/timer/armv7m_systick.c (+6/-0)
hw/timer/aspeed_timer.c (+10/-9)
hw/timer/cadence_ttc.c (+11/-5)
hw/timer/cmsdk-apb-dualtimer.c (+1/-1)
hw/timer/cmsdk-apb-timer.c (+1/-1)
hw/timer/grlib_gptimer.c (+1/-1)
hw/timer/hpet.c (+2/-2)
hw/timer/i8254.c (+1/-1)
hw/timer/lm32_timer.c (+1/-1)
hw/timer/milkymist-sysctl.c (+1/-1)
hw/timer/mss-timer.c (+1/-1)
hw/timer/pxa2xx_timer.c (+2/-2)
hw/timer/slavio_timer.c (+1/-1)
hw/timer/stm32f2xx_timer.c (+6/-1)
hw/timer/xilinx_timer.c (+1/-1)
hw/tpm/Kconfig (+17/-1)
hw/tpm/Makefile.objs (+4/-1)
hw/tpm/tpm_crb.c (+1/-1)
hw/tpm/tpm_emulator.c (+6/-5)
hw/tpm/tpm_ppi.c (+2/-1)
hw/tpm/tpm_spapr.c (+429/-0)
hw/tpm/tpm_tis.h (+91/-0)
hw/tpm/tpm_tis_common.c (+17/-196)
hw/tpm/tpm_tis_isa.c (+170/-0)
hw/tpm/tpm_tis_sysbus.c (+159/-0)
hw/tpm/tpm_util.c (+25/-0)
hw/tpm/tpm_util.h (+3/-0)
hw/tpm/trace-events (+15/-1)
hw/tricore/tricore_testboard.c (+1/-2)
hw/unicore32/puv3.c (+1/-1)
hw/usb/Kconfig (+3/-3)
hw/usb/Makefile.objs (+6/-3)
hw/usb/bus.c (+1/-1)
hw/usb/ccid-card-emulated.c (+1/-1)
hw/usb/ccid-card-passthru.c (+7/-2)
hw/usb/dev-audio.c (+1/-1)
hw/usb/dev-hid.c (+3/-3)
hw/usb/dev-hub.c (+1/-1)
hw/usb/dev-mtp.c (+1/-1)
hw/usb/dev-network.c (+3/-3)
hw/usb/dev-serial.c (+71/-40)
hw/usb/dev-smartcard-reader.c (+4/-4)
hw/usb/dev-storage.c (+1/-3)
hw/usb/dev-uas.c (+2/-2)
hw/usb/hcd-ehci-pci.c (+1/-1)
hw/usb/hcd-ehci-sysbus.c (+14/-12)
hw/usb/hcd-ehci.c (+0/-3)
hw/usb/hcd-ehci.h (+1/-0)
hw/usb/hcd-ohci-pci.c (+1/-1)
hw/usb/hcd-ohci.c (+1/-16)
hw/usb/hcd-ohci.h (+16/-0)
hw/usb/hcd-uhci.c (+2/-2)
hw/usb/hcd-xhci-nec.c (+1/-1)
hw/usb/hcd-xhci.c (+14/-4)
hw/usb/host-libusb.c (+30/-9)
hw/usb/imx-usb-phy.c (+225/-0)
hw/usb/quirks.c (+2/-2)
hw/usb/quirks.h (+13/-9)
hw/usb/redirect.c (+36/-2)
hw/usb/trace-events (+1/-0)
hw/usb/xen-usb.c (+4/-6)
hw/vfio/Kconfig (+5/-0)
hw/vfio/Makefile.objs (+1/-0)
hw/vfio/ap.c (+4/-7)
hw/vfio/ccw.c (+2/-2)
hw/vfio/common.c (+2/-2)
hw/vfio/display.c (+1/-1)
hw/vfio/igd.c (+616/-0)
hw/vfio/pci-quirks.c (+3/-611)
hw/vfio/pci.c (+5/-3)
hw/vfio/pci.h (+17/-0)
hw/vfio/platform.c (+1/-1)
hw/vfio/spapr.c (+3/-3)
hw/virtio/Kconfig (+8/-0)
hw/virtio/Makefile.objs (+4/-2)
hw/virtio/trace-events (+20/-0)
hw/virtio/vhost-scsi-pci.c (+1/-1)
hw/virtio/vhost-user-blk-pci.c (+1/-1)
hw/virtio/vhost-user-fs-pci.c (+3/-2)
hw/virtio/vhost-user-fs.c (+15/-4)
hw/virtio/vhost-user-scsi-pci.c (+1/-1)
hw/virtio/vhost-user.c (+14/-6)
hw/virtio/vhost-vsock-pci.c (+1/-1)
hw/virtio/vhost-vsock.c (+17/-5)
hw/virtio/vhost.c (+36/-23)
hw/virtio/virtio-9p-pci.c (+1/-1)
hw/virtio/virtio-balloon-pci.c (+1/-1)
hw/virtio/virtio-balloon.c (+8/-1)
hw/virtio/virtio-blk-pci.c (+1/-1)
hw/virtio/virtio-crypto-pci.c (+1/-1)
hw/virtio/virtio-crypto.c (+3/-2)
hw/virtio/virtio-input-pci.c (+1/-1)
hw/virtio/virtio-iommu-pci.c (+104/-0)
hw/virtio/virtio-iommu.c (+893/-0)
hw/virtio/virtio-mmio.c (+17/-2)
hw/virtio/virtio-net-pci.c (+1/-1)
hw/virtio/virtio-pci.c (+12/-6)
hw/virtio/virtio-pmem.c (+2/-1)
hw/virtio/virtio-rng.c (+1/-1)
hw/virtio/virtio-scsi-pci.c (+1/-1)
hw/virtio/virtio-serial-pci.c (+1/-1)
hw/virtio/virtio.c (+144/-32)
hw/watchdog/cmsdk-apb-watchdog.c (+1/-1)
hw/watchdog/wdt_aspeed.c (+27/-14)
hw/xen/xen-bus.c (+24/-5)
hw/xen/xen-common.c (+25/-0)
hw/xen/xen-legacy-backend.c (+2/-2)
hw/xen/xen_pt.c (+3/-1)
hw/xen/xen_pt.h (+1/-1)
hw/xen/xen_pt_graphics.c (+1/-1)
hw/xen/xen_pt_load_rom.c (+0/-4)
hw/xenpv/xen_machine_pv.c (+1/-1)
hw/xtensa/sim.c (+1/-1)
hw/xtensa/xtfpga.c (+2/-1)
include/block/aio-wait.h (+22/-0)
include/block/aio.h (+117/-25)
include/block/block-copy.h (+8/-57)
include/block/block-hmp-cmds.h (+54/-0)
include/block/block.h (+6/-18)
include/block/block_int.h (+34/-12)
include/block/dirty-bitmap.h (+6/-3)
include/block/nbd.h (+1/-0)
include/block/qapi.h (+3/-1)
include/block/raw-aio.h (+12/-0)
include/block/snapshot.h (+1/-1)
include/chardev/char-fe.h (+1/-1)
include/chardev/char-mux.h (+1/-1)
include/chardev/char.h (+2/-2)
include/crypto/block.h (+22/-0)
include/crypto/tlssession.h (+1/-1)
include/disas/dis-asm.h (+8/-0)
include/elf.h (+1/-0)
include/exec/cpu-all.h (+1/-1)
include/exec/cpu-common.h (+6/-6)
include/exec/cpu_ldst.h (+131/-310)
include/exec/exec-all.h (+6/-0)
include/exec/gdbstub.h (+67/-13)
include/exec/helper-gen.h (+13/-0)
include/exec/helper-head.h (+2/-0)
include/exec/helper-proto.h (+6/-0)
include/exec/helper-tcg.h (+7/-0)
include/exec/log.h (+29/-5)
include/exec/memory.h (+239/-20)
include/exec/poison.h (+1/-0)
include/exec/ram_addr.h (+9/-39)
include/exec/ramblock.h (+64/-0)
include/exec/translator.h (+13/-35)
include/hw/acpi/acpi-defs.h (+8/-8)
include/hw/acpi/acpi.h (+0/-1)
include/hw/acpi/aml-build.h (+1/-0)
include/hw/arm/allwinner-a10.h (+10/-7)
include/hw/arm/allwinner-h3.h (+161/-0)
include/hw/arm/aspeed.h (+12/-14)
include/hw/arm/aspeed_soc.h (+9/-0)
include/hw/arm/bcm2835_peripherals.h (+2/-1)
include/hw/arm/bcm2836.h (+2/-1)
include/hw/arm/exynos4210.h (+4/-0)
include/hw/arm/fsl-imx25.h (+23/-0)
include/hw/arm/fsl-imx6.h (+9/-0)
include/hw/arm/fsl-imx6ul.h (+13/-3)
include/hw/arm/omap.h (+52/-0)
include/hw/arm/smmu-common.h (+1/-1)
include/hw/arm/stm32f405_soc.h (+73/-0)
include/hw/arm/virt.h (+16/-2)
include/hw/arm/xlnx-versal.h (+6/-0)
include/hw/boards.h (+37/-45)
include/hw/char/bcm2835_aux.h (+2/-1)
include/hw/char/serial.h (+32/-11)
include/hw/core/cpu.h (+1/-3)
include/hw/cris/etraxfs.h (+3/-17)
include/hw/display/bcm2835_fb.h (+2/-1)
include/hw/dma/bcm2835_dma.h (+3/-1)
include/hw/elf_ops.h (+30/-24)
include/hw/i2c/aspeed_i2c.h (+16/-0)
include/hw/i386/ich9.h (+0/-1)
include/hw/i386/intel_iommu.h (+2/-5)
include/hw/i386/ioapic_internal.h (+0/-1)
include/hw/i386/pc.h (+8/-38)
include/hw/i386/topology.h (+152/-63)
include/hw/i386/x86.h (+38/-0)
include/hw/ide.h (+0/-9)
include/hw/ide/internal.h (+3/-2)
include/hw/ide/pci.h (+2/-1)
include/hw/input/i8042.h (+3/-1)
include/hw/input/lasips2.h (+16/-0)
include/hw/input/ps2.h (+1/-0)
include/hw/intc/arm_gic.h (+2/-0)
include/hw/intc/arm_gic_common.h (+1/-0)
include/hw/intc/bcm2835_ic.h (+3/-1)
include/hw/intc/bcm2836_control.h (+2/-1)
include/hw/intc/i8259.h (+12/-0)
include/hw/ipmi/ipmi.h (+42/-0)
include/hw/isa/i8259_internal.h (+1/-1)
include/hw/isa/isa.h (+4/-5)
include/hw/isa/superio.h (+1/-1)
include/hw/loader.h (+12/-9)
include/hw/mem/nvdimm.h (+7/-0)
include/hw/misc/allwinner-cpucfg.h (+52/-0)
include/hw/misc/allwinner-h3-ccu.h (+66/-0)
include/hw/misc/allwinner-h3-dramc.h (+106/-0)
include/hw/misc/allwinner-h3-sysctrl.h (+67/-0)
include/hw/misc/allwinner-sid.h (+60/-0)
include/hw/misc/aspeed_sdmc.h (+1/-0)
include/hw/misc/bcm2835_mbox.h (+3/-1)
include/hw/misc/bcm2835_mbox_defs.h (+3/-1)
include/hw/misc/bcm2835_property.h (+3/-1)
include/hw/misc/imx_rngc.h (+35/-0)
include/hw/misc/mac_via.h (+3/-0)
include/hw/misc/macio/macio.h (+1/-0)
include/hw/misc/mos6522.h (+0/-1)
include/hw/misc/stm32f4xx_exti.h (+60/-0)
include/hw/misc/stm32f4xx_syscfg.h (+61/-0)
include/hw/net/allwinner-sun8i-emac.h (+99/-0)
include/hw/net/lasi_82596.h (+29/-0)
include/hw/nmi.h (+1/-1)
include/hw/nvram/fw_cfg.h (+6/-0)
include/hw/or-irq.h (+1/-1)
include/hw/pci-host/i440fx.h (+17/-2)
include/hw/pci-host/pnv_phb3.h (+164/-0)
include/hw/pci-host/pnv_phb3_regs.h (+450/-0)
include/hw/pci-host/pnv_phb4.h (+230/-0)
include/hw/pci-host/pnv_phb4_regs.h (+553/-0)
include/hw/pci-host/q35.h (+11/-7)
include/hw/pci/pci.h (+2/-1)
include/hw/pci/pci_bridge.h (+1/-1)
include/hw/pci/pci_host.h (+2/-2)
include/hw/pci/pcie.h (+1/-1)
include/hw/pci/pcie_port.h (+4/-0)
include/hw/ppc/pnv.h (+96/-29)
include/hw/ppc/pnv_core.h (+1/-0)
include/hw/ppc/pnv_homer.h (+3/-0)
include/hw/ppc/pnv_lpc.h (+5/-1)
include/hw/ppc/pnv_occ.h (+6/-2)
include/hw/ppc/pnv_pnor.h (+30/-0)
include/hw/ppc/pnv_psi.h (+4/-1)
include/hw/ppc/pnv_xive.h (+10/-3)
include/hw/ppc/pnv_xscom.h (+63/-15)
include/hw/ppc/ppc.h (+5/-3)
include/hw/ppc/ppc4xx.h (+4/-5)
include/hw/ppc/spapr.h (+44/-8)
include/hw/ppc/spapr_cpu_core.h (+3/-1)
include/hw/ppc/spapr_drc.h (+12/-1)
include/hw/ppc/spapr_irq.h (+8/-2)
include/hw/ppc/spapr_nvdimm.h (+37/-0)
include/hw/ppc/spapr_ovec.h (+3/-5)
include/hw/ppc/spapr_vio.h (+4/-3)
include/hw/ppc/spapr_xive.h (+12/-1)
include/hw/ppc/xics.h (+5/-0)
include/hw/ppc/xics_spapr.h (+2/-1)
include/hw/ppc/xive.h (+64/-13)
include/hw/ppc/xive_regs.h (+25/-0)
include/hw/qdev-core.h (+66/-7)
include/hw/qdev-properties.h (+5/-26)
include/hw/registerfields.h (+30/-0)
include/hw/resettable.h (+247/-0)
include/hw/riscv/sifive_clint.h (+2/-1)
include/hw/riscv/virt.h (+2/-0)
include/hw/rtc/allwinner-rtc.h (+134/-0)
include/hw/rtc/goldfish_rtc.h (+46/-0)
include/hw/s390x/event-facility.h (+1/-1)
include/hw/s390x/sclp.h (+4/-4)
include/hw/sd/allwinner-sdhost.h (+135/-0)
include/hw/sd/aspeed_sdhci.h (+1/-0)
include/hw/semihosting/console.h (+16/-0)
include/hw/semihosting/semihost.h (+4/-0)
include/hw/southbridge/piix.h (+1/-2)
include/hw/ssi/aspeed_smc.h (+1/-0)
include/hw/sysbus.h (+1/-12)
include/hw/usb/imx-usb-phy.h (+53/-0)
include/hw/virtio/vhost-user-blk.h (+2/-2)
include/hw/virtio/vhost-user-fs.h (+2/-1)
include/hw/virtio/vhost-vsock.h (+2/-0)
include/hw/virtio/virtio-blk.h (+2/-0)
include/hw/virtio/virtio-iommu.h (+61/-0)
include/hw/virtio/virtio-scsi.h (+1/-0)
include/hw/virtio/virtio.h (+18/-0)
include/hw/vmstate-if.h (+40/-0)
include/hw/watchdog/wdt_aspeed.h (+1/-0)
include/hw/xen/xen-bus.h (+4/-1)
include/io/task.h (+1/-1)
include/migration/register.h (+4/-2)
include/migration/vmstate.h (+29/-4)
include/monitor/hmp.h (+1/-25)
include/monitor/monitor.h (+7/-2)
include/net/can_emu.h (+1/-1)
include/net/filter.h (+2/-0)
include/net/net.h (+2/-2)
include/qapi/error.h (+3/-3)
include/qapi/qmp/dispatch.h (+5/-4)
include/qapi/qmp/qstring.h (+1/-0)
include/qemu-common.h (+1/-1)
include/qemu/atomic.h (+6/-0)
include/qemu/bitops.h (+70/-20)
include/qemu/compiler.h (+1/-1)
include/qemu/cpuid.h (+3/-0)
include/qemu/cutils.h (+1/-0)
include/qemu/dbus.h (+19/-0)
include/qemu/error-report.h (+2/-1)
include/qemu/hbitmap.h (+27/-70)
include/qemu/id.h (+1/-0)
include/qemu/job.h (+2/-9)
include/qemu/lockable.h (+83/-3)
include/qemu/log.h (+42/-8)
include/qemu/main-loop.h (+8/-0)
include/qemu/module.h (+5/-1)
include/qemu/nvdimm-utils.h (+7/-0)
include/qemu/osdep.h (+1/-14)
include/qemu/progress_meter.h (+58/-0)
include/qemu/queue.h (+76/-5)
include/qemu/rcu_queue.h (+47/-0)
include/qemu/selfmap.h (+44/-0)
include/qemu/seqlock.h (+2/-2)
include/qemu/thread.h (+6/-6)
include/qemu/timer.h (+1/-4)
include/qom/object.h (+160/-23)
include/qom/object_interfaces.h (+7/-0)
include/standard-headers/asm-x86/bootparam.h (+6/-1)
include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h (+14/-1)
include/standard-headers/drm/drm_fourcc.h (+50/-2)
include/standard-headers/linux/ethtool.h (+17/-0)
include/standard-headers/linux/fuse.h (+891/-0)
include/standard-headers/linux/input-event-codes.h (+77/-0)
include/standard-headers/linux/input.h (+1/-0)
include/standard-headers/linux/pci_regs.h (+4/-0)
include/standard-headers/linux/virtio_ring.h (+1/-1)
include/standard-headers/rdma/vmw_pvrdma-abi.h (+5/-0)
include/sysemu/accel.h (+4/-2)
include/sysemu/arch_init.h (+3/-0)
include/sysemu/block-backend.h (+0/-1)
include/sysemu/blockdev.h (+0/-4)
include/sysemu/cpus.h (+0/-2)
include/sysemu/cryptodev.h (+1/-1)
include/sysemu/hostmem.h (+19/-1)
include/sysemu/kvm.h (+5/-3)
include/sysemu/numa.h (+64/-0)
include/sysemu/os-win32.h (+0/-2)
include/sysemu/qtest.h (+4/-0)
include/sysemu/replay.h (+7/-0)
include/sysemu/runstate.h (+1/-0)
include/sysemu/sysemu.h (+4/-9)
include/sysemu/tpm.h (+7/-3)
include/sysemu/whpx.h (+7/-0)
include/tcg/tcg-op-gvec.h (+7/-0)
include/tcg/tcg-op.h (+1/-1)
include/tcg/tcg.h (+3/-32)
include/ui/console.h (+3/-0)
include/ui/gtk.h (+2/-0)
include/ui/qemu-pixman.h (+2/-0)
include/user/syscall-trace.h (+2/-0)
io/channel-websock.c (+24/-12)
job-qmp.c (+11/-2)
job.c (+43/-13)
linux-headers/asm-arm/kvm.h (+2/-1)
linux-headers/asm-arm/unistd-common.h (+2/-0)
linux-headers/asm-arm64/kvm.h (+14/-3)
linux-headers/asm-arm64/unistd.h (+1/-0)
linux-headers/asm-generic/mman-common.h (+2/-0)
linux-headers/asm-generic/unistd.h (+6/-1)
linux-headers/asm-mips/unistd_n32.h (+3/-0)
linux-headers/asm-mips/unistd_n64.h (+3/-0)
linux-headers/asm-mips/unistd_o32.h (+3/-0)
linux-headers/asm-powerpc/kvm.h (+3/-0)
linux-headers/asm-powerpc/unistd_32.h (+2/-0)
linux-headers/asm-powerpc/unistd_64.h (+2/-0)
linux-headers/asm-s390/unistd_32.h (+2/-0)
linux-headers/asm-s390/unistd_64.h (+2/-0)
linux-headers/asm-x86/unistd_32.h (+2/-0)
linux-headers/asm-x86/unistd_64.h (+2/-0)
linux-headers/asm-x86/unistd_x32.h (+2/-0)
linux-headers/linux/kvm.h (+17/-0)
linux-headers/linux/psp-sev.h (+3/-0)
linux-user/Makefile.objs (+17/-2)
linux-user/aarch64/cpu_loop.c (+1/-0)
linux-user/aarch64/syscall_nr.h (+29/-5)
linux-user/alpha/Makefile.objs (+5/-0)
linux-user/alpha/syscall.tbl (+479/-0)
linux-user/alpha/syscallhdr.sh (+32/-0)
linux-user/arm/Makefile.objs (+8/-0)
linux-user/arm/cpu_loop.c (+4/-2)
linux-user/arm/semihost.c (+27/-0)
linux-user/arm/signal.c (+2/-2)
linux-user/arm/syscall.tbl (+453/-0)
linux-user/arm/syscallhdr.sh (+31/-0)
linux-user/elfload.c (+84/-31)
linux-user/exit.c (+2/-2)
linux-user/fd-trans.c (+35/-20)
linux-user/flatload.c (+1/-1)
linux-user/hppa/Makefile.objs (+5/-0)
linux-user/hppa/syscall.tbl (+437/-0)
linux-user/hppa/syscallhdr.sh (+32/-0)
linux-user/hppa/target_signal.h (+1/-0)
linux-user/i386/Makefile.objs (+5/-0)
linux-user/i386/cpu_loop.c (+141/-60)
linux-user/i386/syscall_32.tbl (+444/-0)
linux-user/i386/syscallhdr.sh (+28/-0)
linux-user/i386/target_cpu.h (+2/-2)
linux-user/ioctls.h (+62/-0)
linux-user/m68k/Makefile.objs (+5/-0)
linux-user/m68k/syscall.tbl (+439/-0)
linux-user/m68k/syscallhdr.sh (+32/-0)
linux-user/main.c (+25/-18)
linux-user/microblaze/Makefile.objs (+5/-0)
linux-user/microblaze/syscall.tbl (+445/-0)
linux-user/microblaze/syscallhdr.sh (+32/-0)
linux-user/mips/Makefile.objs (+5/-0)
linux-user/mips/cpu_loop.c (+9/-366)
linux-user/mips/syscall-args-o32.c.inc (+436/-0)
linux-user/mips/syscall_o32.tbl (+427/-0)
linux-user/mips/syscallhdr.sh (+36/-0)
linux-user/mips64/Makefile.objs (+12/-0)
linux-user/mips64/syscall_n32.tbl (+378/-0)
linux-user/mips64/syscall_n64.tbl (+354/-0)
linux-user/mips64/syscallhdr.sh (+33/-0)
linux-user/mmap.c (+14/-46)
linux-user/nios2/syscall_nr.h (+320/-330)
linux-user/openrisc/syscall_nr.h (+62/-247)
linux-user/ppc/Makefile.objs (+6/-0)
linux-user/ppc/cpu_loop.c (+5/-0)
linux-user/ppc/signal.c (+32/-45)
linux-user/ppc/syscall.tbl (+521/-0)
linux-user/ppc/syscallhdr.sh (+34/-0)
linux-user/qemu.h (+1/-2)
linux-user/riscv/syscall32_nr.h (+295/-0)
linux-user/riscv/syscall64_nr.h (+301/-0)
linux-user/riscv/syscall_nr.h (+2/-292)
linux-user/s390x/Makefile.objs (+5/-0)
linux-user/s390x/syscall.tbl (+442/-0)
linux-user/s390x/syscallhdr.sh (+32/-0)
linux-user/sh4/Makefile.objs (+5/-0)
linux-user/sh4/syscall.tbl (+442/-0)
linux-user/sh4/syscallhdr.sh (+32/-0)
linux-user/signal.c (+104/-34)
linux-user/sparc/Makefile.objs (+5/-0)
linux-user/sparc/syscall.tbl (+485/-0)
linux-user/sparc/syscallhdr.sh (+32/-0)
linux-user/sparc64/Makefile.objs (+5/-0)
linux-user/sparc64/syscall.tbl (+485/-0)
linux-user/sparc64/syscallhdr.sh (+32/-0)
linux-user/strace.c (+252/-237)
linux-user/strace.list (+26/-26)
linux-user/syscall.c (+445/-105)
linux-user/syscall_defs.h (+140/-3)
linux-user/syscall_types.h (+103/-0)
linux-user/trace-events (+9/-0)
linux-user/vm86.c (+2/-1)
linux-user/x86_64/Makefile.objs (+5/-0)
linux-user/x86_64/syscall_64.tbl (+404/-0)
linux-user/x86_64/syscallhdr.sh (+28/-0)
linux-user/xtensa/Makefile.objs (+5/-0)
linux-user/xtensa/syscall.tbl (+410/-0)
linux-user/xtensa/syscallhdr.sh (+32/-0)
memory.c (+39/-37)
migration/Makefile.objs (+3/-0)
migration/block.c (+20/-19)
migration/colo.c (+137/-127)
migration/migration.c (+212/-68)
migration/migration.h (+6/-1)
migration/multifd-zlib.c (+325/-0)
migration/multifd-zstd.c (+339/-0)
migration/multifd.c (+1074/-0)
migration/multifd.h (+170/-0)
migration/qemu-file.c (+24/-14)
migration/ram.c (+213/-1049)
migration/ram.h (+1/-7)
migration/rdma.c (+7/-4)
migration/savevm.c (+58/-50)
migration/savevm.h (+0/-1)
migration/trace-events (+7/-2)
migration/vmstate-types.c (+74/-0)
migration/vmstate.c (+0/-1)
monitor/Makefile.objs (+4/-1)
monitor/hmp-cmds.c (+91/-825)
monitor/hmp.c (+11/-3)
monitor/misc.c (+39/-135)
monitor/monitor-internal.h (+5/-1)
monitor/monitor.c (+68/-0)
monitor/qmp-cmds-control.c (+169/-0)
monitor/qmp-cmds.c (+3/-16)
monitor/qmp.c (+14/-6)
nbd/server.c (+129/-124)
net/can/can_socketcan.c (+4/-5)
net/colo-compare.c (+90/-5)
net/filter-buffer.c (+1/-1)
net/filter-mirror.c (+1/-1)
net/filter.c (+91/-1)
net/hub.c (+3/-26)
net/hub.h (+0/-2)
net/net.c (+19/-37)
net/queue.c (+1/-1)
net/slirp.c (+12/-32)
net/vhost-user.c (+7/-2)
os-posix.c (+13/-28)
os-win32.c (+0/-22)
pc-bios/README (+1/-4)
pc-bios/optionrom/pvh_main.c (+1/-1)
pc-bios/s390-ccw/bootmap.h (+1/-1)
pc-bios/s390-ccw/jump2ipl.c (+8/-5)
pc-bios/s390-ccw/main.c (+7/-1)
pc-bios/s390-ccw/netmain.c (+1/-0)
pc-bios/s390-ccw/s390-arch.h (+8/-2)
pc-bios/s390-ccw/s390-ccw.h (+1/-0)
pc-bios/s390-ccw/sclp.h (+1/-1)
plugins/api.c (+1/-0)
plugins/core.c (+4/-4)
plugins/loader.c (+8/-8)
python/qemu/__init__.py (+0/-24)
python/qemu/accel.py (+78/-0)
python/qemu/machine.py (+56/-26)
python/qemu/qmp.py (+76/-28)
qapi/Makefile.objs (+9/-3)
qapi/audio.json (+15/-1)
qapi/block-core.json (+983/-956)
qapi/block.json (+319/-207)
qapi/char.json (+7/-4)
qapi/control.json (+258/-0)
qapi/dump.json (+2/-2)
qapi/introspect.json (+20/-18)
qapi/job.json (+16/-16)
qapi/machine-target.json (+9/-9)
qapi/machine.json (+203/-25)
qapi/migration.json (+218/-118)
qapi/misc-target.json (+4/-4)
qapi/misc.json (+67/-270)
qapi/net.json (+9/-25)
qapi/pragma.json (+24/-0)
qapi/qapi-schema.json (+2/-24)
qapi/qdev.json (+5/-5)
qapi/qmp-dispatch.c (+68/-68)
qapi/qmp-registry.c (+3/-3)
qapi/qom.json (+17/-6)
qapi/rocker.json (+6/-6)
qapi/run-state.json (+39/-19)
qapi/sockets.json (+4/-4)
qapi/tpm.json (+5/-5)
qapi/trace.json (+8/-7)
qapi/transaction.json (+3/-3)
qapi/ui.json (+63/-57)
qdev-monitor.c (+33/-20)
qemu-bridge-helper.c (+3/-3)
qemu-img-cmds.hx (+47/-56)
qemu-img.c (+55/-18)
qemu-io.c (+21/-4)
qemu-nbd.c (+6/-139)
qemu-options.hx (+3867/-3782)
qemu-storage-daemon.c (+340/-0)
qemu.nsi (+19/-3)
qga/Makefile.objs (+1/-0)
qga/channel-win32.c (+4/-3)
qga/commands-common.h (+21/-0)
qga/commands-posix.c (+27/-26)
qga/commands-win32.c (+14/-25)
qga/commands.c (+47/-9)
qga/installer/qemu-ga.wxs (+1/-1)
qga/main.c (+7/-5)
qga/qapi-schema.json (+86/-76)
qga/vss-win32/Makefile.objs (+2/-2)
qga/vss-win32/install.cpp (+11/-0)
qobject/json-streamer.c (+1/-1)
qobject/qstring.c (+22/-5)
qom/Makefile.objs (+1/-0)
qom/object.c (+435/-88)
qom/object_interfaces.c (+28/-11)
qom/qom-hmp-cmds.c (+2/-2)
qom/qom-qmp-cmds.c (+38/-67)
qtest.c (+60/-31)
replay/Makefile.objs (+2/-1)
replay/replay-internal.h (+2/-0)
replay/replay-random.c (+44/-0)
replay/replay.c (+1/-1)
roms/Makefile (+7/-0)
roms/SLOF/VERSION (+1/-1)
roms/SLOF/board-qemu/Makefile (+1/-1)
roms/SLOF/board-qemu/include/version.h (+19/-0)
roms/SLOF/board-qemu/llfw/stage2.c (+1/-1)
roms/SLOF/board-qemu/slof/Makefile (+11/-3)
roms/SLOF/board-qemu/slof/OF.fs (+6/-0)
roms/SLOF/board-qemu/slof/fdt.fs (+145/-46)
roms/SLOF/board-qemu/slof/pci-phb.fs (+39/-56)
roms/SLOF/board-qemu/slof/rtas.fs (+8/-1)
roms/SLOF/board-qemu/slof/tree.fs (+3/-0)
roms/SLOF/board-qemu/slof/vio-vtpm-cdriver.fs (+103/-0)
roms/SLOF/board-qemu/slof/virtio-serial.fs (+11/-9)
roms/SLOF/board-qemu/slof/vtpm-sml.fs (+81/-0)
roms/SLOF/include/helpers.h (+4/-0)
roms/SLOF/lib/Makefile (+1/-1)
roms/SLOF/lib/libelf/elf.c (+8/-0)
roms/SLOF/lib/libhvcall/hvcall.S (+0/-9)
roms/SLOF/lib/libtpm/Makefile (+50/-0)
roms/SLOF/lib/libtpm/Readme (+57/-0)
roms/SLOF/lib/libtpm/sha256.c (+214/-0)
roms/SLOF/lib/libtpm/sha256.h (+20/-0)
roms/SLOF/lib/libtpm/tcgbios.c (+1361/-0)
roms/SLOF/lib/libtpm/tcgbios.h (+36/-0)
roms/SLOF/lib/libtpm/tcgbios_int.h (+311/-0)
roms/SLOF/lib/libtpm/tpm.code (+171/-0)
roms/SLOF/lib/libtpm/tpm.in (+30/-0)
roms/SLOF/lib/libtpm/tpm_drivers.c (+437/-0)
roms/SLOF/lib/libtpm/tpm_drivers.h (+82/-0)
roms/SLOF/lib/libvirtio/virtio-9p.c (+18/-23)
roms/SLOF/lib/libvirtio/virtio-blk.c (+25/-31)
roms/SLOF/lib/libvirtio/virtio-internal.h (+6/-6)
roms/SLOF/lib/libvirtio/virtio-net.c (+28/-25)
roms/SLOF/lib/libvirtio/virtio-net.h (+0/-2)
roms/SLOF/lib/libvirtio/virtio-scsi.c (+29/-43)
roms/SLOF/lib/libvirtio/virtio-serial.c (+46/-47)
roms/SLOF/lib/libvirtio/virtio.c (+138/-76)
roms/SLOF/lib/libvirtio/virtio.code (+0/-8)
roms/SLOF/lib/libvirtio/virtio.h (+17/-14)
roms/SLOF/lib/libvirtio/virtio.in (+0/-1)
roms/SLOF/slof/OF.h (+20/-0)
roms/SLOF/slof/allocator.c (+6/-6)
roms/SLOF/slof/fs/client.fs (+8/-0)
roms/SLOF/slof/fs/dma-instance-function.fs (+28/-0)
roms/SLOF/slof/fs/packages/disk-label.fs (+62/-34)
roms/SLOF/slof/fs/packages/ext2-files.fs (+111/-18)
roms/SLOF/slof/fs/start-up.fs (+12/-0)
roms/SLOF/slof/helpers.c (+17/-0)
roms/SLOF/tools/sloffs.c (+31/-5)
roms/config.seabios-128k (+1/-0)
roms/edk2-funcs.sh (+3/-0)
roms/opensbi/Makefile (+11/-4)
roms/opensbi/ThirdPartyNotices.md (+0/-1)
roms/opensbi/docs/external/coreboot.md (+11/-3)
roms/opensbi/docs/firmware/fw_jump.md (+5/-6)
roms/opensbi/docs/firmware/fw_payload.md (+5/-5)
roms/opensbi/docs/firmware/payload_linux.md (+0/-1)
roms/opensbi/docs/library_usage.md (+21/-0)
roms/opensbi/docs/platform/andes-ae350.md (+10/-8)
roms/opensbi/docs/platform/ariane-fpga.md (+12/-11)
roms/opensbi/docs/platform/platform.md (+8/-8)
roms/opensbi/docs/platform/qemu_virt.md (+0/-1)
roms/opensbi/docs/platform/sifive_fu540.md (+46/-60)
roms/opensbi/docs/platform/spike.md (+89/-0)
roms/opensbi/docs/platform/thead-c910.md (+34/-0)
roms/opensbi/firmware/fw_base.S (+26/-11)
roms/opensbi/firmware/fw_dynamic.S (+53/-7)
roms/opensbi/firmware/fw_jump.S (+24/-7)
roms/opensbi/firmware/fw_payload.S (+25/-8)
roms/opensbi/firmware/payloads/test_head.S (+3/-3)
roms/opensbi/include/sbi/fw_dynamic.h (+22/-4)
roms/opensbi/include/sbi/riscv_asm.h (+14/-10)
roms/opensbi/include/sbi/riscv_encoding.h (+117/-165)
roms/opensbi/include/sbi/sbi_bitops.h (+74/-0)
roms/opensbi/include/sbi/sbi_bits.h (+0/-13)
roms/opensbi/include/sbi/sbi_ecall.h (+33/-0)
roms/opensbi/include/sbi/sbi_ecall_interface.h (+38/-22)
roms/opensbi/include/sbi/sbi_hart.h (+1/-0)
roms/opensbi/include/sbi/sbi_hfence.h (+36/-0)
roms/opensbi/include/sbi/sbi_illegal_insn.h (+1/-1)
roms/opensbi/include/sbi/sbi_init.h (+4/-0)
roms/opensbi/include/sbi/sbi_ipi.h (+37/-10)
roms/opensbi/include/sbi/sbi_list.h (+152/-0)
roms/opensbi/include/sbi/sbi_misaligned_ldst.h (+2/-0)
roms/opensbi/include/sbi/sbi_platform.h (+132/-28)
roms/opensbi/include/sbi/sbi_scratch.h (+1/-2)
roms/opensbi/include/sbi/sbi_system.h (+6/-4)
roms/opensbi/include/sbi/sbi_timer.h (+2/-2)
roms/opensbi/include/sbi/sbi_tlb.h (+7/-7)
roms/opensbi/include/sbi/sbi_trap.h (+19/-3)
roms/opensbi/include/sbi/sbi_types.h (+39/-0)
roms/opensbi/include/sbi/sbi_unpriv.h (+13/-18)
roms/opensbi/include/sbi/sbi_version.h (+1/-1)
roms/opensbi/include/sbi_utils/sys/clint.h (+2/-1)
roms/opensbi/include/sbi_utils/sys/htif.h (+19/-0)
roms/opensbi/lib/sbi/objects.mk (+6/-1)
roms/opensbi/lib/sbi/riscv_asm.c (+33/-0)
roms/opensbi/lib/sbi/riscv_atomic.c (+1/-1)
roms/opensbi/lib/sbi/sbi_ecall.c (+73/-166)
roms/opensbi/lib/sbi/sbi_ecall_base.c (+80/-0)
roms/opensbi/lib/sbi/sbi_ecall_legacy.c (+119/-0)
roms/opensbi/lib/sbi/sbi_ecall_replace.c (+146/-0)
roms/opensbi/lib/sbi/sbi_ecall_vendor.c (+40/-0)
roms/opensbi/lib/sbi/sbi_hart.c (+30/-13)
roms/opensbi/lib/sbi/sbi_hfence.S (+75/-0)
roms/opensbi/lib/sbi/sbi_illegal_insn.c (+20/-16)
roms/opensbi/lib/sbi/sbi_init.c (+98/-18)
roms/opensbi/lib/sbi/sbi_ipi.c (+141/-50)
roms/opensbi/lib/sbi/sbi_misaligned_ldst.c (+69/-39)
roms/opensbi/lib/sbi/sbi_scratch.c (+19/-2)
roms/opensbi/lib/sbi/sbi_system.c (+31/-11)
roms/opensbi/lib/sbi/sbi_timer.c (+10/-5)
roms/opensbi/lib/sbi/sbi_tlb.c (+148/-27)
roms/opensbi/lib/sbi/sbi_trap.c (+61/-39)
roms/opensbi/lib/sbi/sbi_unpriv.c (+66/-43)
roms/opensbi/lib/utils/irqchip/plic.c (+4/-4)
roms/opensbi/lib/utils/sys/clint.c (+50/-38)
roms/opensbi/lib/utils/sys/htif.c (+149/-0)
roms/opensbi/lib/utils/sys/objects.mk (+1/-0)
roms/opensbi/platform/ariane-fpga/config.mk (+0/-5)
roms/opensbi/platform/ariane-fpga/platform.c (+1/-1)
roms/opensbi/platform/kendryte/k210/platform.c (+1/-1)
roms/opensbi/platform/qemu/virt/config.mk (+4/-9)
roms/opensbi/platform/qemu/virt/platform.c (+2/-1)
roms/opensbi/platform/sifive/fu540/config.mk (+18/-2)
roms/opensbi/platform/sifive/fu540/platform.c (+11/-1)
roms/opensbi/platform/spike/config.mk (+7/-11)
roms/opensbi/platform/spike/objects.mk (+1/-4)
roms/opensbi/platform/spike/platform.c (+36/-79)
roms/opensbi/platform/template/platform.c (+3/-4)
roms/opensbi/platform/thead/c910/config.mk (+14/-0)
roms/opensbi/platform/thead/c910/objects.mk (+5/-0)
roms/opensbi/platform/thead/c910/platform.c (+158/-0)
roms/opensbi/platform/thead/c910/platform.h (+50/-0)
roms/opensbi/scripts/create-binary-archive.sh (+2/-2)
roms/seabios-hppa/Makefile.parisc (+2/-2)
roms/seabios-hppa/src/kbd.c (+5/-0)
roms/seabios-hppa/src/output.c (+6/-15)
roms/seabios-hppa/src/parisc/b160l.h (+3/-3)
roms/seabios-hppa/src/parisc/head.S (+6/-2)
roms/seabios-hppa/src/parisc/hppa.h (+5/-2)
roms/seabios-hppa/src/parisc/hppa_hardware.h (+2/-0)
roms/seabios-hppa/src/parisc/lasips2.c (+66/-0)
roms/seabios-hppa/src/parisc/lasips2.h (+17/-0)
roms/seabios-hppa/src/parisc/pafirmware.lds.S (+21/-0)
roms/seabios-hppa/src/parisc/parisc.c (+319/-208)
roms/seabios-hppa/src/parisc/sti.c (+167/-34)
roms/seabios-hppa/src/parisc/sticore.h (+231/-274)
roms/seabios-hppa/src/parisc/stirom.c (+591/-0)
roms/seabios/.version (+1/-1)
roms/seabios/docs/Releases.md (+11/-0)
rules.mak (+41/-2)
scripts/analyse-9p-simpletrace.py (+1/-2)
scripts/analyse-locks-simpletrace.py (+1/-2)
scripts/analyze-migration.py (+21/-18)
scripts/checkpatch.pl (+37/-1)
scripts/coccinelle/cpu-reset.cocci (+47/-0)
scripts/coccinelle/error-use-after-free.cocci (+52/-0)
scripts/coccinelle/exec_rw_const.cocci (+111/-0)
scripts/coccinelle/memory-region-housekeeping.cocci (+159/-0)
scripts/coverity-scan/coverity-scan.docker (+131/-0)
scripts/coverity-scan/run-coverity-scan (+401/-0)
scripts/decodetree.py (+3/-3)
scripts/device-crash-test (+1/-2)
scripts/dump-guest-memory.py (+0/-1)
scripts/gensyscalls.sh (+102/-0)
scripts/get_maintainer.pl (+2/-1)
scripts/git-submodule.sh (+8/-4)
scripts/git.orderfile (+7/-0)
scripts/hxtool (+1/-46)
scripts/hxtool-conv.pl (+137/-0)
scripts/kernel-doc (+2250/-0)
scripts/kvm/kvm_flightrecorder (+1/-2)
scripts/kvm/vmxcap (+0/-1)
scripts/minikconf.py (+2/-2)
scripts/modules/module_block.py (+0/-1)
scripts/qapi-gen.py (+1/-2)
scripts/qapi/commands.py (+18/-11)
scripts/qapi/common.py (+1/-5)
scripts/qapi/doc.py (+8/-9)
scripts/qapi/error.py (+2/-2)
scripts/qapi/events.py (+4/-4)
scripts/qapi/expr.py (+8/-9)
scripts/qapi/gen.py (+32/-28)
scripts/qapi/introspect.py (+56/-56)
scripts/qapi/parser.py (+7/-13)
scripts/qapi/schema.py (+331/-271)
scripts/qapi/source.py (+2/-2)
scripts/qapi/types.py (+9/-8)
scripts/qapi/visit.py (+10/-10)
scripts/qemu-trace-stap (+4/-4)
scripts/qmp/qemu-ga-client (+1/-2)
scripts/qmp/qmp (+1/-2)
scripts/qmp/qmp-shell (+1/-2)
scripts/qmp/qom-fuse (+1/-1)
scripts/qmp/qom-get (+0/-1)
scripts/qmp/qom-list (+0/-1)
scripts/qmp/qom-set (+0/-1)
scripts/qmp/qom-tree (+0/-1)
scripts/render_block_graph.py (+1/-1)
scripts/replay-dump.py (+1/-2)
scripts/signrom.py (+4/-9)
scripts/simplebench/bench-example.py (+80/-0)
scripts/simplebench/bench_block_job.py (+119/-0)
scripts/simplebench/simplebench.py (+128/-0)
scripts/simpletrace.py (+1/-2)
scripts/texi2pod.pl (+18/-18)
scripts/tracetool.py (+1/-1)
scripts/tracetool/__init__.py (+0/-1)
scripts/tracetool/backend/__init__.py (+0/-1)
scripts/tracetool/backend/dtrace.py (+0/-1)
scripts/tracetool/backend/ftrace.py (+0/-1)
scripts/tracetool/backend/log.py (+0/-1)
scripts/tracetool/backend/simple.py (+0/-1)
scripts/tracetool/backend/syslog.py (+0/-1)
scripts/tracetool/backend/ust.py (+0/-1)
scripts/tracetool/format/__init__.py (+0/-1)
scripts/tracetool/format/c.py (+0/-1)
scripts/tracetool/format/d.py (+0/-1)
scripts/tracetool/format/h.py (+0/-1)
scripts/tracetool/format/log_stap.py (+0/-1)
scripts/tracetool/format/simpletrace_stap.py (+0/-1)
scripts/tracetool/format/stap.py (+0/-1)
scripts/tracetool/format/tcg_h.py (+0/-1)
scripts/tracetool/format/tcg_helper_c.py (+0/-1)
scripts/tracetool/format/tcg_helper_h.py (+0/-1)
scripts/tracetool/format/tcg_helper_wrapper_h.py (+0/-1)
scripts/tracetool/format/ust_events_c.py (+0/-1)
scripts/tracetool/format/ust_events_h.py (+0/-1)
scripts/tracetool/transform.py (+0/-1)
scripts/tracetool/vcpu.py (+0/-1)
scripts/update-linux-headers.sh (+1/-0)
scripts/update-mips-syscall-args.sh (+57/-0)
scripts/update-syscalltbl.sh (+49/-0)
scripts/vmstate-static-checker.py (+1/-2)
scsi/qemu-pr-helper.c (+16/-13)
slirp/.gitlab-ci.yml (+5/-2)
slirp/.gitpublish (+3/-0)
slirp/CHANGELOG.md (+88/-0)
slirp/Makefile (+5/-3)
slirp/build-aux/git-version-gen (+158/-0)
slirp/build-aux/meson-dist (+16/-0)
slirp/meson.build (+15/-8)
slirp/src/arp_table.c (+1/-1)
slirp/src/bootp.c (+8/-9)
slirp/src/bootp.h (+1/-1)
slirp/src/dhcpv6.c (+7/-8)
slirp/src/dnssearch.c (+1/-6)
slirp/src/if.h (+6/-2)
slirp/src/ip6_icmp.c (+3/-3)
slirp/src/ip6_input.c (+1/-1)
slirp/src/ip_icmp.c (+13/-1)
slirp/src/ip_input.c (+10/-11)
slirp/src/ip_output.c (+2/-2)
slirp/src/libslirp-version.h.in (+1/-0)
slirp/src/libslirp.h (+52/-0)
slirp/src/libslirp.map (+9/-0)
slirp/src/mbuf.c (+4/-4)
slirp/src/misc.c (+100/-8)
slirp/src/misc.h (+9/-0)
slirp/src/ncsi.c (+1/-1)
slirp/src/sbuf.c (+11/-29)
slirp/src/sbuf.h (+5/-5)
slirp/src/slirp.c (+113/-40)
slirp/src/slirp.h (+11/-1)
slirp/src/socket.c (+59/-37)
slirp/src/socket.h (+1/-1)
slirp/src/state.c (+4/-6)
slirp/src/tcp.h (+3/-15)
slirp/src/tcp_input.c (+6/-7)
slirp/src/tcp_subr.c (+67/-62)
slirp/src/tftp.c (+10/-10)
slirp/src/udp.c (+8/-1)
slirp/src/util.c (+62/-0)
slirp/src/util.h (+9/-0)
slirp/src/version.c (+1/-4)
slirp/src/vmstate.c (+0/-1)
softmmu/Makefile.objs (+3/-0)
softmmu/main.c (+53/-0)
softmmu/vl.c (+342/-336)
storage-daemon/Makefile.objs (+1/-0)
storage-daemon/qapi/Makefile.objs (+1/-0)
storage-daemon/qapi/qapi-schema.json (+26/-0)
stubs/Makefile.objs (+3/-1)
stubs/arch_type.c (+4/-0)
stubs/io_uring.c (+32/-0)
stubs/monitor-core.c (+21/-0)
stubs/monitor.c (+3/-14)
stubs/replay.c (+9/-0)
stubs/semihost.c (+4/-0)
stubs/vmstate.c (+3/-3)
target/alpha/cpu-qom.h (+1/-1)
target/alpha/cpu.h (+1/-3)
target/alpha/gdbstub.c (+1/-1)
target/alpha/translate.c (+1/-1)
target/arm/arch_dump.c (+127/-6)
target/arm/arm-powerctl.c (+6/-0)
target/arm/arm-semi.c (+13/-4)
target/arm/cpu-param.h (+1/-1)
target/arm/cpu-qom.h (+2/-1)
target/arm/cpu.c (+350/-189)
target/arm/cpu.h (+515/-316)
target/arm/cpu64.c (+50/-24)
target/arm/debug_helper.c (+41/-15)
target/arm/gdbstub.c (+162/-19)
target/arm/gdbstub64.c (+1/-1)
target/arm/helper-a64.c (+119/-5)
target/arm/helper-a64.h (+1/-0)
target/arm/helper-sve.h (+2/-0)
target/arm/helper.c (+2054/-718)
target/arm/helper.h (+14/-12)
target/arm/internals.h (+196/-13)
target/arm/kvm.c (+133/-13)
target/arm/kvm32.c (+38/-10)
target/arm/kvm64.c (+64/-33)
target/arm/kvm_arm.h (+79/-19)
target/arm/m_helper.c (+7/-5)
target/arm/machine.c (+10/-2)
target/arm/monitor.c (+12/-12)
target/arm/neon_helper.c (+0/-117)
target/arm/op_helper.c (+40/-96)
target/arm/pauth_helper.c (+9/-12)
target/arm/sve_helper.c (+1/-0)
target/arm/tlb_helper.c (+1/-1)
target/arm/translate-a64.c (+238/-79)
target/arm/translate-sve.c (+3/-3)
target/arm/translate-vfp.inc.c (+303/-180)
target/arm/translate.c (+416/-214)
target/arm/translate.h (+11/-1)
target/arm/vec_helper.c (+211/-0)
target/arm/vfp-uncond.decode (+8/-4)
target/arm/vfp.decode (+72/-99)
target/arm/vfp_helper.c (+30/-1)
target/cris/cpu-qom.h (+1/-1)
target/cris/cpu.c (+12/-5)
target/cris/cpu.h (+3/-4)
target/cris/gdbstub.c (+2/-2)
target/cris/translate.c (+3/-3)
target/hppa/cpu-qom.h (+1/-1)
target/hppa/cpu.h (+1/-1)
target/hppa/gdbstub.c (+1/-1)
target/hppa/helper.h (+2/-0)
target/hppa/op_helper.c (+9/-0)
target/hppa/translate.c (+15/-2)
target/i386/cpu-qom.h (+1/-1)
target/i386/cpu.c (+379/-189)
target/i386/cpu.h (+28/-11)
target/i386/fpu_helper.c (+5/-1)
target/i386/gdbstub.c (+14/-19)
target/i386/hax-all.c (+3/-3)
target/i386/hax-posix.c (+2/-31)
target/i386/hax-windows.c (+2/-31)
target/i386/hvf/vmx.h (+6/-4)
target/i386/hvf/x86_emu.c (+1/-3)
target/i386/hvf/x86_mmu.c (+6/-6)
target/i386/kvm.c (+89/-195)
target/i386/kvm_i386.h (+1/-20)
target/i386/machine.c (+5/-5)
target/i386/mem_helper.c (+1/-1)
target/i386/misc_helper.c (+4/-0)
target/i386/monitor.c (+0/-1)
target/i386/seg_helper.c (+31/-31)
target/i386/sev.c (+9/-97)
target/i386/translate.c (+17/-4)
target/i386/whp-dispatch.h (+13/-0)
target/i386/whpx-all.c (+179/-72)
target/lm32/cpu-qom.h (+1/-1)
target/lm32/cpu.c (+4/-5)
target/lm32/cpu.h (+1/-1)
target/lm32/gdbstub.c (+1/-1)
target/lm32/translate.c (+3/-3)
target/m68k/cpu-qom.h (+1/-1)
target/m68k/cpu.c (+26/-11)
target/m68k/cpu.h (+5/-4)
target/m68k/gdbstub.c (+1/-1)
target/m68k/helper.c (+23/-22)
target/m68k/op_helper.c (+47/-30)
target/m68k/translate.c (+28/-16)
target/microblaze/cpu-qom.h (+1/-1)
target/microblaze/cpu.c (+5/-6)
target/microblaze/cpu.h (+1/-4)
target/microblaze/gdbstub.c (+1/-1)
target/microblaze/translate.c (+3/-3)
target/mips/Makefile.objs (+3/-2)
target/mips/cp0_helper.c (+1678/-0)
target/mips/cpu-qom.h (+1/-1)
target/mips/cpu.c (+4/-5)
target/mips/cpu.h (+2/-6)
target/mips/fpu_helper.c (+1911/-0)
target/mips/gdbstub.c (+1/-1)
target/mips/helper.c (+16/-4)
target/mips/helper.h (+5/-0)
target/mips/internal.h (+2/-1)
target/mips/kvm.c (+1/-1)
target/mips/machine.c (+3/-3)
target/mips/mips-semi.c (+7/-8)
target/mips/op_helper.c (+512/-3982)
target/mips/translate.c (+117/-8)
target/moxie/cpu.c (+4/-4)
target/moxie/cpu.h (+1/-1)
target/moxie/translate.c (+1/-1)
target/nios2/cpu.c (+6/-7)
target/nios2/cpu.h (+1/-3)
target/nios2/translate.c (+3/-3)
target/openrisc/cpu.c (+4/-5)
target/openrisc/cpu.h (+2/-2)
target/openrisc/fpu_helper.c (+1/-1)
target/openrisc/gdbstub.c (+1/-1)
target/openrisc/translate.c (+1/-1)
target/ppc/compat.c (+15/-6)
target/ppc/cpu-models.c (+3/-0)
target/ppc/cpu-models.h (+3/-0)
target/ppc/cpu-qom.h (+2/-1)
target/ppc/cpu.h (+78/-120)
target/ppc/excp_helper.c (+121/-39)
target/ppc/fpu_helper.c (+2/-2)
target/ppc/gdbstub.c (+26/-22)
target/ppc/helper.h (+9/-1)
target/ppc/helper_regs.h (+5/-0)
target/ppc/kvm.c (+67/-18)
target/ppc/kvm_ppc.h (+25/-6)
target/ppc/mem_helper.c (+165/-45)
target/ppc/misc_helper.c (+63/-0)
target/ppc/mmu-hash64.c (+179/-213)
target/ppc/mmu-radix64.c (+6/-0)
target/ppc/timebase_helper.c (+46/-14)
target/ppc/trace-events (+1/-0)
target/ppc/translate.c (+71/-31)
target/ppc/translate/fp-impl.inc.c (+3/-3)
target/ppc/translate_init.inc.c (+370/-106)
target/riscv/cpu.c (+59/-10)
target/riscv/cpu.h (+60/-4)
target/riscv/cpu_bits.h (+76/-35)
target/riscv/cpu_helper.c (+450/-45)
target/riscv/csr.c (+439/-19)
target/riscv/gdbstub.c (+25/-22)
target/riscv/insn32.decode (+13/-9)
target/riscv/insn_trans/trans_privileged.inc.c (+40/-5)
target/riscv/insn_trans/trans_rvd.inc.c (+0/-1)
target/riscv/insn_trans/trans_rvf.inc.c (+0/-1)
target/riscv/instmap.h (+4/-4)
target/riscv/op_helper.c (+61/-14)
target/riscv/translate.c (+57/-20)
target/rx/Makefile.objs (+11/-0)
target/rx/cpu-param.h (+30/-0)
target/rx/cpu-qom.h (+53/-0)
target/rx/cpu.c (+225/-0)
target/rx/cpu.h (+180/-0)
target/rx/disas.c (+1446/-0)
target/rx/gdbstub.c (+112/-0)
target/rx/helper.c (+149/-0)
target/rx/helper.h (+31/-0)
target/rx/insns.decode (+621/-0)
target/rx/op_helper.c (+470/-0)
target/rx/translate.c (+2440/-0)
target/s390x/cpu-qom.h (+8/-3)
target/s390x/cpu.c (+69/-72)
target/s390x/cpu.h (+15/-13)
target/s390x/cpu_models.c (+60/-42)
target/s390x/diag.c (+33/-23)
target/s390x/excp_helper.c (+4/-5)
target/s390x/gdbstub.c (+15/-15)
target/s390x/helper.c (+4/-4)
target/s390x/helper.h (+1/-4)
target/s390x/insn-data.def (+4/-4)
target/s390x/internal.h (+1/-1)
target/s390x/ioinst.c (+1/-1)
target/s390x/kvm-stub.c (+9/-1)
target/s390x/kvm.c (+62/-20)
target/s390x/kvm_s390x.h (+3/-1)
target/s390x/mem_helper.c (+6/-43)
target/s390x/misc_helper.c (+10/-0)
target/s390x/mmu_helper.c (+1/-1)
target/s390x/sigp.c (+4/-4)
target/s390x/translate.c (+498/-507)
target/s390x/translate_vx.inc.c (+324/-325)
target/sh4/cpu-qom.h (+1/-1)
target/sh4/cpu.c (+4/-5)
target/sh4/cpu.h (+1/-3)
target/sh4/gdbstub.c (+3/-5)
target/sh4/translate.c (+1/-1)
target/sparc/cpu-qom.h (+1/-1)
target/sparc/cpu.c (+5/-6)
target/sparc/cpu.h (+1/-1)
target/sparc/gdbstub.c (+1/-1)
target/sparc/ldst_helper.c (+1/-1)
target/sparc/translate.c (+1/-1)
target/tilegx/cpu.c (+4/-4)
target/tilegx/cpu.h (+1/-1)
target/tilegx/translate.c (+1/-7)
target/tricore/cpu-qom.h (+1/-1)
target/tricore/cpu.c (+4/-4)
target/tricore/translate.c (+1/-1)
target/unicore32/cpu.h (+0/-2)
target/unicore32/translate.c (+3/-3)
target/xtensa/cpu-qom.h (+1/-1)
target/xtensa/cpu.c (+4/-5)
target/xtensa/cpu.h (+11/-8)
target/xtensa/gdbstub.c (+3/-5)
target/xtensa/helper.c (+1/-0)
target/xtensa/import_core.sh (+4/-2)
target/xtensa/mmu_helper.c (+3/-2)
target/xtensa/overlay_tool.h (+14/-1)
target/xtensa/translate.c (+6/-14)
tcg/aarch64/tcg-target.inc.c (+2/-2)
tcg/arm/tcg-target.inc.c (+14/-19)
tcg/i386/tcg-target.h (+1/-1)
tcg/i386/tcg-target.inc.c (+16/-9)
tcg/mips/tcg-target.inc.c (+6/-6)
tcg/optimize.c (+1/-1)
tcg/ppc/tcg-target.inc.c (+2/-2)
tcg/riscv/tcg-target.inc.c (+2/-2)
tcg/s390/tcg-target.inc.c (+2/-2)
tcg/sparc/tcg-target.inc.c (+1/-1)
tcg/tcg-common.c (+1/-1)
tcg/tcg-op-gvec.c (+36/-4)
tcg/tcg-op-vec.c (+3/-3)
tcg/tcg-op.c (+23/-6)
tcg/tcg.c (+19/-11)
tcg/tci.c (+1/-1)
tests/.gitignore (+2/-0)
tests/Makefile.include (+65/-334)
tests/acceptance/avocado_qemu/__init__.py (+82/-26)
tests/acceptance/boot_linux.py (+222/-0)
tests/acceptance/boot_linux_console.py (+441/-25)
tests/acceptance/cpu_queries.py (+1/-1)
tests/acceptance/empty_cpu_model.py (+6/-6)
tests/acceptance/linux_initrd.py (+8/-7)
tests/acceptance/linux_ssh_mips_malta.py (+4/-7)
tests/acceptance/machine_arm_integratorcp.py (+99/-0)
tests/acceptance/machine_arm_n8x0.py (+49/-0)
tests/acceptance/machine_m68k_nextcube.py (+5/-16)
tests/acceptance/machine_mips_malta.py (+118/-0)
tests/acceptance/machine_sparc_leon3.py (+5/-2)
tests/acceptance/migration.py (+42/-15)
tests/acceptance/ppc_prep_40p.py (+4/-6)
tests/acceptance/version.py (+1/-0)
tests/acceptance/virtio_check_params.py (+144/-0)
tests/acceptance/x86_cpu_model_versions.py (+77/-61)
tests/check-block.sh (+1/-1)
tests/data/acpi/rebuild-expected-aml.sh (+10/-3)
tests/dbus-vmstate-daemon.sh (+95/-0)
tests/docker/Makefile.include (+8/-8)
tests/docker/common.rc (+1/-6)
tests/docker/docker.py (+9/-7)
tests/docker/dockerfiles/centos7.docker (+4/-0)
tests/docker/dockerfiles/centos8.docker (+32/-0)
tests/docker/dockerfiles/debian-amd64.docker (+6/-4)
tests/docker/dockerfiles/debian-armel-cross.docker (+1/-1)
tests/docker/dockerfiles/debian-armhf-cross.docker (+1/-1)
tests/docker/dockerfiles/debian-mips64el-cross.docker (+1/-1)
tests/docker/dockerfiles/debian-mipsel-cross.docker (+1/-1)
tests/docker/dockerfiles/debian-ppc64el-cross.docker (+1/-1)
tests/docker/dockerfiles/debian-s390x-cross.docker (+1/-1)
tests/docker/dockerfiles/debian-win32-cross.docker (+1/-1)
tests/docker/dockerfiles/debian10.docker (+6/-0)
tests/docker/dockerfiles/debian9.docker (+3/-2)
tests/docker/dockerfiles/fedora-i386-cross.docker (+2/-1)
tests/docker/dockerfiles/fedora.docker (+8/-4)
tests/docker/dockerfiles/travis.docker (+1/-1)
tests/docker/dockerfiles/ubuntu.docker (+3/-3)
tests/docker/dockerfiles/ubuntu1804.docker (+2/-3)
tests/docker/test-misc (+2/-0)
tests/docker/travis.py (+1/-2)
tests/fp/Makefile (+6/-8)
tests/guest-debug/run-test.py (+57/-0)
tests/guest-debug/test-gdbstub.py (+0/-1)
tests/iothread.c (+30/-0)
tests/migration/guestperf/engine.py (+0/-1)
tests/migration/guestperf/plot.py (+0/-1)
tests/migration/guestperf/shell.py (+0/-1)
tests/plugin/bb.c (+3/-3)
tests/plugin/howvec.c (+17/-9)
tests/plugin/insn.c (+1/-2)
tests/ptimer-test.c (+0/-1)
tests/qapi-schema/alternate-base.err (+1/-1)
tests/qapi-schema/doc-good.json (+21/-1)
tests/qapi-schema/doc-good.out (+18/-0)
tests/qapi-schema/doc-good.texi (+32/-0)
tests/qapi-schema/empty.out (+1/-0)
tests/qapi-schema/features-deprecated-type.err (+2/-0)
tests/qapi-schema/features-deprecated-type.json (+3/-0)
tests/qapi-schema/features-deprecated-type.out (+0/-0)
tests/qapi-schema/include-repetition.out (+2/-4)
tests/qapi-schema/qapi-schema-test.json (+24/-9)
tests/qapi-schema/qapi-schema-test.out (+35/-19)
tests/qapi-schema/test-qapi.py (+17/-18)
tests/qemu-iotests/005 (+1/-4)
tests/qemu-iotests/007 (+3/-2)
tests/qemu-iotests/014 (+2/-0)
tests/qemu-iotests/015 (+3/-2)
tests/qemu-iotests/019 (+3/-3)
tests/qemu-iotests/020 (+3/-3)
tests/qemu-iotests/024 (+5/-5)
tests/qemu-iotests/026 (+26/-1)
tests/qemu-iotests/026.out (+10/-0)
tests/qemu-iotests/026.out.nocache (+10/-0)
tests/qemu-iotests/028 (+2/-2)
tests/qemu-iotests/029 (+4/-3)
tests/qemu-iotests/030 (+4/-6)
tests/qemu-iotests/031 (+6/-3)
tests/qemu-iotests/031.out (+22/-22)
tests/qemu-iotests/036 (+11/-6)
tests/qemu-iotests/036.out (+11/-59)
tests/qemu-iotests/039 (+11/-16)
tests/qemu-iotests/039.out (+11/-11)
tests/qemu-iotests/040 (+286/-1)
tests/qemu-iotests/040.out (+2/-2)
tests/qemu-iotests/041 (+171/-55)
tests/qemu-iotests/041.out (+2/-2)
tests/qemu-iotests/043 (+3/-1)
tests/qemu-iotests/044 (+1/-1)
tests/qemu-iotests/045 (+1/-1)
tests/qemu-iotests/046 (+8/-4)
tests/qemu-iotests/046.out (+8/-4)
tests/qemu-iotests/048 (+3/-1)
tests/qemu-iotests/049 (+5/-0)
tests/qemu-iotests/049.out (+5/-0)
tests/qemu-iotests/050 (+2/-6)
tests/qemu-iotests/051 (+5/-3)
tests/qemu-iotests/053 (+2/-2)
tests/qemu-iotests/055 (+1/-1)
tests/qemu-iotests/056 (+1/-1)
tests/qemu-iotests/057 (+1/-1)
tests/qemu-iotests/058 (+5/-4)
tests/qemu-iotests/059 (+10/-10)
tests/qemu-iotests/060 (+15/-12)
tests/qemu-iotests/060.out (+10/-12)
tests/qemu-iotests/061 (+36/-29)
tests/qemu-iotests/061.out (+43/-43)
tests/qemu-iotests/062 (+3/-2)
tests/qemu-iotests/063 (+8/-10)
tests/qemu-iotests/063.out (+2/-1)
tests/qemu-iotests/065 (+1/-1)
tests/qemu-iotests/066 (+5/-2)
tests/qemu-iotests/067 (+4/-2)
tests/qemu-iotests/068 (+4/-2)
tests/qemu-iotests/069 (+1/-1)
tests/qemu-iotests/071 (+5/-2)
tests/qemu-iotests/073 (+4/-0)
tests/qemu-iotests/074 (+3/-1)
tests/qemu-iotests/079 (+4/-2)
tests/qemu-iotests/080 (+4/-3)
tests/qemu-iotests/081 (+3/-3)
tests/qemu-iotests/085 (+10/-9)
tests/qemu-iotests/085.out (+6/-6)
tests/qemu-iotests/087 (+6/-0)
tests/qemu-iotests/088 (+1/-1)
tests/qemu-iotests/089 (+2/-2)
tests/qemu-iotests/090 (+2/-0)
tests/qemu-iotests/091 (+3/-3)
tests/qemu-iotests/091.out (+0/-2)
tests/qemu-iotests/092 (+1/-1)
tests/qemu-iotests/093 (+1/-1)
tests/qemu-iotests/094 (+2/-2)
tests/qemu-iotests/095 (+3/-2)
tests/qemu-iotests/096 (+1/-1)
tests/qemu-iotests/098 (+4/-2)
tests/qemu-iotests/099 (+6/-4)
tests/qemu-iotests/103 (+3/-2)
tests/qemu-iotests/106 (+1/-1)
tests/qemu-iotests/108 (+6/-4)
tests/qemu-iotests/109 (+3/-3)
tests/qemu-iotests/110 (+7/-4)
tests/qemu-iotests/110.out (+2/-2)
tests/qemu-iotests/111 (+1/-2)
tests/qemu-iotests/112 (+19/-18)
tests/qemu-iotests/114 (+2/-0)
tests/qemu-iotests/115 (+1/-2)
tests/qemu-iotests/118 (+1/-1)
tests/qemu-iotests/121 (+6/-3)
tests/qemu-iotests/122 (+18/-2)
tests/qemu-iotests/122.out (+5/-0)
tests/qemu-iotests/123 (+2/-2)
tests/qemu-iotests/124 (+1/-1)
tests/qemu-iotests/125 (+1/-1)
tests/qemu-iotests/127 (+2/-0)
tests/qemu-iotests/129 (+1/-1)
tests/qemu-iotests/132 (+1/-1)
tests/qemu-iotests/136 (+1/-1)
tests/qemu-iotests/137 (+12/-5)
tests/qemu-iotests/137.out (+2/-4)
tests/qemu-iotests/138 (+42/-3)
tests/qemu-iotests/138.out (+14/-0)
tests/qemu-iotests/139 (+1/-4)
tests/qemu-iotests/141 (+3/-1)
tests/qemu-iotests/141.out (+2/-0)
tests/qemu-iotests/142 (+1/-1)
tests/qemu-iotests/144 (+3/-1)
tests/qemu-iotests/147 (+4/-3)
tests/qemu-iotests/148 (+1/-1)
tests/qemu-iotests/149 (+1/-2)
tests/qemu-iotests/151 (+1/-1)
tests/qemu-iotests/152 (+1/-1)
tests/qemu-iotests/153 (+4/-8)
tests/qemu-iotests/155 (+75/-20)
tests/qemu-iotests/155.out (+2/-2)
tests/qemu-iotests/156 (+8/-2)
tests/qemu-iotests/159 (+1/-1)
tests/qemu-iotests/160 (+2/-1)
tests/qemu-iotests/161 (+2/-2)
tests/qemu-iotests/163 (+1/-1)
tests/qemu-iotests/165 (+1/-2)
tests/qemu-iotests/169 (+1/-1)
tests/qemu-iotests/170 (+1/-1)
tests/qemu-iotests/172 (+3/-3)
tests/qemu-iotests/173 (+2/-1)
tests/qemu-iotests/174 (+1/-1)
tests/qemu-iotests/175 (+1/-1)
tests/qemu-iotests/176 (+5/-2)
tests/qemu-iotests/177 (+3/-2)
tests/qemu-iotests/178 (+4/-4)
tests/qemu-iotests/178.out.qcow2 (+4/-4)
tests/qemu-iotests/178.out.raw (+4/-4)
tests/qemu-iotests/181 (+4/-4)
tests/qemu-iotests/182 (+1/-1)
tests/qemu-iotests/183 (+4/-3)
tests/qemu-iotests/185 (+7/-7)
tests/qemu-iotests/185.out (+2/-0)
tests/qemu-iotests/187 (+3/-3)
tests/qemu-iotests/190 (+2/-2)
tests/qemu-iotests/191 (+6/-5)
tests/qemu-iotests/194 (+1/-1)
tests/qemu-iotests/195 (+1/-1)
tests/qemu-iotests/196 (+1/-1)
tests/qemu-iotests/197 (+3/-3)
tests/qemu-iotests/198 (+4/-2)
tests/qemu-iotests/198.out (+2/-2)
tests/qemu-iotests/199 (+1/-1)
tests/qemu-iotests/200 (+5/-4)
tests/qemu-iotests/201 (+7/-7)
tests/qemu-iotests/202 (+1/-1)
tests/qemu-iotests/203 (+1/-1)
tests/qemu-iotests/205 (+1/-1)
tests/qemu-iotests/206 (+112/-122)
tests/qemu-iotests/207 (+2/-8)
tests/qemu-iotests/208 (+1/-1)
tests/qemu-iotests/209 (+1/-1)
tests/qemu-iotests/210 (+37/-46)
tests/qemu-iotests/211 (+4/-10)
tests/qemu-iotests/212 (+47/-56)
tests/qemu-iotests/213 (+53/-62)
tests/qemu-iotests/214 (+45/-1)
tests/qemu-iotests/214.out (+14/-0)
tests/qemu-iotests/215 (+3/-3)
tests/qemu-iotests/216 (+1/-1)
tests/qemu-iotests/217 (+2/-1)
tests/qemu-iotests/218 (+1/-1)
tests/qemu-iotests/219 (+6/-3)
tests/qemu-iotests/219.out (+8/-0)
tests/qemu-iotests/220 (+6/-5)
tests/qemu-iotests/222 (+1/-1)
tests/qemu-iotests/223 (+1/-1)
tests/qemu-iotests/223.out (+4/-2)
tests/qemu-iotests/224 (+1/-1)
tests/qemu-iotests/225 (+1/-1)
tests/qemu-iotests/228 (+1/-1)
tests/qemu-iotests/229 (+2/-1)
tests/qemu-iotests/232 (+3/-1)
tests/qemu-iotests/234 (+5/-5)
tests/qemu-iotests/235 (+2/-2)
tests/qemu-iotests/236 (+1/-1)
tests/qemu-iotests/237 (+66/-75)
tests/qemu-iotests/238 (+1/-1)
tests/qemu-iotests/242 (+1/-1)
tests/qemu-iotests/243 (+7/-3)
tests/qemu-iotests/244 (+23/-6)
tests/qemu-iotests/244.out (+7/-1)
tests/qemu-iotests/245 (+38/-11)
tests/qemu-iotests/245.out (+2/-2)
tests/qemu-iotests/246 (+1/-1)
tests/qemu-iotests/247 (+3/-1)
tests/qemu-iotests/248 (+1/-1)
tests/qemu-iotests/249 (+2/-2)
tests/qemu-iotests/250 (+3/-2)
tests/qemu-iotests/252 (+1/-1)
tests/qemu-iotests/254 (+1/-1)
tests/qemu-iotests/255 (+1/-11)
tests/qemu-iotests/256 (+1/-1)
tests/qemu-iotests/257 (+1/-1)
tests/qemu-iotests/258 (+1/-1)
tests/qemu-iotests/259 (+62/-0)
tests/qemu-iotests/259.out (+14/-0)
tests/qemu-iotests/260 (+1/-1)
tests/qemu-iotests/261 (+3/-2)
tests/qemu-iotests/262 (+3/-3)
tests/qemu-iotests/264 (+1/-1)
tests/qemu-iotests/265 (+1/-1)
tests/qemu-iotests/266 (+31/-40)
tests/qemu-iotests/266.out (+14/-0)
tests/qemu-iotests/267 (+14/-6)
tests/qemu-iotests/273 (+5/-1)
tests/qemu-iotests/273.out (+0/-27)
tests/qemu-iotests/277 (+1/-1)
tests/qemu-iotests/279 (+60/-0)
tests/qemu-iotests/279.out (+35/-0)
tests/qemu-iotests/280 (+83/-0)
tests/qemu-iotests/280.out (+50/-0)
tests/qemu-iotests/281 (+247/-0)
tests/qemu-iotests/281.out (+5/-0)
tests/qemu-iotests/282 (+67/-0)
tests/qemu-iotests/282.out (+11/-0)
tests/qemu-iotests/283 (+92/-0)
tests/qemu-iotests/283.out (+8/-0)
tests/qemu-iotests/284 (+97/-0)
tests/qemu-iotests/284.out (+62/-0)
tests/qemu-iotests/286 (+76/-0)
tests/qemu-iotests/286.out (+8/-0)
tests/qemu-iotests/288 (+93/-0)
tests/qemu-iotests/288.out (+30/-0)
tests/qemu-iotests/289 (+89/-0)
tests/qemu-iotests/289.out (+8/-0)
tests/qemu-iotests/290 (+97/-0)
tests/qemu-iotests/290.out (+61/-0)
tests/qemu-iotests/check (+28/-7)
tests/qemu-iotests/common.filter (+45/-2)
tests/qemu-iotests/common.pattern (+11/-11)
tests/qemu-iotests/common.rc (+135/-15)
tests/qemu-iotests/group (+18/-7)
tests/qemu-iotests/iotests.py (+128/-17)
tests/qemu-iotests/nbd-fault-injector.py (+1/-2)
tests/qemu-iotests/qcow2.py (+20/-6)
tests/qemu-iotests/qed.py (+1/-2)
tests/qtest/Makefile.include (+325/-0)
tests/qtest/arm-cpu-features.c (+34/-11)
tests/qtest/bios-tables-test.c (+88/-30)
tests/qtest/boot-order-test.c (+3/-28)
tests/qtest/boot-sector.c (+2/-2)
tests/qtest/boot-serial-test.c (+6/-4)
tests/qtest/cdrom-test.c (+2/-2)
tests/qtest/cpu-plug-test.c (+1/-5)
tests/qtest/dbus-vmstate-test.c (+382/-0)
tests/qtest/dbus-vmstate1.xml (+12/-0)
tests/qtest/device-introspect-test.c (+1/-1)
tests/qtest/endianness-test.c (+1/-1)
tests/qtest/fuzz/Makefile.include (+18/-0)
tests/qtest/fuzz/fork_fuzz.c (+55/-0)
tests/qtest/fuzz/fork_fuzz.h (+23/-0)
tests/qtest/fuzz/fork_fuzz.ld (+41/-0)
tests/qtest/fuzz/fuzz.c (+179/-0)
tests/qtest/fuzz/fuzz.h (+95/-0)
tests/qtest/fuzz/i440fx_fuzz.c (+193/-0)
tests/qtest/fuzz/qos_fuzz.c (+234/-0)
tests/qtest/fuzz/qos_fuzz.h (+33/-0)
tests/qtest/fuzz/virtio_net_fuzz.c (+198/-0)
tests/qtest/fuzz/virtio_scsi_fuzz.c (+213/-0)
tests/qtest/hd-geo-test.c (+14/-4)
tests/qtest/ide-test.c (+74/-100)
tests/qtest/ivshmem-test.c (+1/-1)
tests/qtest/libqos/ahci.h (+1/-1)
tests/qtest/libqos/fw_cfg.h (+2/-0)
tests/qtest/libqos/i2c.c (+5/-5)
tests/qtest/libqos/i2c.h (+2/-2)
tests/qtest/libqos/libqos-spapr.h (+7/-0)
tests/qtest/libqos/qgraph.c (+2/-2)
tests/qtest/libqos/qos_external.c (+168/-0)
tests/qtest/libqos/qos_external.h (+28/-0)
tests/qtest/libqos/virtio-scsi.c (+119/-0)
tests/qtest/libqos/virtio-serial.c (+49/-57)
tests/qtest/libqos/virtio.h (+155/-0)
tests/qtest/libqos/x86_64_pc-machine.c (+115/-0)
tests/qtest/libqtest-single.h (+315/-0)
tests/qtest/libqtest.c (+111/-14)
tests/qtest/libqtest.h (+4/-0)
tests/qtest/m48t59-test.c (+269/-0)
tests/qtest/machine-none-test.c (+104/-0)
tests/qtest/megasas-test.c (+91/-0)
tests/qtest/migration-helpers.c (+167/-0)
tests/qtest/migration-helpers.h (+37/-0)
tests/qtest/migration-test.c (+397/-290)
tests/qtest/modules-test.c (+2/-1)
tests/qtest/numa-test.c (+258/-39)
tests/qtest/nvme-test.c (+88/-0)
tests/qtest/pca9552-test.c (+93/-0)
tests/qtest/pflash-cfi02-test.c (+2/-2)
tests/qtest/pnv-xscom-test.c (+153/-0)
tests/qtest/prom-env-test.c (+105/-0)
tests/qtest/pxe-test.c (+153/-0)
tests/qtest/q35-test.c (+306/-0)
tests/qtest/qmp-cmd-test.c (+234/-0)
tests/qtest/qmp-test.c (+344/-0)
tests/qtest/qom-test.c (+101/-0)
tests/qtest/qos-test.c (+319/-0)
tests/qtest/rtl8139-test.c (+211/-0)
tests/qtest/sdhci-test.c (+111/-0)
tests/qtest/tco-test.c (+469/-0)
tests/qtest/test-filter-mirror.c (+94/-0)
tests/qtest/test-filter-redirector.c (+219/-0)
tests/qtest/test-hmp.c (+171/-0)
tests/qtest/test-netfilter.c (+210/-0)
tests/qtest/test-x86-cpuid-compat.c (+381/-0)
tests/qtest/tmp105-test.c (+120/-0)
tests/qtest/tpm-crb-swtpm-test.c (+72/-0)
tests/qtest/tpm-crb-test.c (+182/-0)
tests/qtest/tpm-emu.c (+183/-0)
tests/qtest/tpm-tests.c (+138/-0)
tests/qtest/tpm-tests.h (+3/-2)
tests/qtest/tpm-tis-device-swtpm-test.c (+76/-0)
tests/qtest/tpm-tis-device-test.c (+87/-0)
tests/qtest/tpm-tis-swtpm-test.c (+71/-0)
tests/qtest/tpm-tis-test.c (+80/-0)
tests/qtest/tpm-tis-util.c (+46/-83)
tests/qtest/tpm-tis-util.h (+23/-0)
tests/qtest/tpm-util.c (+286/-0)
tests/qtest/tpm-util.h (+57/-0)
tests/qtest/tulip-test.c (+91/-0)
tests/qtest/usb-hcd-ehci-test.c (+178/-0)
tests/qtest/usb-hcd-ohci-test.c (+68/-0)
tests/qtest/usb-hcd-uhci-test.c (+88/-0)
tests/qtest/usb-hcd-xhci-test.c (+69/-0)
tests/qtest/vhost-user-test.c (+9/-4)
tests/qtest/virtio-9p-test.c (+154/-1)
tests/qtest/virtio-ccw-test.c (+115/-0)
tests/qtest/virtio-net-test.c (+337/-0)
tests/qtest/virtio-scsi-test.c (+298/-0)
tests/qtest/virtio-serial-test.c (+39/-0)
tests/qtest/vmgenid-test.c (+185/-0)
tests/qtest/vmxnet3-test.c (+22/-32)
tests/qtest/wdt_ib700-test.c (+118/-0)
tests/rcutorture.c (+51/-23)
tests/requirements.txt (+2/-1)
tests/tcg/Makefile.prereqs (+1/-1)
tests/tcg/Makefile.target (+2/-2)
tests/tcg/aarch64/Makefile.softmmu-target (+21/-1)
tests/tcg/aarch64/Makefile.target (+43/-1)
tests/tcg/aarch64/gdbstub/test-sve-ioctl.py (+85/-0)
tests/tcg/aarch64/gdbstub/test-sve.py (+84/-0)
tests/tcg/aarch64/pauth-1.c (+1/-3)
tests/tcg/aarch64/pauth-2.c (+0/-2)
tests/tcg/aarch64/pauth-4.c (+45/-0)
tests/tcg/aarch64/sve-ioctls.c (+70/-0)
tests/tcg/aarch64/sysregs.c (+172/-0)
tests/tcg/aarch64/system/pauth-3.c (+40/-0)
tests/tcg/aarch64/system/semiconsole.c (+38/-0)
tests/tcg/arm/Makefile.target (+28/-0)
tests/tcg/arm/semicall.h (+35/-0)
tests/tcg/arm/semiconsole.c (+27/-0)
tests/tcg/arm/semihosting.c (+1/-20)
tests/tcg/configure.sh (+22/-2)
tests/tcg/x86_64/system/boot.S (+1/-4)
tests/test-aio.c (+2/-1)
tests/test-bitmap.c (+4/-4)
tests/test-blockjob.c (+9/-8)
tests/test-char.c (+3/-3)
tests/test-crypto-tlscredsx509.c (+1/-1)
tests/test-crypto-tlssession.c (+1/-1)
tests/test-hbitmap.c (+114/-200)
tests/test-io-channel-tls.c (+1/-1)
tests/test-keyval.c (+1/-1)
tests/test-logging.c (+80/-0)
tests/test-qdev-global-props.c (+1/-1)
tests/test-qga.c (+2/-2)
tests/test-qmp-cmds.c (+71/-82)
tests/test-qmp-event.c (+35/-133)
tests/test-qobject-output-visitor.c (+4/-4)
tests/test-rcu-list.c (+17/-1)
tests/test-rcu-slist.c (+2/-0)
tests/test-replication.c (+52/-0)
tests/test-string-output-visitor.c (+2/-2)
tests/test-util-filemonitor.c (+11/-0)
tests/test-util-sockets.c (+2/-2)
tests/test-vmstate.c (+173/-5)
tests/test-x86-cpuid.c (+69/-47)
tests/vm/Makefile.include (+13/-4)
tests/vm/basevm.py (+70/-7)
tests/vm/centos (+3/-34)
tests/vm/fedora (+7/-5)
tests/vm/freebsd (+10/-6)
tests/vm/netbsd (+12/-20)
tests/vm/openbsd (+8/-5)
tests/vm/ubuntu.i386 (+6/-38)
tools/virtiofsd/50-qemu-virtiofsd.json.in (+5/-0)
tools/virtiofsd/Makefile.objs (+12/-0)
tools/virtiofsd/buffer.c (+351/-0)
tools/virtiofsd/fuse_common.h (+816/-0)
tools/virtiofsd/fuse_i.h (+99/-0)
tools/virtiofsd/fuse_log.c (+41/-0)
tools/virtiofsd/fuse_log.h (+74/-0)
tools/virtiofsd/fuse_lowlevel.c (+2688/-0)
tools/virtiofsd/fuse_lowlevel.h (+1970/-0)
tools/virtiofsd/fuse_misc.h (+60/-0)
tools/virtiofsd/fuse_opt.c (+450/-0)
tools/virtiofsd/fuse_opt.h (+272/-0)
tools/virtiofsd/fuse_signals.c (+98/-0)
tools/virtiofsd/fuse_virtio.c (+1001/-0)
tools/virtiofsd/fuse_virtio.h (+33/-0)
tools/virtiofsd/helper.c (+349/-0)
tools/virtiofsd/passthrough_helpers.h (+51/-0)
tools/virtiofsd/passthrough_ll.c (+3003/-0)
tools/virtiofsd/seccomp.c (+171/-0)
tools/virtiofsd/seccomp.h (+16/-0)
trace/control.c (+6/-36)
trace/mem-internal.h (+0/-17)
ui/cocoa.m (+6/-61)
ui/console.c (+56/-37)
ui/curses.c (+7/-3)
ui/gtk.c (+34/-2)
ui/input-barrier.c (+1/-1)
ui/input-linux.c (+27/-2)
ui/sdl2.c (+9/-9)
ui/trace-events (+1/-1)
ui/vnc-enc-zrle.c (+2/-2)
ui/vnc.c (+18/-33)
ui/vnc.h (+1/-1)
util/Makefile.objs (+9/-2)
util/aio-posix.c (+236/-314)
util/aio-posix.h (+81/-0)
util/aio-win32.c (+14/-3)
util/async.c (+186/-103)
util/bufferiszero.c (+72/-26)
util/cacheinfo.c (+8/-2)
util/cutils.c (+43/-3)
util/dbus.c (+57/-0)
util/error.c (+3/-3)
util/fdmon-epoll.c (+155/-0)
util/fdmon-io_uring.c (+354/-0)
util/fdmon-poll.c (+107/-0)
util/guest-random.c (+11/-2)
util/hbitmap.c (+83/-51)
util/id.c (+1/-0)
util/log.c (+94/-36)
util/module.c (+23/-1)
util/nvdimm-utils.c (+29/-0)
util/osdep.c (+17/-2)
util/oslib-posix.c (+34/-8)
util/qemu-error.c (+4/-2)
util/qemu-timer-common.c (+4/-7)
util/qemu-timer.c (+11/-12)
util/qsp.c (+10/-12)
util/selfmap.c (+78/-0)
util/trace-events (+2/-0)
util/vfio-helpers.c (+3/-3)
Conflict in debian/binfmt-install
Conflict in debian/changelog
Conflict in debian/control
Conflict in debian/control-in
Conflict in debian/patches/series
Conflict in debian/patches/ubuntu/define-ubuntu-machine-types.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-Add-SIDA-memory-ops.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-Add-unpack-facility-feature-to-GA1.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-Move-diagnose-308-subcodes-and-rcs-into-ipl.h.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-Add-migration-blocker.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-Disable-address-checks-for-PV-guest-I.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-Handle-SIGP-store-status-correctly.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-Inhibit-balloon-when-switching-to-pro.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-KVM-intercept-changes.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-Move-IO-control-structures-over-SIDA.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-Move-STSI-data-over-SIDAD.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-Move-diag-308-data-over-SIDA.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-SCLP-interpretation.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-Set-guest-IPL-PSW.patch
Conflict in debian/patches/ubuntu/lp-1835546-s390x-protvirt-Support-unpack-facility.patch
Conflict in debian/qemu-block-extra.postrm.in
Conflict in debian/qemu-system-common.install
Conflict in debian/qemu-system-data.install
Conflict in debian/qemu-system-gui.postrm.in
Conflict in debian/qemu-system-x86.README.Debian
Conflict in debian/rules
Reviewer Review Type Date Requested Status
Rafael David Tinoco (community) Approve
Canonical Server packageset reviewers Pending
Canonical Server Pending
Review via email: mp+388197@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

I beg your pardon the LP diff will be crazy, but none of the merge targets will make sense - let me explain.

We had
1:4.2-3ubuntu9
Then we did a merge of
1:5.0-5ubuntu1
This was then removed from groovy-proposed and replaced by (changelog only)
1:4.2-3ubuntu10
This now is about
1:5.0-5ubuntu2

This is based on 1:5.0-5ubuntu1 including the no-op changelog entry from 1:4.2-3ubuntu10
 and selected fixes from Debian/master branch. Selected fixes because we want CVEs and functional fixes - but not a full new merge as there were many packaging changes in regard to our Delta.
These will be picked up (and dropping ours) next cycle.

So ignoring the odd diff the commits to look at are only those later than upload/1%5.0-5ubuntu1
These are:
- 27 fixes as they are in Debian (cherry picks)
- 1 fix for bug 1887763
- 2 changelog commits (one bringing back 1:4.2-3ubuntu10)

Therefore it is not as crazy nor so much fully-new content as it looks

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

1:5.0-5ubuntu2 never made it (https://launchpad.net/ubuntu/+source/qemu/1:5.0-5ubuntu2) anywhere.
No need to re-mention it in changelog as functionally it was replaced by 1:4.2-3ubuntu10 which is mentioned.

Revision history for this message
Rafael David Tinoco (rafaeldtinoco) wrote :

Commits verified (as the previous one were already +1):

0f979591ee (HEAD -> refs/heads/groovy-merge-5.0-some13, refs/remotes/paelzer/groovy-merge-5.0-some13) c>
d44f6b220a changelog: fix TCG sizing that OOMed many small CI environments (LP: #1887763)
c5d8f99ab5 d/p/ubuntu/lp-1887763-*: fix TCG sizing that OOMed many small CI environments (LP: #1887763)
a533db1ce3 changelog: Pick further changes for groovy from debian/master since 5.0-5
57f30b7369 riscv-allow-64-bit-access-to-SiFive-CLINT.patch (another fix for revert-memory-accept-..-CVE>
4b335033f7 seabios-hppa-fno-ipa-sra.patch
f051de15d2 sm501-replace-hand-written-implementation-with-pixman-CVE-2020-12829.patch (#961451)
3965a6882f xgmac-fix-buffer-overflow-in-xgmac_enet_send-CVE-2020-15863.patch ARM-only XGMAC NIC CVE-202>
53e8d97f6d do not install outdated (0.12 and before) Changelog (#965381)
b85c52509d xhci-fix-valid.max_access_size-to-access-address-registers.patch
0e88043c3a acpi-accept-byte-and-word-access-to-core-ACPI-registers.patch
ed349c2f32 acpi-allow-accessing-acpi-cnt-register-by-byte.patch (#964793)
cc8be61604 qemu-block-extra also contains modules so can not be multi-arch
40babc6417 qemu-system-foo: depend on exact version of qemu-system-data, due to the latter having modul>
c59f244efd d/control: since qemu-system-data now contains module(s), it can't be multi-arch
f222d12356 linux-user-add-netlink-RTM_SETLINK-command.patch (#964289)
3fd523b608 linux-user-refactor-ipc-syscall-and-support-of-semtimedop.patch (#965109)
9a19385f2d 2 more sdcard patches to finally fix CVE-2020-13253 sdcard-simplify-realize-a-bit.patch (pre>
da2b0226e3 update CVE-2020-13253 fix from upstream (update 2 patch files)
3aefe6f0fe reapply sdcard-dont-switch-to-ReceivingData-if-address-is-invalid-CVE-2020-13253.patch (#961>
31f15438d5 acpi-tmr-allow-2-byte-reads.patch (#964247)
5c18e54935 a few more patches from the stable series
8b5150a0d6 fix-tulip-breakage.patch
9a6eadddf3 es1370-check-total-frame-count-against-current-frame-CVE-2020-13361.patch
77601bf38d nbd-server-avoid-long-error-message-assertions-CVE-2020-10761.patch
9f55a47e78 megasas-fix-possible-out-of-bounds-array-access.patch
54f7770a73 megasas-use-unsigned-type-for-positive-numeric-fields.patch
8396753288 megasas-use-unsigned-type-for-reply_queue_head-and-check-index-CVE-2020-13362.patch (#961887)
44538f1722 exec-set-map-length-to-zero-when-returning-NULL-CVE-2020-13659.patch
9f678ceeb7 revert-memory-accept-mismatching-sizes-in-memory_region_access_valid-CVE-2020-13754.patch
942cad0327 ati-vga-check-mm_index-before-recursive-call-CVE-2020-13800.patch
09ed46e6da (refs/remotes/paelzer/groovy-merge-5.0-5) fixup mistake in 'ubuntu machine type'
60a25d426b changelog: merge into 1:5.0-5ubuntu1

Revision history for this message
Rafael David Tinoco (rafaeldtinoco) wrote :

As usual I'm relying on your own function and migration tests for this merge.

From the patches review, all I could find was:

+ - a few patches from the stable series:
+ - fix-tulip-breakage.patch
+ The tulip network driver in a qemu-system-hppa emulation is broken in
+ the sense that bigger network packages aren't received any longer and
+ thus even running e.g. "apt update" inside the VM fails. Fix this.

I would go for "all-in" or "all-by-themselves" for these backports.

Its weird that you have a commit with lots of stable fix patches and
then just 1 with tulip fix. BUT, I know you are the one maintaining
it so there is nothing wrong, just curious if that helps you somehow.

I would find it easier to have single commit + single series change so
if I needed to revert, drop, change, etc... it would be easier, I
suppose ?

=> This is more of a parallel talking than a review objection...

+ - acpi-accept-byte-and-word-access-to-core-ACPI-registers.patch
+ this replace cpi-allow-accessing-acpi-cnt-register-by-byte.patch
+ and acpi-tmr-allow-2-byte-reads.patch, a more complete fix

typo in "_A_cpi-allow-accessing-acpi-cnt-register ...", second line

+ - do not install outdated (0.12 and before) Changelog (Closes: #965381)

where is the xgmac-fix-buffer-overflow-in-xgmac... ?

=> seems you have missed this one in the changelog

+ - sm501 OOB read/write due to integer overflow in sm501_2d_operation()
+ List of patches:
+ sm501-convert-printf-abort-to-qemu_log_mask.patch
+ sm501-shorten-long-variable-names-in-sm501_2d_operation.patch
+ sm501-use-BIT-macro-to-shorten-constant.patch
+ sm501-clean-up-local-variables-in-sm501_2d_operation.patch
+ sm501-replace-hand-written-implementation-with-pixman-CVE-2020-12829.patch
+ Closes: #961451, CVE-2020-12829

where is the seabios-hppa-fno-ipa-sra.patch (fix ftbfs with gcc-10) ?
=> in the patches from stable series above.
=> all good

+ - riscv-allow-64-bit-access-to-SiFive-CLINT.patch
+ another fix for revert-memory-accept-.. CVE-2020-13754

STATUS: I'm +1 after you address the => with no "All good"

Best,

Rafael

review: Approve
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

@Rafael for the 1 commit tulip + 1 commit "other stable".
That is cherry-picked as the Debian maintainer added them to salsa, and keeping it in that structure allows me more easily to next merge identify and drop them.

Last time I did stable-patches myself I grouped them up in one commit adding all that were in upstreams stable release added to d/p/ubuntu/lp- ... TBH I had individual commits at first, but it was just useless noise.

---

There was a lot to juggle, thanks for spotting a few CL misses, added to changelog:

  * xgmac-fix-buffer-overflow-in-xgmac_enet_send-CVE-2020-15863.patch
    ARM-only XGMAC NIC, possible buffer overflow during packet transmission
    Closes: CVE-2020-15863
  * seabios-hppa-fno-ipa-sra.patch fix ftbfs with gcc-10

  + acpi patch name typo

---

Tests haven't found anything functionally on the PPA and memory consumption seems sane now, going to upload ...

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Heh - tests were on ppc/s390x/x86 but build failed on arm and went undetected :-/
Looking into that ...

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Seems this was a builder issue, there isn't even a build log - but I'm gonna rebuild it on the PPA before polluting groovy.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Builds are good this time without any change - so ready for upload.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

This is half old half new git tree, to avoid any mis-adoption of history (which atm is broken on this repo anyway) I'm not pushing an upload tag (but I do to my LP user to find it later if needed).

Also squashed the changelog changes and pushed them here.

a5aef31... by Christian Ehrhardt 

changelog: add the never released but existing 1:5.0-5ubuntu2

Signed-off-by: Christian Ehrhardt <email address hidden>

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Uploaded a build with -v1:4.2-3ubuntu10

To git+ssh://git.launchpad.net/~paelzer/ubuntu/+source/qemu
   e71674d969..a5aef31e38 groovy-merge-5.0-some13 -> groovy-merge-5.0-some13
 * [new tag] upload/1%5.0-5ubuntu3 -> upload/1%5.0-5ubuntu3

Uploading to ubuntu (via ftp to upload.ubuntu.com):
  Uploading qemu_5.0-5ubuntu3.dsc: done.
  Uploading qemu_5.0.orig.tar.xz: done.
  Uploading qemu_5.0-5ubuntu3.debian.tar.xz: done.
  Uploading qemu_5.0-5ubuntu3_source.buildinfo: done.
  Uploading qemu_5.0-5ubuntu3_source.changes: done.
Successfully uploaded packages.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.cirrus.yml b/.cirrus.yml
2index 27efc48..90645fe 100644
3--- a/.cirrus.yml
4+++ b/.cirrus.yml
5@@ -22,7 +22,9 @@ macos_task:
6 install_script:
7 - brew install pkg-config python gnu-sed glib pixman make sdl2
8 script:
9- - ./configure --python=/usr/local/bin/python3 || { cat config.log; exit 1; }
10+ - mkdir build
11+ - cd build
12+ - ../configure --python=/usr/local/bin/python3 || { cat config.log; exit 1; }
13 - gmake -j$(sysctl -n hw.ncpu)
14 - gmake check -j$(sysctl -n hw.ncpu)
15
16@@ -33,6 +35,8 @@ macos_xcode_task:
17 install_script:
18 - brew install pkg-config gnu-sed glib pixman make sdl2
19 script:
20- - ./configure --cc=clang || { cat config.log; exit 1; }
21+ - mkdir build
22+ - cd build
23+ - ../configure --cc=clang || { cat config.log; exit 1; }
24 - gmake -j$(sysctl -n hw.ncpu)
25 - gmake check -j$(sysctl -n hw.ncpu)
26diff --git a/.github/lockdown.yml b/.github/lockdown.yml
27new file mode 100644
28index 0000000..9acc393
29--- /dev/null
30+++ b/.github/lockdown.yml
31@@ -0,0 +1,34 @@
32+# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown
33+
34+# Close issues and pull requests
35+close: true
36+
37+# Lock issues and pull requests
38+lock: true
39+
40+issues:
41+ comment: |
42+ Thank you for your interest in the QEMU project.
43+
44+ This repository is a read-only mirror of the project's master
45+ repostories hosted on https://git.qemu.org/git/qemu.git.
46+ The project does not process issues filed on GitHub.
47+
48+ The project issues are tracked on Launchpad:
49+ https://bugs.launchpad.net/qemu
50+
51+ QEMU welcomes bug report contributions. You can file new ones on:
52+ https://bugs.launchpad.net/qemu/+filebug
53+
54+pulls:
55+ comment: |
56+ Thank you for your interest in the QEMU project.
57+
58+ This repository is a read-only mirror of the project's master
59+ repostories hosted on https://git.qemu.org/git/qemu.git.
60+ The project does not process merge requests filed on GitHub.
61+
62+ QEMU welcomes contributions of code (either fixing bugs or adding new
63+ functionality). However, we get a lot of patches, and so we have some
64+ guidelines about contributing on the project website:
65+ https://www.qemu.org/contribute/
66diff --git a/.gitignore b/.gitignore
67index 7de868d..0c5af83 100644
68--- a/.gitignore
69+++ b/.gitignore
70@@ -6,6 +6,7 @@
71 /config-target.*
72 /config.status
73 /config-temp
74+/tools/virtiofsd/50-qemu-virtiofsd.json
75 /elf2dmp
76 /trace-events-all
77 /trace/generated-events.h
78@@ -37,6 +38,7 @@
79 /qapi/qapi-emit-events.[ch]
80 /qapi/qapi-events-*.[ch]
81 /qapi/qapi-events.[ch]
82+/qapi/qapi-init-commands.[ch]
83 /qapi/qapi-introspect.[ch]
84 /qapi/qapi-types-*.[ch]
85 /qapi/qapi-types.[ch]
86@@ -44,9 +46,6 @@
87 !/qapi/qapi-visit-core.c
88 /qapi/qapi-visit.[ch]
89 /qapi/qapi-doc.texi
90-/qemu-doc.html
91-/qemu-doc.info
92-/qemu-doc.txt
93 /qemu-edid
94 /qemu-img
95 /qemu-nbd
96diff --git a/.gitlab-ci-edk2.yml b/.gitlab-ci-edk2.yml
97new file mode 100644
98index 0000000..088ba4b
99--- /dev/null
100+++ b/.gitlab-ci-edk2.yml
101@@ -0,0 +1,49 @@
102+docker-edk2:
103+ stage: build
104+ rules: # Only run this job when the Dockerfile is modified
105+ - changes:
106+ - .gitlab-ci-edk2.yml
107+ - .gitlab-ci.d/edk2/Dockerfile
108+ when: always
109+ image: docker:19.03.1
110+ services:
111+ - docker:19.03.1-dind
112+ variables:
113+ GIT_DEPTH: 3
114+ IMAGE_TAG: $CI_REGISTRY_IMAGE:edk2-cross-build
115+ # We don't use TLS
116+ DOCKER_HOST: tcp://docker:2375
117+ DOCKER_TLS_CERTDIR: ""
118+ before_script:
119+ - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
120+ script:
121+ - docker pull $IMAGE_TAG || true
122+ - docker build --cache-from $IMAGE_TAG --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
123+ --tag $IMAGE_TAG .gitlab-ci.d/edk2
124+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
125+ - docker push $IMAGE_TAG
126+
127+build-edk2:
128+ rules: # Only run this job when ...
129+ - changes: # ... roms/edk2/ is modified (submodule updated)
130+ - roms/edk2/*
131+ when: always
132+ - if: '$CI_COMMIT_REF_NAME =~ /^edk2/' # or the branch/tag starts with 'edk2'
133+ when: always
134+ - if: '$CI_COMMIT_MESSAGE =~ /edk2/i' # or last commit description contains 'EDK2'
135+ when: always
136+ artifacts:
137+ paths: # 'artifacts.zip' will contains the following files:
138+ - pc-bios/edk2*bz2
139+ - pc-bios/edk2-licenses.txt
140+ - edk2-stdout.log
141+ - edk2-stderr.log
142+ image: $CI_REGISTRY_IMAGE:edk2-cross-build
143+ variables:
144+ GIT_DEPTH: 3
145+ script: # Clone the required submodules and build EDK2
146+ - git submodule update --init roms/edk2
147+ - git -C roms/edk2 submodule update --init
148+ - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1))
149+ - echo "=== Using ${JOBS} simultaneous jobs ==="
150+ - make -j${JOBS} -C roms efi 2>&1 1>edk2-stdout.log | tee -a edk2-stderr.log >&2
151diff --git a/.gitlab-ci-opensbi.yml b/.gitlab-ci-opensbi.yml
152new file mode 100644
153index 0000000..dd051c0
154--- /dev/null
155+++ b/.gitlab-ci-opensbi.yml
156@@ -0,0 +1,63 @@
157+docker-opensbi:
158+ stage: build
159+ rules: # Only run this job when the Dockerfile is modified
160+ - changes:
161+ - .gitlab-ci-opensbi.yml
162+ - .gitlab-ci.d/opensbi/Dockerfile
163+ when: always
164+ image: docker:19.03.1
165+ services:
166+ - docker:19.03.1-dind
167+ variables:
168+ GIT_DEPTH: 3
169+ IMAGE_TAG: $CI_REGISTRY_IMAGE:opensbi-cross-build
170+ # We don't use TLS
171+ DOCKER_HOST: tcp://docker:2375
172+ DOCKER_TLS_CERTDIR: ""
173+ before_script:
174+ - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
175+ script:
176+ - docker pull $IMAGE_TAG || true
177+ - docker build --cache-from $IMAGE_TAG --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
178+ --tag $IMAGE_TAG .gitlab-ci.d/opensbi
179+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
180+ - docker push $IMAGE_TAG
181+
182+build-opensbi:
183+ rules: # Only run this job when ...
184+ - changes: # ... roms/opensbi/ is modified (submodule updated)
185+ - roms/opensbi/*
186+ when: always
187+ - if: '$CI_COMMIT_REF_NAME =~ /^opensbi/' # or the branch/tag starts with 'opensbi'
188+ when: always
189+ - if: '$CI_COMMIT_MESSAGE =~ /opensbi/i' # or last commit description contains 'OpenSBI'
190+ when: always
191+ artifacts:
192+ paths: # 'artifacts.zip' will contains the following files:
193+ - pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
194+ - pc-bios/opensbi-riscv32-virt-fw_jump.bin
195+ - pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
196+ - pc-bios/opensbi-riscv64-virt-fw_jump.bin
197+ - opensbi32-virt-stdout.log
198+ - opensbi32-virt-stderr.log
199+ - opensbi64-virt-stdout.log
200+ - opensbi64-virt-stderr.log
201+ - opensbi32-sifive_u-stdout.log
202+ - opensbi32-sifive_u-stderr.log
203+ - opensbi64-sifive_u-stdout.log
204+ - opensbi64-sifive_u-stderr.log
205+ image: $CI_REGISTRY_IMAGE:opensbi-cross-build
206+ variables:
207+ GIT_DEPTH: 3
208+ script: # Clone the required submodules and build OpenSBI
209+ - git submodule update --init roms/opensbi
210+ - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1))
211+ - echo "=== Using ${JOBS} simultaneous jobs ==="
212+ - make -j${JOBS} -C roms/opensbi clean
213+ - make -j${JOBS} -C roms opensbi32-virt 2>&1 1>opensbi32-virt-stdout.log | tee -a opensbi32-virt-stderr.log >&2
214+ - make -j${JOBS} -C roms/opensbi clean
215+ - make -j${JOBS} -C roms opensbi64-virt 2>&1 1>opensbi64-virt-stdout.log | tee -a opensbi64-virt-stderr.log >&2
216+ - make -j${JOBS} -C roms/opensbi clean
217+ - make -j${JOBS} -C roms opensbi32-sifive_u 2>&1 1>opensbi32-sifive_u-stdout.log | tee -a opensbi32-sifive_u-stderr.log >&2
218+ - make -j${JOBS} -C roms/opensbi clean
219+ - make -j${JOBS} -C roms opensbi64-sifive_u 2>&1 1>opensbi64-sifive_u-stdout.log | tee -a opensbi64-sifive_u-stderr.log >&2
220diff --git a/.gitlab-ci.d/edk2/Dockerfile b/.gitlab-ci.d/edk2/Dockerfile
221new file mode 100644
222index 0000000..b4584d1
223--- /dev/null
224+++ b/.gitlab-ci.d/edk2/Dockerfile
225@@ -0,0 +1,27 @@
226+#
227+# Docker image to cross-compile EDK2 firmware binaries
228+#
229+FROM ubuntu:16.04
230+
231+MAINTAINER Philippe Mathieu-Daudé <philmd@redhat.com>
232+
233+# Install packages required to build EDK2
234+RUN apt update \
235+ && \
236+ \
237+ DEBIAN_FRONTEND=noninteractive \
238+ apt install --assume-yes --no-install-recommends \
239+ build-essential \
240+ ca-certificates \
241+ dos2unix \
242+ gcc-aarch64-linux-gnu \
243+ gcc-arm-linux-gnueabi \
244+ git \
245+ iasl \
246+ make \
247+ nasm \
248+ python \
249+ uuid-dev \
250+ && \
251+ \
252+ rm -rf /var/lib/apt/lists/*
253diff --git a/.gitlab-ci.d/opensbi/Dockerfile b/.gitlab-ci.d/opensbi/Dockerfile
254new file mode 100644
255index 0000000..4ba8a4d
256--- /dev/null
257+++ b/.gitlab-ci.d/opensbi/Dockerfile
258@@ -0,0 +1,33 @@
259+#
260+# Docker image to cross-compile OpenSBI firmware binaries
261+#
262+FROM ubuntu:18.04
263+
264+MAINTAINER Bin Meng <bmeng.cn@gmail.com>
265+
266+# Install packages required to build OpenSBI
267+RUN apt update \
268+ && \
269+ \
270+ DEBIAN_FRONTEND=noninteractive \
271+ apt install --assume-yes --no-install-recommends \
272+ build-essential \
273+ ca-certificates \
274+ git \
275+ make \
276+ wget \
277+ && \
278+ \
279+ rm -rf /var/lib/apt/lists/*
280+
281+# Manually install the kernel.org "Crosstool" based toolchains for gcc-8.3
282+RUN wget -O - \
283+ https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.3.0/x86_64-gcc-8.3.0-nolibc-riscv32-linux.tar.xz \
284+ | tar -C /opt -xJ
285+RUN wget -O - \
286+ https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.3.0/x86_64-gcc-8.3.0-nolibc-riscv64-linux.tar.xz \
287+ | tar -C /opt -xJ
288+
289+# Export the toolchains to the system path
290+ENV PATH="/opt/gcc-8.3.0-nolibc/riscv32-linux/bin:${PATH}"
291+ENV PATH="/opt/gcc-8.3.0-nolibc/riscv64-linux/bin:${PATH}"
292diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
293index be57c6a..b889fb9 100644
294--- a/.gitlab-ci.yml
295+++ b/.gitlab-ci.yml
296@@ -1,3 +1,7 @@
297+include:
298+ - local: '/.gitlab-ci-edk2.yml'
299+ - local: '/.gitlab-ci-opensbi.yml'
300+
301 before_script:
302 - apt-get update -qq
303 - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev genisoimage
304@@ -6,7 +10,9 @@ build-system1:
305 script:
306 - apt-get install -y -qq libgtk-3-dev libvte-dev nettle-dev libcacard-dev
307 libusb-dev libvde-dev libspice-protocol-dev libgl1-mesa-dev libvdeplug-dev
308- - ./configure --enable-werror --target-list="aarch64-softmmu alpha-softmmu
309+ - mkdir build
310+ - cd build
311+ - ../configure --enable-werror --target-list="aarch64-softmmu alpha-softmmu
312 cris-softmmu hppa-softmmu lm32-softmmu moxie-softmmu microblazeel-softmmu
313 mips64el-softmmu m68k-softmmu ppc-softmmu riscv64-softmmu sparc-softmmu"
314 - make -j2
315@@ -16,7 +22,10 @@ build-system2:
316 script:
317 - apt-get install -y -qq libsdl2-dev libgcrypt-dev libbrlapi-dev libaio-dev
318 libfdt-dev liblzo2-dev librdmacm-dev libibverbs-dev libibumad-dev
319- - ./configure --enable-werror --target-list="tricore-softmmu unicore32-softmmu
320+ libzstd-dev
321+ - mkdir build
322+ - cd build
323+ - ../configure --enable-werror --target-list="tricore-softmmu unicore32-softmmu
324 microblaze-softmmu mips-softmmu riscv32-softmmu s390x-softmmu sh4-softmmu
325 sparc64-softmmu x86_64-softmmu xtensa-softmmu nios2-softmmu or1k-softmmu"
326 - make -j2
327@@ -24,7 +33,9 @@ build-system2:
328
329 build-disabled:
330 script:
331- - ./configure --enable-werror --disable-rdma --disable-slirp --disable-curl
332+ - mkdir build
333+ - cd build
334+ - ../configure --enable-werror --disable-rdma --disable-slirp --disable-curl
335 --disable-capstone --disable-live-block-migration --disable-glusterfs
336 --disable-replication --disable-coroutine-pool --disable-smartcard
337 --disable-guest-agent --disable-curses --disable-libxml2 --disable-tpm
338@@ -36,32 +47,38 @@ build-disabled:
339
340 build-tcg-disabled:
341 script:
342- - apt-get install -y -qq clang libgtk-3-dev libbluetooth-dev libusb-dev
343- - ./configure --cc=clang --enable-werror --disable-tcg --audio-drv-list=""
344+ - apt-get install -y -qq clang libgtk-3-dev libusb-dev
345+ - mkdir build
346+ - cd build
347+ - ../configure --cc=clang --enable-werror --disable-tcg --audio-drv-list=""
348 - make -j2
349 - make check-unit
350 - make check-qapi-schema
351 - cd tests/qemu-iotests/
352 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
353- 052 063 077 086 101 104 106 113 147 148 150 151 152 157 159 160
354- 163 170 171 183 184 192 194 197 205 208 215 221 222 226 227 236
355- - ./check -qcow2 028 040 051 056 057 058 065 067 068 082 085 091 095 096 102
356- 122 124 127 129 132 139 142 144 145 147 151 152 155 157 165 194
357- 196 197 200 202 203 205 208 209 215 216 218 222 227 234 246 247
358- 248 250 254 255 256
359+ 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
360+ 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
361+ - ./check -qcow2 028 051 056 057 058 065 067 068 082 085 091 095 096 102 122
362+ 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
363+ 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
364+ 260 261 262 263 264 270 272 273 277 279
365
366 build-user:
367 script:
368- - ./configure --enable-werror --disable-system --disable-guest-agent
369+ - mkdir build
370+ - cd build
371+ - ../configure --enable-werror --disable-system --disable-guest-agent
372 --disable-capstone --disable-slirp --disable-fdt
373 - make -j2
374 - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
375
376 build-clang:
377 script:
378- - apt-get install -y -qq clang libsdl2-dev libattr1-dev libcap-dev
379+ - apt-get install -y -qq clang libsdl2-dev libattr1-dev libcap-ng-dev
380 xfslibs-dev libiscsi-dev libnfs-dev libseccomp-dev gnutls-dev librbd-dev
381- - ./configure --cc=clang --cxx=clang++ --enable-werror
382+ - mkdir build
383+ - cd build
384+ - ../configure --cc=clang --cxx=clang++ --enable-werror
385 --target-list="alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
386 ppc-softmmu s390x-softmmu x86_64-softmmu arm-linux-user"
387 - make -j2
388@@ -70,14 +87,18 @@ build-clang:
389 build-tci:
390 script:
391 - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
392- - ./configure --enable-tcg-interpreter
393+ - mkdir build
394+ - cd build
395+ - ../configure --enable-tcg-interpreter
396 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
397 - make -j2
398- - make tests/boot-serial-test tests/cdrom-test tests/pxe-test
399+ - make run-tcg-tests-x86_64-softmmu
400+ - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
401 - for tg in $TARGETS ; do
402 export QTEST_QEMU_BINARY="${tg}-softmmu/qemu-system-${tg}" ;
403- ./tests/boot-serial-test || exit 1 ;
404- ./tests/cdrom-test || exit 1 ;
405+ ./tests/qtest/boot-serial-test || exit 1 ;
406+ ./tests/qtest/cdrom-test || exit 1 ;
407 done
408- - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/pxe-test
409- - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x" ./tests/pxe-test -m slow
410+ - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
411+ - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
412+ ./tests/qtest/pxe-test -m slow
413diff --git a/.gitmodules b/.gitmodules
414index 19792c9..9c0501a 100644
415--- a/.gitmodules
416+++ b/.gitmodules
417@@ -10,9 +10,6 @@
418 [submodule "roms/openbios"]
419 path = roms/openbios
420 url = https://git.qemu.org/git/openbios.git
421-[submodule "roms/openhackware"]
422- path = roms/openhackware
423- url = https://git.qemu.org/git/openhackware.git
424 [submodule "roms/qemu-palcode"]
425 path = roms/qemu-palcode
426 url = https://git.qemu.org/git/qemu-palcode.git
427diff --git a/.mailmap b/.mailmap
428index 3816e4e..6412067 100644
429--- a/.mailmap
430+++ b/.mailmap
431@@ -39,11 +39,13 @@ Julia Suvorova <jusual@mail.ru> Julia Suvorova via Qemu-devel <qemu-devel@nongnu
432 Justin Terry (VM) <juterry@microsoft.com> Justin Terry (VM) via Qemu-devel <qemu-devel@nongnu.org>
433
434 # Next, replace old addresses by a more recent one.
435-Aleksandar Markovic <amarkovic@wavecomp.com> <aleksandar.markovic@mips.com>
436-Aleksandar Markovic <amarkovic@wavecomp.com> <aleksandar.markovic@imgtec.com>
437+Aleksandar Markovic <aleksandar.qemu.devel@gmail.com> <aleksandar.markovic@mips.com>
438+Aleksandar Markovic <aleksandar.qemu.devel@gmail.com> <aleksandar.markovic@imgtec.com>
439+Aleksandar Markovic <aleksandar.qemu.devel@gmail.com> <amarkovic@wavecomp.com>
440 Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com> <arikalo@wavecomp.com>
441 Anthony Liguori <anthony@codemonkey.ws> Anthony Liguori <aliguori@us.ibm.com>
442 James Hogan <jhogan@kernel.org> <james.hogan@imgtec.com>
443+Leif Lindholm <leif@nuviainc.com> <leif.lindholm@linaro.org>
444 Paul Burton <pburton@wavecomp.com> <paul.burton@mips.com>
445 Paul Burton <pburton@wavecomp.com> <paul.burton@imgtec.com>
446 Paul Burton <pburton@wavecomp.com> <paul@archlinuxmips.org>
447@@ -151,7 +153,8 @@ Xiaoqiang Zhao <zxq_yx_007@163.com>
448 Xinhua Cao <caoxinhua@huawei.com>
449 Xiong Zhang <xiong.y.zhang@intel.com>
450 Yin Yin <yin.yin@cs2c.com.cn>
451-yuchenlin <npes87184@gmail.com>
452+Yu-Chen Lin <npes87184@gmail.com>
453+Yu-Chen Lin <npes87184@gmail.com> <yuchenlin@synology.com>
454 YunQiang Su <syq@debian.org>
455 YunQiang Su <ysu@wavecomp.com>
456 Yuri Pudgorodskiy <yur@virtuozzo.com>
457diff --git a/.readthedocs.yml b/.readthedocs.yml
458new file mode 100644
459index 0000000..8355dbc
460--- /dev/null
461+++ b/.readthedocs.yml
462@@ -0,0 +1,20 @@
463+# .readthedocs.yml
464+# Read the Docs configuration file
465+# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
466+
467+# Required
468+version: 2
469+
470+# Build documentation in the docs/ directory with Sphinx
471+sphinx:
472+ configuration: docs/conf.py
473+
474+# We want all the document formats
475+formats: all
476+
477+# For consistency, we require that QEMU's Sphinx extensions
478+# run with at least the same minimum version of Python that
479+# we require for other Python in our codebase (our conf.py
480+# enforces this, and some code needs it.)
481+python:
482+ version: 3.5
483diff --git a/.shippable.yml b/.shippable.yml
484index f74a3de..2cce7b5 100644
485--- a/.shippable.yml
486+++ b/.shippable.yml
487@@ -35,5 +35,7 @@ build:
488 options: "-e HOME=/root"
489 ci:
490 - unset CC
491- - ./configure ${QEMU_CONFIGURE_OPTS} --target-list=${TARGET_LIST}
492+ - mkdir build
493+ - cd build
494+ - ../configure --disable-docs ${QEMU_CONFIGURE_OPTS} --target-list=${TARGET_LIST}
495 - make -j$(($(getconf _NPROCESSORS_ONLN) + 1))
496diff --git a/.travis.yml b/.travis.yml
497index 445b064..2fd63ec 100644
498--- a/.travis.yml
499+++ b/.travis.yml
500@@ -1,6 +1,7 @@
501 # The current Travis default is a VM based 16.04 Xenial on GCE
502 # Additional builds with specific requirements for a full VM need to
503 # be added as additional matrix: entries later on
504+os: linux
505 dist: xenial
506 language: c
507 compiler:
508@@ -26,7 +27,6 @@ addons:
509 - libaio-dev
510 - libattr1-dev
511 - libbrlapi-dev
512- - libcap-dev
513 - libcap-ng-dev
514 - libgcc-4.8-dev
515 - libgnutls28-dev
516@@ -49,16 +49,12 @@ addons:
517 - libusb-1.0-0-dev
518 - libvdeplug-dev
519 - libvte-2.91-dev
520+ - libzstd-dev
521 - sparse
522 - uuid-dev
523 - gcovr
524- homebrew:
525- packages:
526- - ccache
527- - glib
528- - pixman
529- - gnu-sed
530- update: true
531+ # Tests dependencies
532+ - genisoimage
533
534
535 # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
536@@ -74,94 +70,126 @@ notifications:
537
538 env:
539 global:
540- - SRC_DIR="."
541- - BUILD_DIR="."
542+ - SRC_DIR=".."
543+ - BUILD_DIR="build"
544 - BASE_CONFIG="--disable-docs --disable-tools"
545+ - TEST_BUILD_CMD=""
546 - TEST_CMD="make check V=1"
547 # This is broadly a list of "mainline" softmmu targets which have support across the major distros
548 - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
549 - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime"
550 - CCACHE_MAXSIZE=1G
551+ - G_MESSAGES_DEBUG=error
552
553
554 git:
555 # we want to do this ourselves
556 submodules: false
557
558+# Common first phase for all steps
559+before_install:
560+ - if command -v ccache ; then ccache --zero-stats ; fi
561+ - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1))
562+ - echo "=== Using ${JOBS} simultaneous jobs ==="
563
564+# Configure step - may be overridden
565 before_script:
566- - if [ "$TRAVIS_OS_NAME" == "osx" ] ; then export PATH="/usr/local/opt/ccache/libexec:$PATH" ; fi
567- - if command -v ccache ; then ccache --zero-stats ; fi
568 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
569 - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
570+
571+# Main build & test - rarely overridden - controlled by TEST_CMD
572 script:
573- - make -j3 && travis_retry ${TEST_CMD}
574+ - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
575+ - |
576+ if [ "$BUILD_RC" -eq 0 ] && [ -n "$TEST_BUILD_CMD" ]; then
577+ ${TEST_BUILD_CMD} || BUILD_RC=$?
578+ else
579+ $(exit $BUILD_RC);
580+ fi
581+ - |
582+ if [ "$BUILD_RC" -eq 0 ] ; then
583+ ${TEST_CMD} ;
584+ else
585+ $(exit $BUILD_RC);
586+ fi
587 after_script:
588 - if command -v ccache ; then ccache --show-stats ; fi
589
590
591-matrix:
592+jobs:
593 include:
594- - env:
595+ - name: "GCC static (user)"
596+ env:
597 - CONFIG="--disable-system --static"
598 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
599
600
601 # we split the system builds as it takes a while to build them all
602- - env:
603+ - name: "GCC (main-softmmu)"
604+ env:
605 - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
606 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
607
608
609- - env:
610- - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
611+ - name: "GCC (other-softmmu)"
612+ env:
613+ - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
614 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
615
616
617 # Just build tools and run minimal unit and softfloat checks
618- - env:
619+ - name: "GCC check-softfloat (user)"
620+ env:
621 - BASE_CONFIG="--enable-tools"
622 - CONFIG="--disable-user --disable-system"
623- - TEST_CMD="make check-unit check-softfloat -j3"
624+ - TEST_CMD="make check-unit check-softfloat -j${JOBS}"
625 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
626
627
628 # --enable-debug implies --enable-debug-tcg, also runs quite a bit slower
629- - env:
630+ - name: "GCC debug (main-softmmu)"
631+ env:
632 - CONFIG="--enable-debug --target-list=${MAIN_SOFTMMU_TARGETS}"
633 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug"
634
635
636 # TCG debug can be run just on its own and is mostly agnostic to user/softmmu distinctions
637- - env:
638+ - name: "GCC debug (user)"
639+ env:
640 - CONFIG="--enable-debug-tcg --disable-system"
641 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
642
643
644- - env:
645+ - name: "GCC some libs disabled (main-softmmu)"
646+ env:
647 - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
648
649
650 # Module builds are mostly of interest to major distros
651- - env:
652+ - name: "GCC modules (main-softmmu)"
653+ env:
654 - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
655 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
656
657
658 # Alternate coroutines implementations are only really of interest to KVM users
659 # However we can't test against KVM on Travis so we can only run unit tests
660- - env:
661+ - name: "check-unit coroutine=ucontext"
662+ env:
663 - CONFIG="--with-coroutine=ucontext --disable-tcg"
664- - TEST_CMD="make check-unit -j3 V=1"
665+ - TEST_CMD="make check-unit -j${JOBS} V=1"
666
667
668- - env:
669+ - name: "check-unit coroutine=sigaltstack"
670+ env:
671 - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
672- - TEST_CMD="make check-unit -j3 V=1"
673+ - TEST_CMD="make check-unit -j${JOBS} V=1"
674
675
676 # Check we can build docs and tools (out of tree)
677- - env:
678+ - name: "tools and docs (bionic)"
679+ dist: bionic
680+ env:
681 - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
682 - BASE_CONFIG="--enable-tools --enable-docs"
683 - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
684@@ -169,118 +197,147 @@ matrix:
685 addons:
686 apt:
687 packages:
688- - python-sphinx
689+ - python3-sphinx
690 - texinfo
691 - perl
692
693
694 # Test with Clang for compile portability (Travis uses clang-5.0)
695- - env:
696+ - name: "Clang (user)"
697+ env:
698 - CONFIG="--disable-system"
699 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default"
700 compiler: clang
701
702
703- - env:
704- - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
705- - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default"
706- compiler: clang
707-
708-
709- - env:
710+ - name: "Clang (main-softmmu)"
711+ env:
712 - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} "
713 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-sanitize"
714 compiler: clang
715 before_script:
716- - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
717+ - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
718+ - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
719
720
721- - env:
722+ - name: "Clang (other-softmmu)"
723+ env:
724 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
725 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default"
726 compiler: clang
727
728
729 # gprof/gcov are GCC features
730- - env:
731+ - name: "GCC gprof/gcov"
732+ env:
733 - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
734 after_success:
735 - ${SRC_DIR}/scripts/travis/coverage-summary.sh
736
737
738 # We manually include builds which we disable "make check" for
739- - env:
740+ - name: "GCC without-default-devices (softmmu)"
741+ env:
742 - CONFIG="--without-default-devices --disable-user"
743 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
744 - TEST_CMD=""
745
746
747- # We manually include builds which we disable "make check" for
748- - env:
749- - CONFIG="--enable-debug --enable-tcg-interpreter"
750- - TEST_CMD=""
751+ # Check the TCG interpreter (TCI)
752+ - name: "GCC TCI"
753+ env:
754+ - CONFIG="--enable-debug-tcg --enable-tcg-interpreter --disable-kvm --disable-containers
755+ --target-list=alpha-softmmu,arm-softmmu,hppa-softmmu,m68k-softmmu,microblaze-softmmu,moxie-softmmu,ppc-softmmu,s390x-softmmu,x86_64-softmmu"
756+ - TEST_CMD="make check-qtest check-tcg V=1"
757
758
759 # We don't need to exercise every backend with every front-end
760- - env:
761+ - name: "GCC trace log,simple,syslog (user)"
762+ env:
763 - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
764 - TEST_CMD=""
765
766
767- - env:
768+ - name: "GCC trace ftrace (x86_64-softmmu)"
769+ env:
770 - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
771 - TEST_CMD=""
772
773
774- - env:
775+ - name: "GCC trace ust (x86_64-softmmu)"
776+ env:
777 - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
778 - TEST_CMD=""
779
780
781 # MacOSX builds - cirrus.yml also tests some MacOS builds including latest Xcode
782
783- - env:
784+ - name: "OSX Xcode 10.3"
785+ env:
786+ - BASE_CONFIG="--disable-docs --enable-tools"
787 - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
788 os: osx
789 osx_image: xcode10.3
790 compiler: clang
791+ addons:
792+ homebrew:
793+ packages:
794+ - ccache
795+ - glib
796+ - pixman
797+ - gnu-sed
798+ - python
799+ update: true
800+ before_script:
801+ - brew link --overwrite python
802+ - export PATH="/usr/local/opt/ccache/libexec:$PATH"
803+ - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
804+ - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
805
806
807 # Python builds
808- - env:
809+ - name: "GCC Python 3.5 (x86_64-softmmu)"
810+ env:
811 - CONFIG="--target-list=x86_64-softmmu"
812 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
813 language: python
814- python:
815- - "3.4"
816+ python: 3.5
817
818
819- - env:
820+ - name: "GCC Python 3.6 (x86_64-softmmu)"
821+ env:
822 - CONFIG="--target-list=x86_64-softmmu"
823 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
824 language: python
825- python:
826- - "3.6"
827+ python: 3.6
828
829
830 # Acceptance (Functional) tests
831- - env:
832- - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,aarch64-softmmu,arm-softmmu,s390x-softmmu,alpha-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,sparc-softmmu"
833+ - name: "GCC check-acceptance"
834+ dist: bionic
835+ env:
836+ - CONFIG="--enable-tools --target-list=aarch64-softmmu,alpha-softmmu,arm-softmmu,m68k-softmmu,microblaze-softmmu,mips-softmmu,mips64el-softmmu,nios2-softmmu,or1k-softmmu,ppc-softmmu,ppc64-softmmu,s390x-softmmu,sparc-softmmu,x86_64-softmmu,xtensa-softmmu"
837 - TEST_CMD="make check-acceptance"
838- after_failure:
839- - cat tests/results/latest/job.log
840+ - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-acceptance"
841+ after_script:
842+ - python3 -c 'import json; r = json.load(open("tests/results/latest/results.json")); [print(t["logfile"]) for t in r["tests"] if t["status"] not in ("PASS", "SKIP")]' | xargs cat
843+ - du -chs $HOME/avocado/data/cache
844 addons:
845 apt:
846 packages:
847 - python3-pil
848 - python3-pip
849- - python3.5-venv
850+ - python3-numpy
851+ - python3-opencv
852+ - python3-venv
853+ - rpm2cpio
854 - tesseract-ocr
855 - tesseract-ocr-eng
856
857
858 # Using newer GCC with sanitizers
859- - addons:
860+ - name: "GCC9 with sanitizers (softmmu)"
861+ addons:
862 apt:
863 update: true
864 sources:
865@@ -323,56 +380,212 @@ matrix:
866 - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user"
867 - TEST_CMD=""
868 before_script:
869- - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
870+ - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
871+ - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread" --extra-ldflags="-fuse-ld=gold" || { cat config.log && exit 1; }
872
873
874 # Run check-tcg against linux-user
875- - env:
876+ - name: "GCC check-tcg (user)"
877+ env:
878 - CONFIG="--disable-system --enable-debug-tcg"
879- - TEST_CMD="make -j3 check-tcg V=1"
880+ - TEST_BUILD_CMD="make build-tcg"
881+ - TEST_CMD="make check-tcg"
882 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
883
884
885 # Run check-tcg against linux-user (with plugins)
886 # we skip sparc64-linux-user until it has been fixed somewhat
887- - env:
888- - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user"
889- - TEST_CMD="make -j3 check-tcg V=1"
890+ # we skip cris-linux-user as it doesn't use the common run loop
891+ - name: "GCC plugins check-tcg (user)"
892+ env:
893+ - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user"
894+ - TEST_BUILD_CMD="make build-tcg"
895+ - TEST_CMD="make check-tcg"
896 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
897
898
899 # Run check-tcg against softmmu targets
900- - env:
901+ - name: "GCC check-tcg (some-softmmu)"
902+ env:
903 - CONFIG="--enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
904- - TEST_CMD="make -j3 check-tcg V=1"
905+ - TEST_BUILD_CMD="make build-tcg"
906+ - TEST_CMD="make check-tcg"
907 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
908
909
910 # Run check-tcg against softmmu targets (with plugins)
911- - env:
912+ - name: "GCC plugins check-tcg (some-softmmu)"
913+ env:
914 - CONFIG="--enable-plugins --enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
915- - TEST_CMD="make -j3 check-tcg V=1"
916+ - TEST_BUILD_CMD="make build-tcg"
917+ - TEST_CMD="make check-tcg"
918 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
919
920+ - name: "[aarch64] GCC check-tcg"
921+ arch: arm64
922+ dist: xenial
923+ addons:
924+ apt_packages:
925+ - libaio-dev
926+ - libattr1-dev
927+ - libbrlapi-dev
928+ - libcap-ng-dev
929+ - libgcrypt20-dev
930+ - libgnutls28-dev
931+ - libgtk-3-dev
932+ - libiscsi-dev
933+ - liblttng-ust-dev
934+ - libncurses5-dev
935+ - libnfs-dev
936+ - libnss3-dev
937+ - libpixman-1-dev
938+ - libpng-dev
939+ - librados-dev
940+ - libsdl2-dev
941+ - libseccomp-dev
942+ - liburcu-dev
943+ - libusb-1.0-0-dev
944+ - libvdeplug-dev
945+ - libvte-2.91-dev
946+ # Tests dependencies
947+ - genisoimage
948+ env:
949+ - TEST_CMD="make check check-tcg V=1"
950+ - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS}"
951+
952+ - name: "[ppc64] GCC check-tcg"
953+ arch: ppc64le
954+ dist: xenial
955+ addons:
956+ apt_packages:
957+ - libaio-dev
958+ - libattr1-dev
959+ - libbrlapi-dev
960+ - libcap-ng-dev
961+ - libgcrypt20-dev
962+ - libgnutls28-dev
963+ - libgtk-3-dev
964+ - libiscsi-dev
965+ - liblttng-ust-dev
966+ - libncurses5-dev
967+ - libnfs-dev
968+ - libnss3-dev
969+ - libpixman-1-dev
970+ - libpng-dev
971+ - librados-dev
972+ - libsdl2-dev
973+ - libseccomp-dev
974+ - liburcu-dev
975+ - libusb-1.0-0-dev
976+ - libvdeplug-dev
977+ - libvte-2.91-dev
978+ # Tests dependencies
979+ - genisoimage
980+ env:
981+ - TEST_CMD="make check check-tcg V=1"
982+ - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},ppc64le-linux-user"
983+
984+ - name: "[s390x] GCC check-tcg"
985+ arch: s390x
986+ dist: bionic
987+ addons:
988+ apt_packages:
989+ - libaio-dev
990+ - libattr1-dev
991+ - libbrlapi-dev
992+ - libcap-ng-dev
993+ - libgcrypt20-dev
994+ - libgnutls28-dev
995+ - libgtk-3-dev
996+ - libiscsi-dev
997+ - liblttng-ust-dev
998+ - libncurses5-dev
999+ - libnfs-dev
1000+ - libnss3-dev
1001+ - libpixman-1-dev
1002+ - libpng-dev
1003+ - librados-dev
1004+ - libsdl2-dev
1005+ - libseccomp-dev
1006+ - liburcu-dev
1007+ - libusb-1.0-0-dev
1008+ - libvdeplug-dev
1009+ - libvte-2.91-dev
1010+ # Tests dependencies
1011+ - genisoimage
1012+ env:
1013+ - TEST_CMD="make check check-tcg V=1"
1014+ - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user"
1015+ script:
1016+ - ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
1017+ - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
1018+ - |
1019+ if [ "$BUILD_RC" -eq 0 ] ; then
1020+ mv pc-bios/s390-ccw/*.img pc-bios/ ;
1021+ ${TEST_CMD} ;
1022+ else
1023+ $(exit $BUILD_RC);
1024+ fi
1025+
1026+ - name: "[s390x] GCC check (KVM)"
1027+ arch: s390x
1028+ dist: bionic
1029+ addons:
1030+ apt_packages:
1031+ - libaio-dev
1032+ - libattr1-dev
1033+ - libbrlapi-dev
1034+ - libcap-ng-dev
1035+ - libgcrypt20-dev
1036+ - libgnutls28-dev
1037+ - libgtk-3-dev
1038+ - libiscsi-dev
1039+ - liblttng-ust-dev
1040+ - libncurses5-dev
1041+ - libnfs-dev
1042+ - libnss3-dev
1043+ - libpixman-1-dev
1044+ - libpng-dev
1045+ - librados-dev
1046+ - libsdl2-dev
1047+ - libseccomp-dev
1048+ - liburcu-dev
1049+ - libusb-1.0-0-dev
1050+ - libvdeplug-dev
1051+ - libvte-2.91-dev
1052+ # Tests dependencies
1053+ - genisoimage
1054+ env:
1055+ - TEST_CMD="make check-unit"
1056+ - CONFIG="--disable-containers --disable-tcg --enable-kvm --disable-tools"
1057+ script:
1058+ - ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
1059+ - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
1060+ - |
1061+ if [ "$BUILD_RC" -eq 0 ] ; then
1062+ mv pc-bios/s390-ccw/*.img pc-bios/ ;
1063+ ${TEST_CMD} ;
1064+ else
1065+ $(exit $BUILD_RC);
1066+ fi
1067
1068 # Release builds
1069 # The make-release script expect a QEMU version, so our tag must start with a 'v'.
1070 # This is the case when release candidate tags are created.
1071- - if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/
1072+ - name: "Release tarball"
1073+ if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/
1074 env:
1075 # We want to build from the release tarball
1076 - BUILD_DIR="release/build/dir" SRC_DIR="../../.."
1077 - BASE_CONFIG="--prefix=$PWD/dist"
1078 - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user"
1079- - TEST_CMD="make install -j3"
1080+ - TEST_CMD="make install -j${JOBS}"
1081 - QEMU_VERSION="${TRAVIS_TAG:1}"
1082 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
1083- before_script:
1084- - command -v ccache && ccache --zero-stats
1085- - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
1086 script:
1087 - make -C ${SRC_DIR} qemu-${QEMU_VERSION}.tar.bz2
1088 - ls -l ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2
1089 - tar -xf ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION}
1090- - ./configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
1091+ - mkdir -p release-build && cd release-build
1092+ - ../configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
1093 - make install
1094diff --git a/Kconfig.host b/Kconfig.host
1095index bb6e116..55136e0 100644
1096--- a/Kconfig.host
1097+++ b/Kconfig.host
1098@@ -25,6 +25,11 @@ config TPM
1099
1100 config VHOST_USER
1101 bool
1102+ select VHOST
1103+
1104+config VHOST_KERNEL
1105+ bool
1106+ select VHOST
1107
1108 config XEN
1109 bool
1110diff --git a/MAINTAINERS b/MAINTAINERS
1111index 5e5e3e5..8cbc1fa 100644
1112--- a/MAINTAINERS
1113+++ b/MAINTAINERS
1114@@ -101,7 +101,8 @@ F: include/hw/watchdog/wdt_diag288.h
1115 F: pc-bios/s390-ccw/
1116 F: pc-bios/s390-ccw.img
1117 F: target/s390x/
1118-F: docs/vfio-ap.txt
1119+F: docs/system/target-s390x.rst
1120+F: docs/system/s390x/
1121 F: tests/migration/s390x/
1122 K: ^Subject:.*(?i)s390x?
1123 T: git https://github.com/cohuck/qemu.git s390-next
1124@@ -155,6 +156,7 @@ F: include/hw/cpu/a*mpcore.h
1125 F: disas/arm.c
1126 F: disas/arm-a64.cc
1127 F: disas/libvixl/
1128+F: docs/system/target-arm.rst
1129
1130 ARM SMMU
1131 M: Eric Auger <eric.auger@redhat.com>
1132@@ -178,6 +180,8 @@ S: Maintained
1133 F: target/hppa/
1134 F: hw/hppa/
1135 F: disas/hppa.c
1136+F: hw/net/*i82596*
1137+F: include/hw/net/lasi_82596.h
1138
1139 LM32 TCG CPUs
1140 M: Michael Walle <michael@walle.cc>
1141@@ -206,13 +210,14 @@ F: hw/microblaze/
1142 F: disas/microblaze.c
1143
1144 MIPS TCG CPUs
1145-M: Aurelien Jarno <aurelien@aurel32.net>
1146-M: Aleksandar Markovic <amarkovic@wavecomp.com>
1147+M: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
1148+R: Aurelien Jarno <aurelien@aurel32.net>
1149 R: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
1150 S: Maintained
1151 F: target/mips/
1152 F: default-configs/*mips*
1153 F: disas/*mips*
1154+F: docs/system/cpu-models-mips.rst.inc
1155 F: hw/intc/mips_gic.c
1156 F: hw/mips/
1157 F: hw/misc/mips_*
1158@@ -221,6 +226,8 @@ F: include/hw/intc/mips_gic.h
1159 F: include/hw/mips/
1160 F: include/hw/misc/mips_*
1161 F: include/hw/timer/mips_gictimer.h
1162+F: tests/acceptance/linux_ssh_mips_malta.py
1163+F: tests/acceptance/machine_mips_malta.py
1164 F: tests/tcg/mips/
1165 K: ^Subject:.*(?i)mips
1166
1167@@ -271,6 +278,11 @@ F: include/hw/riscv/
1168 F: linux-user/host/riscv32/
1169 F: linux-user/host/riscv64/
1170
1171+RENESAS RX CPUs
1172+M: Yoshinori Sato <ysato@users.sourceforge.jp>
1173+S: Maintained
1174+F: target/rx/
1175+
1176 S390 TCG CPUs
1177 M: Richard Henderson <rth@twiddle.net>
1178 M: David Hildenbrand <david@redhat.com>
1179@@ -316,7 +328,7 @@ F: tests/tcg/i386/
1180 F: tests/tcg/x86_64/
1181 F: hw/i386/
1182 F: disas/i386.c
1183-F: docs/qemu-cpu-models.texi
1184+F: docs/system/cpu-models-x86.rst.inc
1185 T: git https://github.com/ehabkost/qemu.git x86-next
1186
1187 Xtensa TCG CPUs
1188@@ -362,9 +374,8 @@ S: Maintained
1189 F: target/arm/kvm.c
1190
1191 MIPS KVM CPUs
1192-M: James Hogan <jhogan@kernel.org>
1193-R: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
1194-S: Maintained
1195+M: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
1196+S: Odd Fixes
1197 F: target/mips/kvm.c
1198
1199 PPC KVM CPUs
1200@@ -401,6 +412,21 @@ S: Supported
1201 F: target/i386/kvm.c
1202 F: scripts/kvm/vmxcap
1203
1204+X86 HVF CPUs
1205+M: Roman Bolshakov <r.bolshakov@yadro.com>
1206+S: Maintained
1207+F: accel/stubs/hvf-stub.c
1208+F: target/i386/hvf/
1209+F: include/sysemu/hvf.h
1210+
1211+WHPX CPUs
1212+M: Sunil Muthuswamy <sunilmut@microsoft.com>
1213+S: Supported
1214+F: target/i386/whpx-all.c
1215+F: target/i386/whp-dispatch.h
1216+F: accel/stubs/whpx-stub.c
1217+F: include/sysemu/whpx.h
1218+
1219 Guest CPU Cores (Xen)
1220 ---------------------
1221 X86 Xen CPUs
1222@@ -414,15 +440,28 @@ F: hw/9pfs/xen-9p*
1223 F: hw/char/xen_console.c
1224 F: hw/display/xenfb.c
1225 F: hw/net/xen_nic.c
1226+F: hw/usb/xen-usb.c
1227 F: hw/block/xen*
1228 F: hw/block/dataplane/xen*
1229 F: hw/xen/
1230 F: hw/xenpv/
1231 F: hw/i386/xen/
1232+F: hw/pci-host/xen_igd_pt.c
1233 F: include/hw/block/dataplane/xen*
1234 F: include/hw/xen/
1235 F: include/sysemu/xen-mapcache.h
1236
1237+Guest CPU Cores (HAXM)
1238+---------------------
1239+X86 HAXM CPUs
1240+M: Wenchao Wang <wenchao.wang@intel.com>
1241+M: Colin Xu <colin.xu@intel.com>
1242+L: haxm-team@intel.com
1243+W: https://github.com/intel/haxm/issues
1244+S: Maintained
1245+F: include/sysemu/hax.h
1246+F: target/i386/hax-*
1247+
1248 Hosts
1249 -----
1250 LINUX
1251@@ -479,6 +518,15 @@ F: hw/*/allwinner*
1252 F: include/hw/*/allwinner*
1253 F: hw/arm/cubieboard.c
1254
1255+Allwinner-h3
1256+M: Niek Linnenbank <nieklinnenbank@gmail.com>
1257+L: qemu-arm@nongnu.org
1258+S: Maintained
1259+F: hw/*/allwinner-h3*
1260+F: include/hw/*/allwinner-h3*
1261+F: hw/arm/orangepi.c
1262+F: docs/system/orangepi.rst
1263+
1264 ARM PrimeCell and CMSDK devices
1265 M: Peter Maydell <peter.maydell@linaro.org>
1266 L: qemu-arm@nongnu.org
1267@@ -531,7 +579,7 @@ F: include/hw/misc/arm11scu.h
1268 F: include/hw/timer/a9gtimer.h
1269 F: include/hw/timer/arm_mptimer.h
1270 F: include/hw/timer/armv7m_systick.h
1271-F: tests/test-arm-mptimer.c
1272+F: tests/qtest/test-arm-mptimer.c
1273
1274 Exynos
1275 M: Igor Mitsyanko <i.mitsyanko@gmail.com>
1276@@ -558,6 +606,14 @@ F: include/hw/arm/digic.h
1277 F: hw/*/digic*
1278 F: include/hw/*/digic*
1279
1280+Goldfish RTC
1281+M: Anup Patel <anup.patel@wdc.com>
1282+M: Alistair Francis <Alistair.Francis@wdc.com>
1283+L: qemu-riscv@nongnu.org
1284+S: Maintained
1285+F: hw/rtc/goldfish_rtc.c
1286+F: include/hw/rtc/goldfish_rtc.h
1287+
1288 Gumstix
1289 M: Peter Maydell <peter.maydell@linaro.org>
1290 R: Philippe Mathieu-Daudé <f4bug@amsat.org>
1291@@ -594,6 +650,8 @@ S: Maintained
1292 F: hw/arm/integratorcp.c
1293 F: hw/misc/arm_integrator_debug.c
1294 F: include/hw/misc/arm_integrator_debug.h
1295+F: tests/acceptance/machine_arm_integratorcp.py
1296+F: docs/system/arm/integratorcp.rst
1297
1298 MCIMX6UL EVK / i.MX6ul
1299 M: Peter Maydell <peter.maydell@linaro.org>
1300@@ -652,6 +710,7 @@ M: Peter Maydell <peter.maydell@linaro.org>
1301 L: qemu-arm@nongnu.org
1302 S: Odd Fixes
1303 F: hw/arm/musicpal.c
1304+F: docs/system/arm/musicpal.rst
1305
1306 nSeries
1307 M: Andrzej Zaborowski <balrogg@gmail.com>
1308@@ -667,6 +726,8 @@ F: hw/rtc/twl92230.c
1309 F: include/hw/display/blizzard.h
1310 F: include/hw/input/tsc2xxx.h
1311 F: include/hw/misc/cbus.h
1312+F: tests/acceptance/machine_arm_n8x0.py
1313+F: docs/system/arm/nseries.rst
1314
1315 Palm
1316 M: Andrzej Zaborowski <balrogg@gmail.com>
1317@@ -676,6 +737,7 @@ S: Odd Fixes
1318 F: hw/arm/palm.c
1319 F: hw/input/tsc210x.c
1320 F: include/hw/input/tsc2xxx.h
1321+F: docs/system/arm/palm.rst
1322
1323 Raspberry Pi
1324 M: Peter Maydell <peter.maydell@linaro.org>
1325@@ -697,6 +759,7 @@ F: hw/arm/realview*
1326 F: hw/cpu/realview_mpcore.c
1327 F: hw/intc/realview_gic.c
1328 F: include/hw/intc/realview_gic.h
1329+F: docs/system/arm/realview.rst
1330
1331 PXA2XX
1332 M: Andrzej Zaborowski <balrogg@gmail.com>
1333@@ -716,6 +779,7 @@ F: hw/misc/max111x.c
1334 F: include/hw/arm/pxa.h
1335 F: include/hw/arm/sharpsl.h
1336 F: include/hw/display/tc6393xb.h
1337+F: docs/system/arm/xscale.rst
1338
1339 SABRELITE / i.MX6
1340 M: Peter Maydell <peter.maydell@linaro.org>
1341@@ -726,6 +790,8 @@ F: hw/arm/sabrelite.c
1342 F: hw/arm/fsl-imx6.c
1343 F: hw/misc/imx6_*.c
1344 F: hw/ssi/imx_spi.c
1345+F: hw/usb/imx-usb-phy.c
1346+F: include/hw/usb/imx-usb-phy.h
1347 F: include/hw/arm/fsl-imx6.h
1348 F: include/hw/misc/imx6_*.h
1349 F: include/hw/ssi/imx_spi.h
1350@@ -733,7 +799,7 @@ F: include/hw/ssi/imx_spi.h
1351 SBSA-REF
1352 M: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
1353 M: Peter Maydell <peter.maydell@linaro.org>
1354-R: Leif Lindholm <leif.lindholm@linaro.org>
1355+R: Leif Lindholm <leif@nuviainc.com>
1356 L: qemu-arm@nongnu.org
1357 S: Maintained
1358 F: hw/arm/sbsa-ref.c
1359@@ -751,6 +817,7 @@ L: qemu-arm@nongnu.org
1360 S: Maintained
1361 F: hw/*/stellaris*
1362 F: include/hw/input/gamepad.h
1363+F: docs/system/arm/stellaris.rst
1364
1365 Versatile Express
1366 M: Peter Maydell <peter.maydell@linaro.org>
1367@@ -764,6 +831,7 @@ L: qemu-arm@nongnu.org
1368 S: Maintained
1369 F: hw/*/versatile*
1370 F: hw/misc/arm_sysctl.c
1371+F: docs/system/arm/versatile.rst
1372
1373 Virt
1374 M: Peter Maydell <peter.maydell@linaro.org>
1375@@ -805,6 +873,7 @@ F: hw/arm/virt-acpi-build.c
1376 STM32F205
1377 M: Alistair Francis <alistair@alistair23.me>
1378 M: Peter Maydell <peter.maydell@linaro.org>
1379+L: qemu-arm@nongnu.org
1380 S: Maintained
1381 F: hw/arm/stm32f205_soc.c
1382 F: hw/misc/stm32f2xx_syscfg.c
1383@@ -814,15 +883,33 @@ F: hw/adc/*
1384 F: hw/ssi/stm32f2xx_spi.c
1385 F: include/hw/*/stm32*.h
1386
1387+STM32F405
1388+M: Alistair Francis <alistair@alistair23.me>
1389+M: Peter Maydell <peter.maydell@linaro.org>
1390+L: qemu-arm@nongnu.org
1391+S: Maintained
1392+F: hw/arm/stm32f405_soc.c
1393+F: hw/misc/stm32f4xx_syscfg.c
1394+F: hw/misc/stm32f4xx_exti.c
1395+
1396 Netduino 2
1397 M: Alistair Francis <alistair@alistair23.me>
1398 M: Peter Maydell <peter.maydell@linaro.org>
1399+L: qemu-arm@nongnu.org
1400 S: Maintained
1401 F: hw/arm/netduino2.c
1402
1403+Netduino Plus 2
1404+M: Alistair Francis <alistair@alistair23.me>
1405+M: Peter Maydell <peter.maydell@linaro.org>
1406+L: qemu-arm@nongnu.org
1407+S: Maintained
1408+F: hw/arm/netduinoplus2.c
1409+
1410 SmartFusion2
1411 M: Subbaraya Sundeep <sundeep.lkml@gmail.com>
1412 M: Peter Maydell <peter.maydell@linaro.org>
1413+L: qemu-arm@nongnu.org
1414 S: Maintained
1415 F: hw/arm/msf2-soc.c
1416 F: hw/misc/msf2-sysreg.c
1417@@ -836,6 +923,7 @@ F: include/hw/ssi/mss-spi.h
1418 Emcraft M2S-FG484
1419 M: Subbaraya Sundeep <sundeep.lkml@gmail.com>
1420 M: Peter Maydell <peter.maydell@linaro.org>
1421+L: qemu-arm@nongnu.org
1422 S: Maintained
1423 F: hw/arm/msf2-som.c
1424
1425@@ -862,7 +950,7 @@ F: hw/*/nrf51*.c
1426 F: hw/*/microbit*.c
1427 F: include/hw/*/nrf51*.h
1428 F: include/hw/*/microbit*.h
1429-F: tests/microbit-test.c
1430+F: tests/qtest/microbit-test.c
1431
1432 CRIS Machines
1433 -------------
1434@@ -874,10 +962,11 @@ F: hw/*/etraxfs_*.c
1435
1436 HP-PARISC Machines
1437 ------------------
1438-Dino
1439+HP B160L
1440 M: Richard Henderson <rth@twiddle.net>
1441 R: Helge Deller <deller@gmx.de>
1442 S: Odd Fixes
1443+F: default-configs/hppa-softmmu.mak
1444 F: hw/hppa/
1445 F: pc-bios/hppa-firmware.img
1446
1447@@ -955,29 +1044,35 @@ F: hw/display/jazz_led.c
1448 F: hw/dma/rc4030.c
1449
1450 Malta
1451-M: Aurelien Jarno <aurelien@aurel32.net>
1452-R: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
1453+M: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
1454+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
1455+R: Aurelien Jarno <aurelien@aurel32.net>
1456 S: Maintained
1457+F: hw/isa/piix4.c
1458+F: hw/acpi/piix4.c
1459 F: hw/mips/mips_malta.c
1460 F: hw/mips/gt64xxx_pci.c
1461+F: include/hw/southbridge/piix.h
1462 F: tests/acceptance/linux_ssh_mips_malta.py
1463+F: tests/acceptance/machine_mips_malta.py
1464
1465 Mipssim
1466-M: Aleksandar Markovic <amarkovic@wavecomp.com>
1467+M: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
1468 R: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
1469 S: Odd Fixes
1470 F: hw/mips/mips_mipssim.c
1471 F: hw/net/mipsnet.c
1472
1473 R4000
1474-M: Aurelien Jarno <aurelien@aurel32.net>
1475+M: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
1476+R: Aurelien Jarno <aurelien@aurel32.net>
1477 R: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
1478-S: Maintained
1479+S: Obsolete
1480 F: hw/mips/mips_r4k.c
1481
1482 Fulong 2E
1483-M: Aleksandar Markovic <amarkovic@wavecomp.com>
1484-R: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
1485+M: Philippe Mathieu-Daudé <f4bug@amsat.org>
1486+M: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
1487 S: Odd Fixes
1488 F: hw/mips/mips_fulong2e.c
1489 F: hw/isa/vt82c686.c
1490@@ -1081,7 +1176,6 @@ F: hw/dma/i82374.c
1491 F: hw/rtc/m48t59-isa.c
1492 F: include/hw/isa/pc87312.h
1493 F: include/hw/rtc/m48t59.h
1494-F: pc-bios/ppc_rom.bin
1495 F: tests/acceptance/ppc_prep_40p.py
1496
1497 sPAPR
1498@@ -1095,10 +1189,10 @@ F: include/hw/*/xics*
1499 F: pc-bios/slof.bin
1500 F: docs/specs/ppc-spapr-hcalls.txt
1501 F: docs/specs/ppc-spapr-hotplug.txt
1502-F: tests/spapr*
1503-F: tests/libqos/*spapr*
1504-F: tests/rtas*
1505-F: tests/libqos/rtas*
1506+F: tests/qtest/spapr*
1507+F: tests/qtest/libqos/*spapr*
1508+F: tests/qtest/rtas*
1509+F: tests/qtest/libqos/rtas*
1510
1511 PowerNV (Non-Virtualized)
1512 M: Cédric Le Goater <clg@kaod.org>
1513@@ -1110,7 +1204,7 @@ F: hw/intc/pnv*
1514 F: hw/intc/xics_pnv.c
1515 F: include/hw/ppc/pnv*
1516 F: pc-bios/skiboot.lid
1517-F: tests/pnv*
1518+F: tests/qtest/pnv*
1519
1520 virtex_ml507
1521 M: Edgar E. Iglesias <edgar.iglesias@gmail.com>
1522@@ -1215,7 +1309,7 @@ S: Supported
1523 F: hw/s390x/ipl.*
1524 F: pc-bios/s390-ccw/
1525 F: pc-bios/s390-ccw.img
1526-F: docs/devel/s390-dasd-ipl.txt
1527+F: docs/devel/s390-dasd-ipl.rst
1528 T: git https://github.com/borntraeger/qemu.git s390-next
1529 L: qemu-s390x@nongnu.org
1530
1531@@ -1258,7 +1352,7 @@ F: hw/misc/sga.c
1532 F: hw/isa/apm.c
1533 F: include/hw/isa/apm.h
1534 F: tests/test-x86-cpuid.c
1535-F: tests/test-x86-cpuid-compat.c
1536+F: tests/qtest/test-x86-cpuid-compat.c
1537
1538 PC Chipset
1539 M: Michael S. Tsirkin <mst@redhat.com>
1540@@ -1354,10 +1448,10 @@ F: hw/ide/
1541 F: hw/block/block.c
1542 F: hw/block/cdrom.c
1543 F: hw/block/hd-geometry.c
1544-F: tests/ide-test.c
1545-F: tests/ahci-test.c
1546-F: tests/cdrom-test.c
1547-F: tests/libqos/ahci*
1548+F: tests/qtest/ide-test.c
1549+F: tests/qtest/ahci-test.c
1550+F: tests/qtest/cdrom-test.c
1551+F: tests/qtest/libqos/ahci*
1552 T: git https://github.com/jnsnow/qemu.git ide
1553
1554 IPMI
1555@@ -1366,7 +1460,7 @@ S: Maintained
1556 F: include/hw/ipmi/*
1557 F: hw/ipmi/*
1558 F: hw/smbios/smbios_type_38.c
1559-F: tests/ipmi*
1560+F: tests/qtest/ipmi*
1561 T: git https://github.com/cminyard/qemu.git master-ipmi-rebase
1562
1563 Floppy
1564@@ -1375,11 +1469,12 @@ L: qemu-block@nongnu.org
1565 S: Supported
1566 F: hw/block/fdc.c
1567 F: include/hw/block/fdc.h
1568-F: tests/fdc-test.c
1569+F: tests/qtest/fdc-test.c
1570 T: git https://github.com/jnsnow/qemu.git ide
1571
1572 OMAP
1573 M: Peter Maydell <peter.maydell@linaro.org>
1574+L: qemu-arm@nongnu.org
1575 S: Maintained
1576 F: hw/*/omap*
1577 F: include/hw/arm/omap.h
1578@@ -1413,8 +1508,8 @@ F: hw/acpi/*
1579 F: hw/smbios/*
1580 F: hw/i386/acpi-build.[hc]
1581 F: hw/arm/virt-acpi-build.c
1582-F: tests/bios-tables-test.c
1583-F: tests/acpi-utils.[hc]
1584+F: tests/qtest/bios-tables-test.c
1585+F: tests/qtest/acpi-utils.[hc]
1586 F: tests/data/acpi/
1587
1588 ppc4xx
1589@@ -1437,7 +1532,7 @@ M: Jason Wang <jasowang@redhat.com>
1590 S: Odd Fixes
1591 F: hw/net/
1592 F: include/hw/net/
1593-F: tests/virtio-net-test.c
1594+F: tests/qtest/virtio-net-test.c
1595 F: docs/virtio-net-failover.rst
1596 T: git https://github.com/jasowang/qemu.git net
1597
1598@@ -1454,7 +1549,7 @@ R: Fam Zheng <fam@euphon.net>
1599 S: Supported
1600 F: include/hw/scsi/*
1601 F: hw/scsi/*
1602-F: tests/virtio-scsi-test.c
1603+F: tests/qtest/virtio-scsi-test.c
1604 T: git https://github.com/bonzini/qemu.git scsi-next
1605
1606 SSI
1607@@ -1464,7 +1559,7 @@ F: hw/ssi/*
1608 F: hw/block/m25p80.c
1609 F: include/hw/ssi/ssi.h
1610 X: hw/ssi/xilinx_*
1611-F: tests/m25p80-test.c
1612+F: tests/qtest/m25p80-test.c
1613
1614 Xilinx SPI
1615 M: Alistair Francis <alistair@alistair23.me>
1616@@ -1477,13 +1572,14 @@ S: Odd Fixes
1617 F: include/hw/sd/sd*
1618 F: hw/sd/core.c
1619 F: hw/sd/sd*
1620-F: tests/sd*
1621+F: hw/sd/ssi-sd.c
1622+F: tests/qtest/sd*
1623
1624 USB
1625 M: Gerd Hoffmann <kraxel@redhat.com>
1626 S: Maintained
1627 F: hw/usb/*
1628-F: tests/usb-*-test.c
1629+F: tests/qtest/usb-*-test.c
1630 F: docs/usb2.txt
1631 F: docs/usb-storage.txt
1632 F: include/hw/usb.h
1633@@ -1524,7 +1620,7 @@ F: hw/s390x/ap-bridge.c
1634 F: include/hw/s390x/ap-device.h
1635 F: include/hw/s390x/ap-bridge.h
1636 F: hw/vfio/ap.c
1637-F: docs/vfio-ap.txt
1638+F: docs/system/s390x/vfio-ap.rst
1639 L: qemu-s390x@nongnu.org
1640
1641 vhost
1642@@ -1545,15 +1641,25 @@ F: hw/virtio/Makefile.objs
1643 F: hw/virtio/trace-events
1644 F: net/vhost-user.c
1645 F: include/hw/virtio/
1646-F: tests/virtio-balloon-test.c
1647+
1648+virtio-balloon
1649+M: Michael S. Tsirkin <mst@redhat.com>
1650+M: David Hildenbrand <david@redhat.com>
1651+S: Maintained
1652+F: hw/virtio/virtio-balloon*.c
1653+F: include/hw/virtio/virtio-balloon.h
1654+F: balloon.c
1655+F: include/sysemu/balloon.h
1656
1657 virtio-9p
1658 M: Greg Kurz <groug@kaod.org>
1659+R: Christian Schoenebeck <qemu_oss@crudebyte.com>
1660 S: Odd Fixes
1661 F: hw/9pfs/
1662 X: hw/9pfs/xen-9p*
1663 F: fsdev/
1664-F: tests/virtio-9p-test.c
1665+F: docs/interop/virtfs-proxy-helper.rst
1666+F: tests/qtest/virtio-9p-test.c
1667 T: git https://github.com/gkurz/qemu.git 9p-next
1668
1669 virtio-blk
1670@@ -1562,7 +1668,7 @@ L: qemu-block@nongnu.org
1671 S: Supported
1672 F: hw/block/virtio-blk.c
1673 F: hw/block/dataplane/*
1674-F: tests/virtio-blk-test.c
1675+F: tests/qtest/virtio-blk-test.c
1676 T: git https://github.com/stefanha/qemu.git block
1677
1678 virtio-ccw
1679@@ -1575,6 +1681,15 @@ T: git https://github.com/cohuck/qemu.git s390-next
1680 T: git https://github.com/borntraeger/qemu.git s390-next
1681 L: qemu-s390x@nongnu.org
1682
1683+virtiofs
1684+M: Dr. David Alan Gilbert <dgilbert@redhat.com>
1685+M: Stefan Hajnoczi <stefanha@redhat.com>
1686+S: Supported
1687+F: tools/virtiofsd/*
1688+F: hw/virtio/vhost-user-fs*
1689+F: include/hw/virtio/vhost-user-fs.h
1690+F: docs/interop/virtiofsd.rst
1691+
1692 virtio-input
1693 M: Gerd Hoffmann <kraxel@redhat.com>
1694 S: Maintained
1695@@ -1583,6 +1698,12 @@ F: hw/input/virtio-input*.c
1696 F: include/hw/virtio/virtio-input.h
1697 F: contrib/vhost-user-input/*
1698
1699+virtio-iommu
1700+M: Eric Auger <eric.auger@redhat.com>
1701+S: Maintained
1702+F: hw/virtio/virtio-iommu*.c
1703+F: include/hw/virtio/virtio-iommu.h
1704+
1705 virtio-serial
1706 M: Laurent Vivier <lvivier@redhat.com>
1707 R: Amit Shah <amit@kernel.org>
1708@@ -1590,8 +1711,7 @@ S: Supported
1709 F: hw/char/virtio-serial-bus.c
1710 F: hw/char/virtio-console.c
1711 F: include/hw/virtio/virtio-serial.h
1712-F: tests/virtio-console-test.c
1713-F: tests/virtio-serial-test.c
1714+F: tests/qtest/virtio-serial-test.c
1715
1716 virtio-rng
1717 M: Laurent Vivier <lvivier@redhat.com>
1718@@ -1601,7 +1721,7 @@ F: hw/virtio/virtio-rng.c
1719 F: include/hw/virtio/virtio-rng.h
1720 F: include/sysemu/rng*.h
1721 F: backends/rng*.c
1722-F: tests/virtio-rng-test.c
1723+F: tests/qtest/virtio-rng-test.c
1724
1725 virtio-crypto
1726 M: Gonglei <arei.gonglei@huawei.com>
1727@@ -1615,7 +1735,7 @@ M: Keith Busch <keith.busch@intel.com>
1728 L: qemu-block@nongnu.org
1729 S: Supported
1730 F: hw/block/nvme*
1731-F: tests/nvme-test.c
1732+F: tests/qtest/nvme-test.c
1733
1734 megasas
1735 M: Hannes Reinecke <hare@suse.com>
1736@@ -1623,7 +1743,7 @@ L: qemu-block@nongnu.org
1737 S: Supported
1738 F: hw/scsi/megasas.c
1739 F: hw/scsi/mfi.h
1740-F: tests/megasas-test.c
1741+F: tests/qtest/megasas-test.c
1742
1743 Network packet abstractions
1744 M: Dmitry Fleytman <dmitry.fleytman@gmail.com>
1745@@ -1638,7 +1758,7 @@ M: Dmitry Fleytman <dmitry.fleytman@gmail.com>
1746 S: Maintained
1747 F: hw/net/vmxnet*
1748 F: hw/scsi/vmw_pvscsi*
1749-F: tests/vmxnet3-test.c
1750+F: tests/qtest/vmxnet3-test.c
1751
1752 Rocker
1753 M: Jiri Pirko <jiri@resnulli.us>
1754@@ -1686,7 +1806,7 @@ F: docs/generic-loader.txt
1755 Intel Hexadecimal Object File Loader
1756 M: Su Hang <suhang16@mails.ucas.ac.cn>
1757 S: Maintained
1758-F: tests/hexloader-test.c
1759+F: tests/qtest/hexloader-test.c
1760 F: tests/data/hex-loader/test.hex
1761
1762 CHRP NVRAM
1763@@ -1694,7 +1814,7 @@ M: Thomas Huth <thuth@redhat.com>
1764 S: Maintained
1765 F: hw/nvram/chrp_nvram.c
1766 F: include/hw/nvram/chrp_nvram.h
1767-F: tests/prom-env-test.c
1768+F: tests/qtest/prom-env-test.c
1769
1770 VM Generation ID
1771 M: Ben Warren <ben@skyportsystems.com>
1772@@ -1702,7 +1822,7 @@ S: Maintained
1773 F: hw/acpi/vmgenid.c
1774 F: include/hw/acpi/vmgenid.h
1775 F: docs/specs/vmgenid.txt
1776-F: tests/vmgenid-test.c
1777+F: tests/qtest/vmgenid-test.c
1778 F: stubs/vmgenid.c
1779
1780 Unimplemented device
1781@@ -1733,6 +1853,18 @@ F: hw/display/virtio-gpu*
1782 F: hw/display/virtio-vga.*
1783 F: include/hw/virtio/virtio-gpu.h
1784
1785+vhost-user-blk
1786+M: Raphael Norwitz <raphael.norwitz@nutanix.com>
1787+S: Maintained
1788+F: contrib/vhost-user-blk/
1789+F: contrib/vhost-user-scsi/
1790+F: hw/block/vhost-user-blk.c
1791+F: hw/scsi/vhost-user-scsi.c
1792+F: hw/virtio/vhost-user-blk-pci.c
1793+F: hw/virtio/vhost-user-scsi-pci.c
1794+F: include/hw/virtio/vhost-user-blk.h
1795+F: include/hw/virtio/vhost-user-scsi.h
1796+
1797 vhost-user-gpu
1798 M: Marc-André Lureau <marcandre.lureau@redhat.com>
1799 M: Gerd Hoffmann <kraxel@redhat.com>
1800@@ -1771,8 +1903,8 @@ F: hw/nvram/fw_cfg.c
1801 F: stubs/fw_cfg.c
1802 F: include/hw/nvram/fw_cfg.h
1803 F: include/standard-headers/linux/qemu_fw_cfg.h
1804-F: tests/libqos/fw_cfg.c
1805-F: tests/fw_cfg-test.c
1806+F: tests/qtest/libqos/fw_cfg.c
1807+F: tests/qtest/fw_cfg-test.c
1808 T: git https://github.com/philmd/qemu.git fw_cfg-next
1809
1810 XIVE
1811@@ -1792,9 +1924,9 @@ S: Maintained
1812 F: audio/
1813 F: hw/audio/
1814 F: include/hw/audio/
1815-F: tests/ac97-test.c
1816-F: tests/es1370-test.c
1817-F: tests/intel-hda-test.c
1818+F: tests/qtest/ac97-test.c
1819+F: tests/qtest/es1370-test.c
1820+F: tests/qtest/intel-hda-test.c
1821
1822 Block layer core
1823 M: Kevin Wolf <kwolf@redhat.com>
1824@@ -1806,6 +1938,7 @@ F: block/
1825 F: hw/block/
1826 F: include/block/
1827 F: qemu-img*
1828+F: docs/interop/qemu-img.rst
1829 F: qemu-io*
1830 F: tests/qemu-iotests/
1831 F: util/qemu-progress.c
1832@@ -1820,6 +1953,8 @@ L: qemu-block@nongnu.org
1833 S: Supported
1834 F: util/async.c
1835 F: util/aio-*.c
1836+F: util/aio-*.h
1837+F: util/fdmon-*.c
1838 F: block/io.c
1839 F: migration/block*
1840 F: include/block/aio.h
1841@@ -1855,6 +1990,7 @@ Block QAPI, monitor, command line
1842 M: Markus Armbruster <armbru@redhat.com>
1843 S: Supported
1844 F: blockdev.c
1845+F: blockdev-hmp-cmds.c
1846 F: block/qapi.c
1847 F: qapi/block*.json
1848 F: qapi/transaction.json
1849@@ -1865,12 +2001,12 @@ M: John Snow <jsnow@redhat.com>
1850 R: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
1851 L: qemu-block@nongnu.org
1852 S: Supported
1853-F: util/hbitmap.c
1854-F: block/dirty-bitmap.c
1855 F: include/qemu/hbitmap.h
1856 F: include/block/dirty-bitmap.h
1857-F: qcow2-bitmap.c
1858+F: block/dirty-bitmap.c
1859+F: block/qcow2-bitmap.c
1860 F: migration/block-dirty-bitmap.c
1861+F: util/hbitmap.c
1862 F: tests/test-hbitmap.c
1863 F: docs/interop/bitmaps.rst
1864 T: git https://github.com/jnsnow/qemu.git bitmaps
1865@@ -1902,6 +2038,11 @@ M: Markus Armbruster <armbru@redhat.com>
1866 S: Supported
1867 F: scripts/coverity-model.c
1868
1869+Coverity Scan integration
1870+M: Peter Maydell <peter.maydell@linaro.org>
1871+S: Maintained
1872+F: scripts/coverity-scan/
1873+
1874 Device Tree
1875 M: Alistair Francis <alistair.francis@wdc.com>
1876 R: David Gibson <david@gibson.dropbear.id.au>
1877@@ -1930,6 +2071,11 @@ F: include/qemu/error-report.h
1878 F: qapi/error.json
1879 F: util/error.c
1880 F: util/qemu-error.c
1881+F: scripts/coccinelle/err-bad-newline.cocci
1882+F: scripts/coccinelle/error-use-after-free.cocci
1883+F: scripts/coccinelle/error_propagate_null.cocci
1884+F: scripts/coccinelle/remove_local_err.cocci
1885+F: scripts/coccinelle/use-error_fatal.cocci
1886
1887 GDB stub
1888 M: Alex Bennée <alex.bennee@linaro.org>
1889@@ -1946,9 +2092,11 @@ F: ioport.c
1890 F: include/exec/memop.h
1891 F: include/exec/memory.h
1892 F: include/exec/ram_addr.h
1893+F: include/exec/ramblock.h
1894 F: memory.c
1895 F: include/exec/memory-internal.h
1896 F: exec.c
1897+F: scripts/coccinelle/memory-region-housekeeping.cocci
1898
1899 SPICE
1900 M: Gerd Hoffmann <kraxel@redhat.com>
1901@@ -1982,7 +2130,8 @@ F: include/qemu/main-loop.h
1902 F: include/sysemu/runstate.h
1903 F: util/main-loop.c
1904 F: util/qemu-timer.c
1905-F: vl.c
1906+F: softmmu/vl.c
1907+F: softmmu/main.c
1908 F: qapi/run-state.json
1909
1910 Human Monitor (HMP)
1911@@ -1995,7 +2144,7 @@ F: monitor/hmp*
1912 F: hmp.h
1913 F: hmp-commands*.hx
1914 F: include/monitor/hmp-target.h
1915-F: tests/test-hmp.c
1916+F: tests/qtest/test-hmp.c
1917 F: include/qemu/qemu-print.h
1918 F: util/qemu-print.c
1919
1920@@ -2038,6 +2187,11 @@ F: python/qemu/*py
1921 F: scripts/*.py
1922 F: tests/*.py
1923
1924+Benchmark util
1925+M: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
1926+S: Maintained
1927+F: scripts/simplebench/
1928+
1929 QAPI
1930 M: Markus Armbruster <armbru@redhat.com>
1931 M: Michael Roth <mdroth@linux.vnet.ibm.com>
1932@@ -2121,8 +2275,8 @@ F: qapi/error.json
1933 F: docs/devel/*qmp-*
1934 F: docs/interop/*qmp-*
1935 F: scripts/qmp/
1936-F: tests/qmp-test.c
1937-F: tests/qmp-cmd-test.c
1938+F: tests/qtest/qmp-test.c
1939+F: tests/qtest/qmp-cmd-test.c
1940 T: git https://repo.or.cz/qemu/armbru.git qapi-next
1941
1942 qtest
1943@@ -2132,9 +2286,15 @@ R: Paolo Bonzini <pbonzini@redhat.com>
1944 S: Maintained
1945 F: qtest.c
1946 F: accel/qtest.c
1947-F: tests/libqtest*
1948-F: tests/libqos/
1949-F: tests/*-test.c
1950+F: tests/qtest/
1951+
1952+Device Fuzzing
1953+M: Alexander Bulekov <alxndr@bu.edu>
1954+R: Paolo Bonzini <pbonzini@redhat.com>
1955+R: Bandan Das <bsd@redhat.com>
1956+R: Stefan Hajnoczi <stefanha@redhat.com>
1957+S: Maintained
1958+F: tests/qtest/fuzz/
1959
1960 Register API
1961 M: Alistair Francis <alistair@alistair23.me>
1962@@ -2161,10 +2321,11 @@ M: Stefan Hajnoczi <stefanha@redhat.com>
1963 S: Maintained
1964 F: trace/
1965 F: trace-events
1966-F: qemu-option-trace.texi
1967+F: docs/qemu-option-trace.rst.inc
1968 F: scripts/tracetool.py
1969 F: scripts/tracetool/
1970 F: scripts/qemu-trace-stap*
1971+F: docs/interop/qemu-trace-stap.rst
1972 F: docs/devel/tracing.txt
1973 T: git https://github.com/stefanha/qemu.git tracing
1974
1975@@ -2178,7 +2339,7 @@ F: include/hw/acpi/tpm.h
1976 F: include/sysemu/tpm*
1977 F: qapi/tpm.json
1978 F: backends/tpm.c
1979-F: tests/*tpm*
1980+F: tests/qtest/*tpm*
1981 T: git https://github.com/stefanberger/qemu-tpm.git tpm-next
1982
1983 Checkpatch
1984@@ -2189,14 +2350,26 @@ Migration
1985 M: Juan Quintela <quintela@redhat.com>
1986 M: Dr. David Alan Gilbert <dgilbert@redhat.com>
1987 S: Maintained
1988+F: hw/core/vmstate-if.c
1989+F: include/hw/vmstate-if.h
1990 F: include/migration/
1991 F: migration/
1992 F: scripts/vmstate-static-checker.py
1993 F: tests/vmstate-static-checker-data/
1994-F: tests/migration-test.c
1995+F: tests/qtest/migration-test.c
1996 F: docs/devel/migration.rst
1997 F: qapi/migration.json
1998
1999+D-Bus
2000+M: Marc-André Lureau <marcandre.lureau@redhat.com>
2001+S: Maintained
2002+F: backends/dbus-vmstate.c
2003+F: tests/dbus-vmstate*
2004+F: util/dbus.c
2005+F: include/qemu/dbus.h
2006+F: docs/interop/dbus.rst
2007+F: docs/interop/dbus-vmstate.rst
2008+
2009 Seccomp
2010 M: Eduardo Otubo <otubo@redhat.com>
2011 S: Supported
2012@@ -2339,6 +2512,8 @@ F: roms/edk2
2013 F: roms/edk2-*
2014 F: tests/data/uefi-boot-images/
2015 F: tests/uefi-test-tools/
2016+F: .gitlab-ci-edk2.yml
2017+F: .gitlab-ci.d/edk2/
2018
2019 Usermode Emulation
2020 ------------------
2021@@ -2360,6 +2535,9 @@ S: Maintained
2022 F: linux-user/
2023 F: default-configs/*-linux-user.mak
2024 F: scripts/qemu-binfmt-conf.sh
2025+F: scripts/update-syscalltbl.sh
2026+F: scripts/update-mips-syscall-args.sh
2027+F: scripts/gensyscalls.sh
2028
2029 Tiny Code Generator (TCG)
2030 -------------------------
2031@@ -2367,6 +2545,7 @@ Common TCG code
2032 M: Richard Henderson <rth@twiddle.net>
2033 S: Maintained
2034 F: tcg/
2035+F: include/tcg/
2036
2037 TCG Plugins
2038 M: Alex Bennée <alex.bennee@linaro.org>
2039@@ -2376,8 +2555,7 @@ F: plugins/
2040 F: tests/plugin
2041
2042 AArch64 TCG target
2043-M: Claudio Fontana <claudio.fontana@huawei.com>
2044-M: Claudio Fontana <claudio.fontana@gmail.com>
2045+M: Richard Henderson <richard.henderson@linaro.org>
2046 S: Maintained
2047 L: qemu-arm@nongnu.org
2048 F: tcg/aarch64/
2049@@ -2398,7 +2576,8 @@ F: tcg/i386/
2050 F: disas/i386.c
2051
2052 MIPS TCG target
2053-M: Aurelien Jarno <aurelien@aurel32.net>
2054+M: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
2055+R: Aurelien Jarno <aurelien@aurel32.net>
2056 R: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
2057 S: Maintained
2058 F: tcg/mips/
2059@@ -2488,6 +2667,7 @@ F: include/block/nbd*
2060 F: qemu-nbd.*
2061 F: blockdev-nbd.c
2062 F: docs/interop/nbd.txt
2063+F: docs/interop/qemu-nbd.rst
2064 T: git https://repo.or.cz/qemu/ericb.git nbd
2065
2066 NFS
2067@@ -2591,6 +2771,15 @@ F: block/file-posix.c
2068 F: block/file-win32.c
2069 F: block/win32-aio.c
2070
2071+Linux io_uring
2072+M: Aarushi Mehta <mehta.aaru20@gmail.com>
2073+M: Julia Suvorova <jusual@redhat.com>
2074+M: Stefan Hajnoczi <stefanha@redhat.com>
2075+L: qemu-block@nongnu.org
2076+S: Maintained
2077+F: block/io_uring.c
2078+F: stubs/io_uring.c
2079+
2080 qcow2
2081 M: Kevin Wolf <kwolf@redhat.com>
2082 M: Max Reitz <mreitz@redhat.com>
2083@@ -2640,7 +2829,7 @@ F: tests/test-replication.c
2084 F: docs/block-replication.txt
2085
2086 PVRDMA
2087-M: Yuval Shaia <yuval.shaia@oracle.com>
2088+M: Yuval Shaia <yuval.shaia.ml@gmail.com>
2089 M: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
2090 S: Maintained
2091 F: hw/rdma/*
2092@@ -2662,6 +2851,7 @@ M: Alex Bennée <alex.bennee@linaro.org>
2093 M: Fam Zheng <fam@euphon.net>
2094 R: Philippe Mathieu-Daudé <philmd@redhat.com>
2095 S: Maintained
2096+F: .github/lockdown.yml
2097 F: .travis.yml
2098 F: scripts/travis/
2099 F: .shippable.yml
2100@@ -2706,7 +2896,7 @@ F: contrib/gitdm/*
2101
2102 Incompatible changes
2103 R: libvir-list@redhat.com
2104-F: qemu-deprecated.texi
2105+F: docs/system/deprecated.rst
2106
2107 Build System
2108 ------------
2109@@ -2715,6 +2905,10 @@ M: Daniel P. Berrange <berrange@redhat.com>
2110 S: Odd Fixes
2111 F: scripts/git-submodule.sh
2112
2113+UI translations
2114+M: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
2115+F: po/*.po
2116+
2117 Sphinx documentation configuration and build machinery
2118 M: Peter Maydell <peter.maydell@linaro.org>
2119 S: Maintained
2120diff --git a/Makefile b/Makefile
2121index b437a34..8a9113e 100644
2122--- a/Makefile
2123+++ b/Makefile
2124@@ -15,9 +15,6 @@ UNCHECKED_GOALS := %clean TAGS cscope ctags dist \
2125 help check-help print-% \
2126 docker docker-% vm-help vm-test vm-build-%
2127
2128-print-%:
2129- @echo '$*=$($*)'
2130-
2131 # All following code might depend on configuration variables
2132 ifneq ($(wildcard config-host.mak),)
2133 # Put the all: rule here so that config-host.mak can contain dependencies.
2134@@ -117,6 +114,7 @@ GENERATED_QAPI_FILES += qapi/qapi-builtin-visit.h qapi/qapi-builtin-visit.c
2135 GENERATED_QAPI_FILES += qapi/qapi-visit.h qapi/qapi-visit.c
2136 GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-visit-%.h)
2137 GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-visit-%.c)
2138+GENERATED_QAPI_FILES += qapi/qapi-init-commands.h qapi/qapi-init-commands.c
2139 GENERATED_QAPI_FILES += qapi/qapi-commands.h qapi/qapi-commands.c
2140 GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-commands-%.h)
2141 GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-commands-%.c)
2142@@ -127,7 +125,28 @@ GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-events-%.c)
2143 GENERATED_QAPI_FILES += qapi/qapi-introspect.c qapi/qapi-introspect.h
2144 GENERATED_QAPI_FILES += qapi/qapi-doc.texi
2145
2146+# The following list considers only the storage daemon main module. All other
2147+# modules are currently shared with the main schema, so we don't actually
2148+# generate additional files.
2149+
2150+GENERATED_STORAGE_DAEMON_QAPI_FILES = storage-daemon/qapi/qapi-commands.h
2151+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-commands.c
2152+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-emit-events.h
2153+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-emit-events.c
2154+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-events.h
2155+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-events.c
2156+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-init-commands.h
2157+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-init-commands.c
2158+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-introspect.h
2159+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-introspect.c
2160+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-types.h
2161+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-types.c
2162+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-visit.h
2163+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-visit.c
2164+GENERATED_STORAGE_DAEMON_QAPI_FILES += storage-daemon/qapi/qapi-doc.texi
2165+
2166 generated-files-y += $(GENERATED_QAPI_FILES)
2167+generated-files-y += $(GENERATED_STORAGE_DAEMON_QAPI_FILES)
2168
2169 generated-files-y += trace/generated-tcg-tracers.h
2170
2171@@ -321,13 +340,14 @@ HELPERS-y =
2172
2173 HELPERS-$(call land,$(CONFIG_SOFTMMU),$(CONFIG_LINUX)) = qemu-bridge-helper$(EXESUF)
2174
2175-ifdef CONFIG_LINUX
2176-ifdef CONFIG_VIRGL
2177-ifdef CONFIG_GBM
2178+ifeq ($(CONFIG_LINUX)$(CONFIG_VIRGL)$(CONFIG_GBM)$(CONFIG_TOOLS),yyyy)
2179 HELPERS-y += vhost-user-gpu$(EXESUF)
2180 vhost-user-json-y += contrib/vhost-user-gpu/50-qemu-gpu.json
2181 endif
2182-endif
2183+
2184+ifeq ($(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyy)
2185+HELPERS-y += virtiofsd$(EXESUF)
2186+vhost-user-json-y += tools/virtiofsd/50-qemu-virtiofsd.json
2187 endif
2188
2189 # Sphinx does not allow building manuals into the same directory as
2190@@ -342,16 +362,23 @@ MANUAL_BUILDDIR := docs
2191 endif
2192
2193 ifdef BUILD_DOCS
2194-DOCS=qemu-doc.html qemu-doc.txt qemu.1 qemu-img.1 qemu-nbd.8 $(MANUAL_BUILDDIR)/interop/qemu-ga.8
2195+DOCS+=$(MANUAL_BUILDDIR)/system/qemu.1
2196+DOCS+=$(MANUAL_BUILDDIR)/tools/qemu-img.1
2197+DOCS+=$(MANUAL_BUILDDIR)/tools/qemu-nbd.8
2198+DOCS+=$(MANUAL_BUILDDIR)/interop/qemu-ga.8
2199+ifeq ($(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyy)
2200+DOCS+=$(MANUAL_BUILDDIR)/tools/virtiofsd.1
2201+endif
2202+DOCS+=$(MANUAL_BUILDDIR)/system/qemu-block-drivers.7
2203 DOCS+=docs/interop/qemu-qmp-ref.html docs/interop/qemu-qmp-ref.txt docs/interop/qemu-qmp-ref.7
2204 DOCS+=docs/interop/qemu-ga-ref.html docs/interop/qemu-ga-ref.txt docs/interop/qemu-ga-ref.7
2205-DOCS+=docs/qemu-block-drivers.7
2206-DOCS+=docs/qemu-cpu-models.7
2207+DOCS+=$(MANUAL_BUILDDIR)/system/qemu-cpu-models.7
2208+DOCS+=$(MANUAL_BUILDDIR)/index.html
2209 ifdef CONFIG_VIRTFS
2210-DOCS+=fsdev/virtfs-proxy-helper.1
2211+DOCS+=$(MANUAL_BUILDDIR)/tools/virtfs-proxy-helper.1
2212 endif
2213 ifdef CONFIG_TRACE_SYSTEMTAP
2214-DOCS+=scripts/qemu-trace-stap.1
2215+DOCS+=$(MANUAL_BUILDDIR)/tools/qemu-trace-stap.1
2216 endif
2217 else
2218 DOCS=
2219@@ -386,15 +413,16 @@ MINIKCONF_ARGS = \
2220 CONFIG_OPENGL=$(CONFIG_OPENGL) \
2221 CONFIG_X11=$(CONFIG_X11) \
2222 CONFIG_VHOST_USER=$(CONFIG_VHOST_USER) \
2223+ CONFIG_VHOST_KERNEL=$(CONFIG_VHOST_KERNEL) \
2224 CONFIG_VIRTFS=$(CONFIG_VIRTFS) \
2225 CONFIG_LINUX=$(CONFIG_LINUX) \
2226 CONFIG_PVRDMA=$(CONFIG_PVRDMA)
2227
2228-MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig \
2229- $(wildcard $(SRC_PATH)/hw/*/Kconfig)
2230+MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig
2231+MINIKCONF_DEPS = $(MINIKCONF_INPUTS) $(wildcard $(SRC_PATH)/hw/*/Kconfig)
2232 MINIKCONF = $(PYTHON) $(SRC_PATH)/scripts/minikconf.py \
2233
2234-$(SUBDIR_DEVICES_MAK): %/config-devices.mak: default-configs/%.mak $(MINIKCONF_INPUTS) $(BUILD_DIR)/config-host.mak
2235+$(SUBDIR_DEVICES_MAK): %/config-devices.mak: default-configs/%.mak $(MINIKCONF_DEPS) $(BUILD_DIR)/config-host.mak
2236 $(call quiet-command, $(MINIKCONF) $(MINIKCONF_ARGS) > $@.tmp, "GEN", "$@.tmp")
2237 $(call quiet-command, if test -f $@; then \
2238 if cmp -s $@.old $@; then \
2239@@ -430,6 +458,7 @@ dummy := $(call unnest-vars,, \
2240 elf2dmp-obj-y \
2241 ivshmem-client-obj-y \
2242 ivshmem-server-obj-y \
2243+ virtiofsd-obj-y \
2244 rdmacm-mux-obj-y \
2245 libvhost-user-obj-y \
2246 vhost-user-scsi-obj-y \
2247@@ -439,16 +468,13 @@ dummy := $(call unnest-vars,, \
2248 qga-vss-dll-obj-y \
2249 block-obj-y \
2250 block-obj-m \
2251+ storage-daemon-obj-y \
2252+ storage-daemon-obj-m \
2253 crypto-obj-y \
2254- crypto-user-obj-y \
2255 qom-obj-y \
2256 io-obj-y \
2257 common-obj-y \
2258 common-obj-m \
2259- ui-obj-y \
2260- ui-obj-m \
2261- audio-obj-y \
2262- audio-obj-m \
2263 trace-obj-y)
2264
2265 include $(SRC_PATH)/tests/Makefile.include
2266@@ -471,11 +497,12 @@ config-host.h-timestamp: config-host.mak
2267 qemu-options.def: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
2268 $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
2269
2270-TARGET_DIRS_RULES := $(foreach t, all clean install, $(addsuffix /$(t), $(TARGET_DIRS)))
2271+TARGET_DIRS_RULES := $(foreach t, all fuzz clean install, $(addsuffix /$(t), $(TARGET_DIRS)))
2272
2273 SOFTMMU_ALL_RULES=$(filter %-softmmu/all, $(TARGET_DIRS_RULES))
2274 $(SOFTMMU_ALL_RULES): $(authz-obj-y)
2275 $(SOFTMMU_ALL_RULES): $(block-obj-y)
2276+$(SOFTMMU_ALL_RULES): $(storage-daemon-obj-y)
2277 $(SOFTMMU_ALL_RULES): $(chardev-obj-y)
2278 $(SOFTMMU_ALL_RULES): $(crypto-obj-y)
2279 $(SOFTMMU_ALL_RULES): $(io-obj-y)
2280@@ -484,6 +511,15 @@ ifdef DECOMPRESS_EDK2_BLOBS
2281 $(SOFTMMU_ALL_RULES): $(edk2-decompressed)
2282 endif
2283
2284+SOFTMMU_FUZZ_RULES=$(filter %-softmmu/fuzz, $(TARGET_DIRS_RULES))
2285+$(SOFTMMU_FUZZ_RULES): $(authz-obj-y)
2286+$(SOFTMMU_FUZZ_RULES): $(block-obj-y)
2287+$(SOFTMMU_FUZZ_RULES): $(chardev-obj-y)
2288+$(SOFTMMU_FUZZ_RULES): $(crypto-obj-y)
2289+$(SOFTMMU_FUZZ_RULES): $(io-obj-y)
2290+$(SOFTMMU_FUZZ_RULES): config-all-devices.mak
2291+$(SOFTMMU_FUZZ_RULES): $(edk2-decompressed)
2292+
2293 .PHONY: $(TARGET_DIRS_RULES)
2294 # The $(TARGET_DIRS_RULES) are of the form SUBDIR/GOAL, so that
2295 # $(dir $@) yields the sub-directory, and $(notdir $@) yields the sub-goal
2296@@ -496,7 +532,7 @@ DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
2297
2298 .PHONY: dtc/all
2299 dtc/all: .git-submodule-status dtc/libfdt dtc/tests
2300- $(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CPPFLAGS="$(DTC_CPPFLAGS)" CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt/libfdt.a,)
2301+ $(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CPPFLAGS="$(DTC_CPPFLAGS)" CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(QEMU_LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt/libfdt.a,)
2302
2303 dtc/%: .git-submodule-status
2304 @mkdir -p $@
2305@@ -523,7 +559,7 @@ slirp/all: .git-submodule-status
2306 BUILD_DIR="$(BUILD_DIR)/slirp" \
2307 PKG_CONFIG="$(PKG_CONFIG)" \
2308 CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" \
2309- CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)")
2310+ CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(QEMU_LDFLAGS)")
2311
2312 # Compatibility gunk to keep make working across the rename of targets
2313 # for recursion, to be removed some time after 4.1.
2314@@ -532,6 +568,9 @@ subdir-capstone: capstone/all
2315 subdir-slirp: slirp/all
2316
2317 $(filter %/all, $(TARGET_DIRS_RULES)): libqemuutil.a $(common-obj-y) \
2318+ $(qom-obj-y)
2319+
2320+$(filter %/fuzz, $(TARGET_DIRS_RULES)): libqemuutil.a $(common-obj-y) \
2321 $(qom-obj-y) $(crypto-user-obj-$(CONFIG_USER_ONLY))
2322
2323 ROM_DIRS = $(addprefix pc-bios/, $(ROMS))
2324@@ -543,6 +582,7 @@ $(ROM_DIRS_RULES):
2325
2326 .PHONY: recurse-all recurse-clean recurse-install
2327 recurse-all: $(addsuffix /all, $(TARGET_DIRS) $(ROM_DIRS))
2328+recurse-fuzz: $(addsuffix /fuzz, $(TARGET_DIRS) $(ROM_DIRS))
2329 recurse-clean: $(addsuffix /clean, $(TARGET_DIRS) $(ROM_DIRS))
2330 recurse-install: $(addsuffix /install, $(TARGET_DIRS))
2331 $(addsuffix /install, $(TARGET_DIRS)): all
2332@@ -567,6 +607,7 @@ qemu-img.o: qemu-img-cmds.h
2333 qemu-img$(EXESUF): qemu-img.o $(authz-obj-y) $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
2334 qemu-nbd$(EXESUF): qemu-nbd.o $(authz-obj-y) $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
2335 qemu-io$(EXESUF): qemu-io.o $(authz-obj-y) $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
2336+qemu-storage-daemon$(EXESUF): qemu-storage-daemon.o $(authz-obj-y) $(block-obj-y) $(crypto-obj-y) $(chardev-obj-y) $(io-obj-y) $(qom-obj-y) $(storage-daemon-obj-y) $(COMMON_LDADDS)
2337
2338 qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o $(COMMON_LDADDS)
2339
2340@@ -575,7 +616,6 @@ qemu-keymap$(EXESUF): qemu-keymap.o ui/input-keymap.o $(COMMON_LDADDS)
2341 qemu-edid$(EXESUF): qemu-edid.o hw/display/edid-generate.o $(COMMON_LDADDS)
2342
2343 fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o fsdev/9p-marshal.o fsdev/9p-iov-marshal.o $(COMMON_LDADDS)
2344-fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
2345
2346 scsi/qemu-pr-helper$(EXESUF): scsi/qemu-pr-helper.o scsi/utils.o $(authz-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
2347 ifdef CONFIG_MPATH
2348@@ -610,6 +650,7 @@ $(SRC_PATH)/scripts/qapi-gen.py
2349 qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h \
2350 qga/qapi-generated/qga-qapi-visit.c qga/qapi-generated/qga-qapi-visit.h \
2351 qga/qapi-generated/qga-qapi-commands.h qga/qapi-generated/qga-qapi-commands.c \
2352+qga/qapi-generated/qga-qapi-init-commands.h qga/qapi-generated/qga-qapi-init-commands.c \
2353 qga/qapi-generated/qga-qapi-doc.texi: \
2354 qga/qapi-generated/qapi-gen-timestamp ;
2355 qga/qapi-generated/qapi-gen-timestamp: $(SRC_PATH)/qga/qapi-schema.json $(qapi-py)
2356@@ -628,7 +669,18 @@ qapi-gen-timestamp: $(qapi-modules) $(qapi-py)
2357 "GEN","$(@:%-timestamp=%)")
2358 @>$@
2359
2360-QGALIB_GEN=$(addprefix qga/qapi-generated/, qga-qapi-types.h qga-qapi-visit.h qga-qapi-commands.h)
2361+qapi-modules-storage-daemon = \
2362+ $(SRC_PATH)/storage-daemon/qapi/qapi-schema.json \
2363+ $(QAPI_MODULES_STORAGE_DAEMON:%=$(SRC_PATH)/qapi/%.json)
2364+
2365+$(GENERATED_STORAGE_DAEMON_QAPI_FILES): storage-daemon/qapi/qapi-gen-timestamp ;
2366+storage-daemon/qapi/qapi-gen-timestamp: $(qapi-modules-storage-daemon) $(qapi-py)
2367+ $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
2368+ -o "storage-daemon/qapi" $<, \
2369+ "GEN","$(@:%-timestamp=%)")
2370+ @>$@
2371+
2372+QGALIB_GEN=$(addprefix qga/qapi-generated/, qga-qapi-types.h qga-qapi-visit.h qga-qapi-commands.h qga-qapi-init-commands.h)
2373 $(qga-obj-y): $(QGALIB_GEN)
2374
2375 qemu-ga$(EXESUF): $(qga-obj-y) $(COMMON_LDADDS)
2376@@ -674,6 +726,12 @@ rdmacm-mux$(EXESUF): LIBS += "-libumad"
2377 rdmacm-mux$(EXESUF): $(rdmacm-mux-obj-y) $(COMMON_LDADDS)
2378 $(call LINK, $^)
2379
2380+# relies on Linux-specific syscalls
2381+ifeq ($(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyy)
2382+virtiofsd$(EXESUF): $(virtiofsd-obj-y) libvhost-user.a $(COMMON_LDADDS)
2383+ $(call LINK, $^)
2384+endif
2385+
2386 vhost-user-gpu$(EXESUF): $(vhost-user-gpu-obj-y) $(libvhost-user-obj-y) libqemuutil.a libqemustub.a
2387 $(call LINK, $^)
2388
2389@@ -720,6 +778,7 @@ clean: recurse-clean
2390 rm -f trace/generated-tracers-dtrace.h*
2391 rm -f $(foreach f,$(generated-files-y),$(f) $(f)-timestamp)
2392 rm -f qapi-gen-timestamp
2393+ rm -f storage-daemon/qapi/qapi-gen-timestamp
2394 rm -rf qga/qapi-generated
2395 rm -f config-all-devices.mak
2396
2397@@ -736,16 +795,12 @@ rm -f $(MANUAL_BUILDDIR)/$1/objects.inv $(MANUAL_BUILDDIR)/$1/searchindex.js $(M
2398 endef
2399
2400 distclean: clean
2401- rm -f config-host.mak config-host.h* config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi qemu-monitor.texi qemu-monitor-info.texi
2402+ rm -f config-host.mak config-host.h* $(DOCS)
2403 rm -f tests/tcg/config-*.mak
2404 rm -f config-all-devices.mak config-all-disas.mak config.status
2405 rm -f $(SUBDIR_DEVICES_MAK)
2406 rm -f po/*.mo tests/qemu-iotests/common.env
2407 rm -f roms/seabios/config.mak roms/vgabios/config.mak
2408- rm -f qemu-doc.info qemu-doc.aux qemu-doc.cp qemu-doc.cps
2409- rm -f qemu-doc.fn qemu-doc.fns qemu-doc.info qemu-doc.ky qemu-doc.kys
2410- rm -f qemu-doc.log qemu-doc.pdf qemu-doc.pg qemu-doc.toc qemu-doc.tp
2411- rm -f qemu-doc.vr qemu-doc.txt
2412 rm -f qemu-plugins-ld.symbols qemu-plugins-ld64.symbols
2413 rm -f config.log
2414 rm -f linux-headers/asm
2415@@ -755,12 +810,13 @@ distclean: clean
2416 rm -f docs/interop/qemu-qmp-ref.txt docs/interop/qemu-ga-ref.txt
2417 rm -f docs/interop/qemu-qmp-ref.pdf docs/interop/qemu-ga-ref.pdf
2418 rm -f docs/interop/qemu-qmp-ref.html docs/interop/qemu-ga-ref.html
2419- rm -f docs/qemu-block-drivers.7
2420- rm -f docs/qemu-cpu-models.7
2421 rm -rf .doctrees
2422 $(call clean-manual,devel)
2423 $(call clean-manual,interop)
2424 $(call clean-manual,specs)
2425+ $(call clean-manual,system)
2426+ $(call clean-manual,tools)
2427+ $(call clean-manual,user)
2428 for d in $(TARGET_DIRS); do \
2429 rm -rf $$d || exit 1 ; \
2430 done
2431@@ -776,7 +832,7 @@ ifdef INSTALL_BLOBS
2432 BLOBS=bios.bin bios-256k.bin bios-microvm.bin sgabios.bin vgabios.bin vgabios-cirrus.bin \
2433 vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin \
2434 vgabios-ramfb.bin vgabios-bochs-display.bin vgabios-ati.bin \
2435-ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin \
2436+openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin \
2437 pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom \
2438 pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \
2439 efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom \
2440@@ -792,7 +848,7 @@ u-boot.e500 u-boot-sam460-20100605.bin \
2441 qemu_vga.ndrv \
2442 edk2-licenses.txt \
2443 hppa-firmware.img \
2444-opensbi-riscv32-virt-fw_jump.bin \
2445+opensbi-riscv32-sifive_u-fw_jump.bin opensbi-riscv32-virt-fw_jump.bin \
2446 opensbi-riscv64-sifive_u-fw_jump.bin opensbi-riscv64-virt-fw_jump.bin
2447
2448
2449@@ -817,27 +873,29 @@ endef
2450 install-sphinxdocs: sphinxdocs
2451 $(call install-manual,interop)
2452 $(call install-manual,specs)
2453+ $(call install-manual,system)
2454+ $(call install-manual,tools)
2455+ $(call install-manual,user)
2456
2457 install-doc: $(DOCS) install-sphinxdocs
2458 $(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)"
2459- $(INSTALL_DATA) qemu-doc.html "$(DESTDIR)$(qemu_docdir)"
2460- $(INSTALL_DATA) qemu-doc.txt "$(DESTDIR)$(qemu_docdir)"
2461+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/index.html "$(DESTDIR)$(qemu_docdir)"
2462 $(INSTALL_DATA) docs/interop/qemu-qmp-ref.html "$(DESTDIR)$(qemu_docdir)"
2463 $(INSTALL_DATA) docs/interop/qemu-qmp-ref.txt "$(DESTDIR)$(qemu_docdir)"
2464 ifdef CONFIG_POSIX
2465 $(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
2466- $(INSTALL_DATA) qemu.1 "$(DESTDIR)$(mandir)/man1"
2467+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/system/qemu.1 "$(DESTDIR)$(mandir)/man1"
2468 $(INSTALL_DIR) "$(DESTDIR)$(mandir)/man7"
2469 $(INSTALL_DATA) docs/interop/qemu-qmp-ref.7 "$(DESTDIR)$(mandir)/man7"
2470- $(INSTALL_DATA) docs/qemu-block-drivers.7 "$(DESTDIR)$(mandir)/man7"
2471- $(INSTALL_DATA) docs/qemu-cpu-models.7 "$(DESTDIR)$(mandir)/man7"
2472+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/system/qemu-block-drivers.7 "$(DESTDIR)$(mandir)/man7"
2473+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/system/qemu-cpu-models.7 "$(DESTDIR)$(mandir)/man7"
2474 ifeq ($(CONFIG_TOOLS),y)
2475- $(INSTALL_DATA) qemu-img.1 "$(DESTDIR)$(mandir)/man1"
2476+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/tools/qemu-img.1 "$(DESTDIR)$(mandir)/man1"
2477 $(INSTALL_DIR) "$(DESTDIR)$(mandir)/man8"
2478- $(INSTALL_DATA) qemu-nbd.8 "$(DESTDIR)$(mandir)/man8"
2479+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/tools/qemu-nbd.8 "$(DESTDIR)$(mandir)/man8"
2480 endif
2481 ifdef CONFIG_TRACE_SYSTEMTAP
2482- $(INSTALL_DATA) scripts/qemu-trace-stap.1 "$(DESTDIR)$(mandir)/man1"
2483+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/tools/qemu-trace-stap.1 "$(DESTDIR)$(mandir)/man1"
2484 endif
2485 ifneq (,$(findstring qemu-ga,$(TOOLS)))
2486 $(INSTALL_DATA) $(MANUAL_BUILDDIR)/interop/qemu-ga.8 "$(DESTDIR)$(mandir)/man8"
2487@@ -848,7 +906,10 @@ endif
2488 endif
2489 ifdef CONFIG_VIRTFS
2490 $(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
2491- $(INSTALL_DATA) fsdev/virtfs-proxy-helper.1 "$(DESTDIR)$(mandir)/man1"
2492+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/tools/virtfs-proxy-helper.1 "$(DESTDIR)$(mandir)/man1"
2493+endif
2494+ifeq ($(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyy)
2495+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/tools/virtiofsd.1 "$(DESTDIR)$(mandir)/man1"
2496 endif
2497
2498 install-datadir:
2499@@ -1003,16 +1064,32 @@ docs/version.texi: $(SRC_PATH)/VERSION config-host.mak
2500 # and handles "don't rebuild things unless necessary" itself.
2501 # The '.doctrees' files are cached information to speed this up.
2502 .PHONY: sphinxdocs
2503-sphinxdocs: $(MANUAL_BUILDDIR)/devel/index.html $(MANUAL_BUILDDIR)/interop/index.html $(MANUAL_BUILDDIR)/specs/index.html
2504+sphinxdocs: $(MANUAL_BUILDDIR)/devel/index.html \
2505+ $(MANUAL_BUILDDIR)/interop/index.html \
2506+ $(MANUAL_BUILDDIR)/specs/index.html \
2507+ $(MANUAL_BUILDDIR)/system/index.html \
2508+ $(MANUAL_BUILDDIR)/tools/index.html \
2509+ $(MANUAL_BUILDDIR)/user/index.html
2510
2511 # Canned command to build a single manual
2512 # Arguments: $1 = manual name, $2 = Sphinx builder ('html' or 'man')
2513 # Note the use of different doctree for each (manual, builder) tuple;
2514 # this works around Sphinx not handling parallel invocation on
2515 # a single doctree: https://github.com/sphinx-doc/sphinx/issues/2946
2516-build-manual = $(call quiet-command,CONFDIR="$(qemu_confdir)" sphinx-build $(if $(V),,-q) -W -n -b $2 -D version=$(VERSION) -D release="$(FULL_VERSION)" -d .doctrees/$1-$2 $(SRC_PATH)/docs/$1 $(MANUAL_BUILDDIR)/$1 ,"SPHINX","$(MANUAL_BUILDDIR)/$1")
2517+build-manual = $(call quiet-command,CONFDIR="$(qemu_confdir)" $(SPHINX_BUILD) $(if $(V),,-q) $(SPHINX_WERROR) -b $2 -D version=$(VERSION) -D release="$(FULL_VERSION)" -d .doctrees/$1-$2 $(SRC_PATH)/docs/$1 $(MANUAL_BUILDDIR)/$1 ,"SPHINX","$(MANUAL_BUILDDIR)/$1")
2518 # We assume all RST files in the manual's directory are used in it
2519-manual-deps = $(wildcard $(SRC_PATH)/docs/$1/*.rst) $(SRC_PATH)/docs/$1/conf.py $(SRC_PATH)/docs/conf.py
2520+manual-deps = $(wildcard $(SRC_PATH)/docs/$1/*.rst $(SRC_PATH)/docs/$1/*/*.rst) \
2521+ $(SRC_PATH)/docs/defs.rst.inc \
2522+ $(SRC_PATH)/docs/$1/conf.py $(SRC_PATH)/docs/conf.py \
2523+ $(SRC_PATH)/docs/sphinx/*.py
2524+# Macro to write out the rule and dependencies for building manpages
2525+# Usage: $(call define-manpage-rule,manualname,manpage1 manpage2...[,extradeps])
2526+# 'extradeps' is optional, and specifies extra files (eg .hx files) that
2527+# the manual page depends on.
2528+define define-manpage-rule
2529+$(call atomic,$(foreach manpage,$2,$(MANUAL_BUILDDIR)/$1/$(manpage)),$(call manual-deps,$1) $3)
2530+ $(call build-manual,$1,man)
2531+endef
2532
2533 $(MANUAL_BUILDDIR)/devel/index.html: $(call manual-deps,devel)
2534 $(call build-manual,devel,html)
2535@@ -1023,20 +1100,28 @@ $(MANUAL_BUILDDIR)/interop/index.html: $(call manual-deps,interop)
2536 $(MANUAL_BUILDDIR)/specs/index.html: $(call manual-deps,specs)
2537 $(call build-manual,specs,html)
2538
2539-$(MANUAL_BUILDDIR)/interop/qemu-ga.8: $(call manual-deps,interop)
2540- $(call build-manual,interop,man)
2541+$(MANUAL_BUILDDIR)/system/index.html: $(call manual-deps,system) $(SRC_PATH)/hmp-commands.hx $(SRC_PATH)/hmp-commands-info.hx $(SRC_PATH)/qemu-options.hx
2542+ $(call build-manual,system,html)
2543
2544-qemu-options.texi: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
2545- $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@,"GEN","$@")
2546+$(MANUAL_BUILDDIR)/tools/index.html: $(call manual-deps,tools) $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/docs/qemu-option-trace.rst.inc
2547+ $(call build-manual,tools,html)
2548
2549-qemu-monitor.texi: $(SRC_PATH)/hmp-commands.hx $(SRC_PATH)/scripts/hxtool
2550- $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@,"GEN","$@")
2551+$(MANUAL_BUILDDIR)/user/index.html: $(call manual-deps,user)
2552+ $(call build-manual,user,html)
2553
2554-qemu-monitor-info.texi: $(SRC_PATH)/hmp-commands-info.hx $(SRC_PATH)/scripts/hxtool
2555- $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@,"GEN","$@")
2556+$(call define-manpage-rule,interop,qemu-ga.8)
2557
2558-qemu-img-cmds.texi: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
2559- $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@,"GEN","$@")
2560+$(call define-manpage-rule,system,qemu.1 qemu-block-drivers.7 qemu-cpu-models.7)
2561+
2562+$(call define-manpage-rule,tools,\
2563+ qemu-img.1 qemu-nbd.8 qemu-trace-stap.1\
2564+ virtiofsd.1 virtfs-proxy-helper.1,\
2565+ $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/docs/qemu-option-trace.rst.inc)
2566+
2567+$(MANUAL_BUILDDIR)/index.html: $(SRC_PATH)/docs/index.html.in qemu-version.h
2568+ @mkdir -p "$(MANUAL_BUILDDIR)"
2569+ $(call quiet-command, sed "s|@@VERSION@@|${VERSION}|g" $< >$@, \
2570+ "GEN","$@")
2571
2572 docs/interop/qemu-qmp-qapi.texi: qapi/qapi-doc.texi
2573 @cp -p $< $@
2574@@ -1044,26 +1129,10 @@ docs/interop/qemu-qmp-qapi.texi: qapi/qapi-doc.texi
2575 docs/interop/qemu-ga-qapi.texi: qga/qapi-generated/qga-qapi-doc.texi
2576 @cp -p $< $@
2577
2578-qemu.1: qemu-doc.texi qemu-options.texi qemu-monitor.texi qemu-monitor-info.texi
2579-qemu.1: qemu-option-trace.texi
2580-qemu-img.1: qemu-img.texi qemu-option-trace.texi qemu-img-cmds.texi
2581-fsdev/virtfs-proxy-helper.1: fsdev/virtfs-proxy-helper.texi
2582-qemu-nbd.8: qemu-nbd.texi qemu-option-trace.texi
2583-docs/qemu-block-drivers.7: docs/qemu-block-drivers.texi
2584-docs/qemu-cpu-models.7: docs/qemu-cpu-models.texi
2585-scripts/qemu-trace-stap.1: scripts/qemu-trace-stap.texi
2586-
2587-html: qemu-doc.html docs/interop/qemu-qmp-ref.html docs/interop/qemu-ga-ref.html sphinxdocs
2588-info: qemu-doc.info docs/interop/qemu-qmp-ref.info docs/interop/qemu-ga-ref.info
2589-pdf: qemu-doc.pdf docs/interop/qemu-qmp-ref.pdf docs/interop/qemu-ga-ref.pdf
2590-txt: qemu-doc.txt docs/interop/qemu-qmp-ref.txt docs/interop/qemu-ga-ref.txt
2591-
2592-qemu-doc.html qemu-doc.info qemu-doc.pdf qemu-doc.txt: \
2593- qemu-img.texi qemu-nbd.texi qemu-options.texi \
2594- qemu-tech.texi qemu-option-trace.texi \
2595- qemu-deprecated.texi qemu-monitor.texi qemu-img-cmds.texi \
2596- qemu-monitor-info.texi docs/qemu-block-drivers.texi \
2597- docs/qemu-cpu-models.texi docs/security.texi
2598+html: docs/interop/qemu-qmp-ref.html docs/interop/qemu-ga-ref.html sphinxdocs
2599+info: docs/interop/qemu-qmp-ref.info docs/interop/qemu-ga-ref.info
2600+pdf: docs/interop/qemu-qmp-ref.pdf docs/interop/qemu-ga-ref.pdf
2601+txt: docs/interop/qemu-qmp-ref.txt docs/interop/qemu-ga-ref.txt
2602
2603 docs/interop/qemu-ga-ref.dvi docs/interop/qemu-ga-ref.html \
2604 docs/interop/qemu-ga-ref.info docs/interop/qemu-ga-ref.pdf \
2605@@ -1166,50 +1235,57 @@ endif
2606 include $(SRC_PATH)/tests/docker/Makefile.include
2607 include $(SRC_PATH)/tests/vm/Makefile.include
2608
2609+print-help-run = printf " %-30s - %s\\n" "$1" "$2"
2610+print-help = $(quiet-@)$(call print-help-run,$1,$2)
2611+
2612 .PHONY: help
2613 help:
2614 @echo 'Generic targets:'
2615- @echo ' all - Build all'
2616+ $(call print-help,all,Build all)
2617 ifdef CONFIG_MODULES
2618- @echo ' modules - Build all modules'
2619+ $(call print-help,modules,Build all modules)
2620 endif
2621- @echo ' dir/file.o - Build specified target only'
2622- @echo ' install - Install QEMU, documentation and tools'
2623- @echo ' ctags/TAGS - Generate tags file for editors'
2624- @echo ' cscope - Generate cscope index'
2625+ $(call print-help,dir/file.o,Build specified target only)
2626+ $(call print-help,install,Install QEMU, documentation and tools)
2627+ $(call print-help,ctags/TAGS,Generate tags file for editors)
2628+ $(call print-help,cscope,Generate cscope index)
2629 @echo ''
2630 @$(if $(TARGET_DIRS), \
2631 echo 'Architecture specific targets:'; \
2632 $(foreach t, $(TARGET_DIRS), \
2633- printf " %-30s - Build for %s\\n" $(t)/all $(t);) \
2634+ $(call print-help-run,$(t)/all,Build for $(t));) \
2635+ echo '')
2636+ @$(if $(TOOLS), \
2637+ echo 'Tools targets:'; \
2638+ $(foreach t, $(TOOLS), \
2639+ $(call print-help-run,$(t),Build $(shell basename $(t)) tool);) \
2640 echo '')
2641 @echo 'Cleaning targets:'
2642- @echo ' clean - Remove most generated files but keep the config'
2643+ $(call print-help,clean,Remove most generated files but keep the config)
2644 ifdef CONFIG_GCOV
2645- @echo ' clean-coverage - Remove coverage files'
2646+ $(call print-help,clean-coverage,Remove coverage files)
2647 endif
2648- @echo ' distclean - Remove all generated files'
2649- @echo ' dist - Build a distributable tarball'
2650+ $(call print-help,distclean,Remove all generated files)
2651+ $(call print-help,dist,Build a distributable tarball)
2652 @echo ''
2653 @echo 'Test targets:'
2654- @echo ' check - Run all tests (check-help for details)'
2655- @echo ' docker - Help about targets running tests inside containers'
2656- @echo ' vm-help - Help about targets running tests inside VM'
2657+ $(call print-help,check,Run all tests (check-help for details))
2658+ $(call print-help,docker,Help about targets running tests inside containers)
2659+ $(call print-help,vm-help,Help about targets running tests inside VM)
2660 @echo ''
2661 @echo 'Documentation targets:'
2662- @echo ' html info pdf txt'
2663- @echo ' - Build documentation in specified format'
2664+ $(call print-help,html info pdf txt,Build documentation in specified format)
2665 ifdef CONFIG_GCOV
2666- @echo ' coverage-report - Create code coverage report'
2667+ $(call print-help,coverage-report,Create code coverage report)
2668 endif
2669 @echo ''
2670 ifdef CONFIG_WIN32
2671 @echo 'Windows targets:'
2672- @echo ' installer - Build NSIS-based installer for QEMU'
2673+ $(call print-help,installer,Build NSIS-based installer for QEMU)
2674 ifdef QEMU_GA_MSI_ENABLED
2675- @echo ' msi - Build MSI-based installer for qemu-ga'
2676+ $(call print-help,msi,Build MSI-based installer for qemu-ga)
2677 endif
2678 @echo ''
2679 endif
2680- @echo ' $(MAKE) [targets] (quiet build, default)'
2681- @echo ' $(MAKE) V=1 [targets] (verbose build)'
2682+ $(call print-help,$(MAKE) [targets],(quiet build, default))
2683+ $(call print-help,$(MAKE) V=1 [targets],(verbose build))
2684diff --git a/Makefile.objs b/Makefile.objs
2685index 11ba1a3..a7c9676 100644
2686--- a/Makefile.objs
2687+++ b/Makefile.objs
2688@@ -1,17 +1,17 @@
2689 #######################################################################
2690 # Common libraries for tools and emulators
2691-stub-obj-y = stubs/ util/ crypto/
2692-util-obj-y = util/ qobject/ qapi/
2693-
2694-chardev-obj-y = chardev/
2695+stub-obj-y = stubs/
2696+util-obj-y = crypto/ util/ qobject/ qapi/
2697+qom-obj-y = qom/
2698
2699 #######################################################################
2700-# authz-obj-y is code used by both qemu system emulation and qemu-img
2701+# code used by both qemu system emulation and qemu-img
2702
2703-authz-obj-y = authz/
2704+ifeq ($(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS)),y)
2705
2706-#######################################################################
2707-# block-obj-y is code used by both qemu system emulation and qemu-img
2708+chardev-obj-y = chardev/
2709+
2710+authz-obj-y = authz/
2711
2712 block-obj-y = nbd/
2713 block-obj-y += block.o blockjob.o job.o
2714@@ -21,21 +21,20 @@ block-obj-$(CONFIG_REPLICATION) += replication.o
2715
2716 block-obj-m = block/
2717
2718-#######################################################################
2719-# crypto-obj-y is code used by both qemu system emulation and qemu-img
2720-
2721 crypto-obj-y = crypto/
2722-crypto-user-obj-y = crypto/
2723
2724-#######################################################################
2725-# qom-obj-y is code used by both qemu system emulation and qemu-img
2726+io-obj-y = io/
2727
2728-qom-obj-y = qom/
2729+endif # CONFIG_SOFTMMU or CONFIG_TOOLS
2730
2731 #######################################################################
2732-# io-obj-y is code used by both qemu system emulation and qemu-img
2733+# storage-daemon-obj-y is code used by qemu-storage-daemon (these objects are
2734+# used for system emulation, too, but specified separately there)
2735
2736-io-obj-y = io/
2737+storage-daemon-obj-y = block/ monitor/ qapi/ qom/ storage-daemon/
2738+storage-daemon-obj-y += blockdev.o blockdev-nbd.o iothread.o job-qmp.o
2739+storage-daemon-obj-$(CONFIG_WIN32) += os-win32.o
2740+storage-daemon-obj-$(CONFIG_POSIX) += os-posix.o
2741
2742 ######################################################################
2743 # Target independent part of system emulation. The long term path is to
2744@@ -49,12 +48,13 @@ common-obj-y += dump/
2745 common-obj-y += job-qmp.o
2746 common-obj-y += monitor/
2747 common-obj-y += net/
2748-common-obj-y += qdev-monitor.o device-hotplug.o
2749+common-obj-y += qdev-monitor.o
2750 common-obj-$(CONFIG_WIN32) += os-win32.o
2751 common-obj-$(CONFIG_POSIX) += os-posix.o
2752
2753 common-obj-$(CONFIG_LINUX) += fsdev/
2754
2755+common-obj-y += accel/
2756 common-obj-y += migration/
2757
2758 common-obj-y += audio/
2759@@ -65,12 +65,8 @@ common-obj-y += replay/
2760
2761 common-obj-y += ui/
2762 common-obj-m += ui/
2763-common-obj-y += bt-host.o bt-vhci.o
2764-bt-host.o-cflags := $(BLUEZ_CFLAGS)
2765
2766 common-obj-y += dma-helpers.o
2767-common-obj-y += vl.o
2768-vl.o-cflags := $(GPROF_CFLAGS) $(SDL_CFLAGS)
2769 common-obj-$(CONFIG_TPM) += tpm.o
2770
2771 common-obj-y += backends/
2772@@ -82,11 +78,9 @@ qemu-seccomp.o-libs := $(SECCOMP_LIBS)
2773
2774 common-obj-$(CONFIG_FDT) += device_tree.o
2775
2776-######################################################################
2777-# qapi
2778-
2779 common-obj-y += qapi/
2780-endif
2781+
2782+endif # CONFIG_SOFTMMU
2783
2784 #######################################################################
2785 # Target-independent parts used in system and user emulation
2786@@ -125,11 +119,13 @@ vhost-user-blk-obj-y = contrib/vhost-user-blk/
2787 rdmacm-mux-obj-y = contrib/rdmacm-mux/
2788 vhost-user-input-obj-y = contrib/vhost-user-input/
2789 vhost-user-gpu-obj-y = contrib/vhost-user-gpu/
2790+virtiofsd-obj-y = tools/virtiofsd/
2791
2792 ######################################################################
2793 trace-events-subdirs =
2794 trace-events-subdirs += accel/kvm
2795 trace-events-subdirs += accel/tcg
2796+trace-events-subdirs += backends
2797 trace-events-subdirs += crypto
2798 trace-events-subdirs += monitor
2799 ifeq ($(CONFIG_USER_ONLY),y)
2800@@ -143,8 +139,8 @@ trace-events-subdirs += nbd
2801 trace-events-subdirs += scsi
2802 endif
2803 ifeq ($(CONFIG_SOFTMMU),y)
2804-trace-events-subdirs += chardev
2805 trace-events-subdirs += audio
2806+trace-events-subdirs += chardev
2807 trace-events-subdirs += hw/9pfs
2808 trace-events-subdirs += hw/acpi
2809 trace-events-subdirs += hw/alpha
2810@@ -179,6 +175,7 @@ trace-events-subdirs += hw/scsi
2811 trace-events-subdirs += hw/sd
2812 trace-events-subdirs += hw/sparc
2813 trace-events-subdirs += hw/sparc64
2814+trace-events-subdirs += hw/ssi
2815 trace-events-subdirs += hw/timer
2816 trace-events-subdirs += hw/tpm
2817 trace-events-subdirs += hw/usb
2818@@ -192,6 +189,7 @@ trace-events-subdirs += migration
2819 trace-events-subdirs += net
2820 trace-events-subdirs += ui
2821 endif
2822+trace-events-subdirs += hw/core
2823 trace-events-subdirs += hw/display
2824 trace-events-subdirs += qapi
2825 trace-events-subdirs += qom
2826@@ -204,7 +202,6 @@ trace-events-subdirs += target/riscv
2827 trace-events-subdirs += target/s390x
2828 trace-events-subdirs += target/sparc
2829 trace-events-subdirs += util
2830-trace-events-subdirs += hw/core
2831
2832 trace-events-files = $(SRC_PATH)/trace-events $(trace-events-subdirs:%=$(SRC_PATH)/%/trace-events)
2833
2834diff --git a/Makefile.target b/Makefile.target
2835index 24d79d2..8ed1eba 100644
2836--- a/Makefile.target
2837+++ b/Makefile.target
2838@@ -12,7 +12,7 @@ endif
2839
2840 $(call set-vpath, $(SRC_PATH):$(BUILD_DIR))
2841 ifdef CONFIG_LINUX
2842-QEMU_CFLAGS += -I../linux-headers
2843+QEMU_CFLAGS += -isystem ../linux-headers
2844 endif
2845 QEMU_CFLAGS += -iquote .. -iquote $(SRC_PATH)/target/$(TARGET_BASE_ARCH) -DNEED_CPU_H
2846
2847@@ -128,7 +128,8 @@ ifdef CONFIG_LINUX_USER
2848
2849 QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) \
2850 -I$(SRC_PATH)/linux-user/host/$(ARCH) \
2851- -I$(SRC_PATH)/linux-user
2852+ -I$(SRC_PATH)/linux-user \
2853+ -Ilinux-user/$(TARGET_ABI_DIR)
2854
2855 obj-y += linux-user/
2856 obj-y += gdbstub.o thunk.o
2857@@ -160,6 +161,7 @@ obj-y += qapi/
2858 obj-y += memory.o
2859 obj-y += memory_mapping.o
2860 obj-y += migration/ram.o
2861+obj-y += softmmu/
2862 LIBS := $(libs_softmmu) $(LIBS)
2863
2864 # Hardware support
2865@@ -184,7 +186,6 @@ dummy := $(call unnest-vars,.., \
2866 block-obj-m \
2867 chardev-obj-y \
2868 crypto-obj-y \
2869- crypto-user-obj-y \
2870 qom-obj-y \
2871 io-obj-y \
2872 common-obj-y \
2873@@ -193,7 +194,6 @@ all-obj-y += $(common-obj-y)
2874 all-obj-y += $(qom-obj-y)
2875 all-obj-$(CONFIG_SOFTMMU) += $(authz-obj-y)
2876 all-obj-$(CONFIG_SOFTMMU) += $(block-obj-y) $(chardev-obj-y)
2877-all-obj-$(CONFIG_USER_ONLY) += $(crypto-user-obj-y)
2878 all-obj-$(CONFIG_SOFTMMU) += $(crypto-obj-y)
2879 all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y)
2880
2881@@ -204,7 +204,7 @@ endif
2882 COMMON_LDADDS = ../libqemuutil.a
2883
2884 # build either PROG or PROGW
2885-$(QEMU_PROG_BUILD): $(all-obj-y) $(COMMON_LDADDS)
2886+$(QEMU_PROG_BUILD): $(all-obj-y) $(COMMON_LDADDS) $(softmmu-main-y)
2887 $(call LINK, $(filter-out %.mak, $^))
2888 ifdef CONFIG_DARWIN
2889 $(call quiet-command,Rez -append $(SRC_PATH)/pc-bios/qemu.rsrc -o $@,"REZ","$(TARGET_DIR)$@")
2890@@ -229,6 +229,22 @@ ifdef CONFIG_TRACE_SYSTEMTAP
2891 rm -f *.stp
2892 endif
2893
2894+ifdef CONFIG_FUZZ
2895+include $(SRC_PATH)/tests/qtest/fuzz/Makefile.include
2896+include $(SRC_PATH)/tests/qtest/Makefile.include
2897+
2898+fuzz: fuzz-vars
2899+fuzz-vars: QEMU_CFLAGS := $(FUZZ_CFLAGS) $(QEMU_CFLAGS)
2900+fuzz-vars: QEMU_LDFLAGS := $(FUZZ_LDFLAGS) $(QEMU_LDFLAGS)
2901+fuzz-vars: $(QEMU_PROG_FUZZ)
2902+dummy := $(call unnest-vars,, fuzz-obj-y)
2903+
2904+
2905+$(QEMU_PROG_FUZZ): config-devices.mak $(all-obj-y) $(COMMON_LDADDS) $(fuzz-obj-y)
2906+ $(call LINK, $(filter-out %.mak, $^))
2907+
2908+endif
2909+
2910 install: all
2911 ifneq ($(PROGS),)
2912 $(call install-prog,$(PROGS),$(DESTDIR)$(bindir))
2913diff --git a/VERSION b/VERSION
2914index 6aba2b2..0062ac9 100644
2915--- a/VERSION
2916+++ b/VERSION
2917@@ -1 +1 @@
2918-4.2.0
2919+5.0.0
2920diff --git a/accel/Makefile.objs b/accel/Makefile.objs
2921index 8b498d3..17e5ac6 100644
2922--- a/accel/Makefile.objs
2923+++ b/accel/Makefile.objs
2924@@ -1,4 +1,4 @@
2925-obj-$(CONFIG_SOFTMMU) += accel.o
2926+common-obj-$(CONFIG_SOFTMMU) += accel.o
2927 obj-$(call land,$(CONFIG_SOFTMMU),$(CONFIG_POSIX)) += qtest.o
2928 obj-$(CONFIG_KVM) += kvm/
2929 obj-$(CONFIG_TCG) += tcg/
2930diff --git a/accel/accel.c b/accel/accel.c
2931index 5fa3171..cb555e3 100644
2932--- a/accel/accel.c
2933+++ b/accel/accel.c
2934@@ -28,13 +28,7 @@
2935 #include "hw/boards.h"
2936 #include "sysemu/arch_init.h"
2937 #include "sysemu/sysemu.h"
2938-#include "sysemu/kvm.h"
2939-#include "sysemu/qtest.h"
2940-#include "hw/xen/xen.h"
2941 #include "qom/object.h"
2942-#include "qemu/error-report.h"
2943-#include "qemu/option.h"
2944-#include "qapi/error.h"
2945
2946 static const TypeInfo accel_type = {
2947 .name = TYPE_ACCEL,
2948@@ -44,7 +38,7 @@ static const TypeInfo accel_type = {
2949 };
2950
2951 /* Lookup AccelClass from opt_name. Returns NULL if not found */
2952-static AccelClass *accel_find(const char *opt_name)
2953+AccelClass *accel_find(const char *opt_name)
2954 {
2955 char *class_name = g_strdup_printf(ACCEL_CLASS_NAME("%s"), opt_name);
2956 AccelClass *ac = ACCEL_CLASS(object_class_by_name(class_name));
2957@@ -52,11 +46,9 @@ static AccelClass *accel_find(const char *opt_name)
2958 return ac;
2959 }
2960
2961-static int accel_init_machine(AccelClass *acc, MachineState *ms)
2962+int accel_init_machine(AccelState *accel, MachineState *ms)
2963 {
2964- ObjectClass *oc = OBJECT_CLASS(acc);
2965- const char *cname = object_class_get_name(oc);
2966- AccelState *accel = ACCEL(object_new(cname));
2967+ AccelClass *acc = ACCEL_GET_CLASS(accel);
2968 int ret;
2969 ms->accelerator = accel;
2970 *(acc->allowed) = true;
2971@@ -71,63 +63,9 @@ static int accel_init_machine(AccelClass *acc, MachineState *ms)
2972 return ret;
2973 }
2974
2975-void configure_accelerator(MachineState *ms, const char *progname)
2976+AccelState *current_accel(void)
2977 {
2978- const char *accel;
2979- char **accel_list, **tmp;
2980- int ret;
2981- bool accel_initialised = false;
2982- bool init_failed = false;
2983- AccelClass *acc = NULL;
2984-
2985- accel = qemu_opt_get(qemu_get_machine_opts(), "accel");
2986- if (accel == NULL) {
2987- /* Select the default accelerator */
2988- int pnlen = strlen(progname);
2989- if (pnlen >= 3 && g_str_equal(&progname[pnlen - 3], "kvm")) {
2990- /* If the program name ends with "kvm", we prefer KVM */
2991- accel = "kvm:tcg";
2992- } else {
2993-#if defined(CONFIG_TCG)
2994- accel = "tcg";
2995-#elif defined(CONFIG_KVM)
2996- accel = "kvm";
2997-#else
2998- error_report("No accelerator selected and"
2999- " no default accelerator available");
3000- exit(1);
3001-#endif
3002- }
3003- }
3004-
3005- accel_list = g_strsplit(accel, ":", 0);
3006-
3007- for (tmp = accel_list; !accel_initialised && tmp && *tmp; tmp++) {
3008- acc = accel_find(*tmp);
3009- if (!acc) {
3010- continue;
3011- }
3012- ret = accel_init_machine(acc, ms);
3013- if (ret < 0) {
3014- init_failed = true;
3015- error_report("failed to initialize %s: %s",
3016- acc->name, strerror(-ret));
3017- } else {
3018- accel_initialised = true;
3019- }
3020- }
3021- g_strfreev(accel_list);
3022-
3023- if (!accel_initialised) {
3024- if (!init_failed) {
3025- error_report("-machine accel=%s: No accelerator found", accel);
3026- }
3027- exit(1);
3028- }
3029-
3030- if (init_failed) {
3031- error_report("Back to %s accelerator", acc->name);
3032- }
3033+ return current_machine->accelerator;
3034 }
3035
3036 void accel_setup_post(MachineState *ms)
3037diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
3038index ca00daa..439a4ef 100644
3039--- a/accel/kvm/kvm-all.c
3040+++ b/accel/kvm/kvm-all.c
3041@@ -41,6 +41,9 @@
3042 #include "hw/irq.h"
3043 #include "sysemu/sev.h"
3044 #include "sysemu/balloon.h"
3045+#include "qapi/visitor.h"
3046+#include "qapi/qapi-types-common.h"
3047+#include "qapi/qapi-visit-common.h"
3048
3049 #include "hw/boards.h"
3050
3051@@ -92,6 +95,10 @@ struct KVMState
3052 int max_nested_state_len;
3053 int many_ioeventfds;
3054 int intx_set_mask;
3055+ int kvm_shadow_mem;
3056+ bool kernel_irqchip_allowed;
3057+ bool kernel_irqchip_required;
3058+ OnOffAuto kernel_irqchip_split;
3059 bool sync_mmu;
3060 bool manual_dirty_log_protect;
3061 /* The man page (and posix) say ioctl numbers are signed int, but
3062@@ -157,7 +164,7 @@ static NotifierList kvm_irqchip_change_notifiers =
3063
3064 int kvm_get_max_memslots(void)
3065 {
3066- KVMState *s = KVM_STATE(current_machine->accelerator);
3067+ KVMState *s = KVM_STATE(current_accel());
3068
3069 return s->nr_slots;
3070 }
3071@@ -301,13 +308,23 @@ static int kvm_set_user_memory_region(KVMMemoryListener *kml, KVMSlot *slot, boo
3072 /* Set the slot size to 0 before setting the slot to the desired
3073 * value. This is needed based on KVM commit 75d61fbc. */
3074 mem.memory_size = 0;
3075- kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem);
3076+ ret = kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem);
3077+ if (ret < 0) {
3078+ goto err;
3079+ }
3080 }
3081 mem.memory_size = slot->memory_size;
3082 ret = kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem);
3083 slot->old_flags = mem.flags;
3084+err:
3085 trace_kvm_set_user_memory(mem.slot, mem.flags, mem.guest_phys_addr,
3086 mem.memory_size, mem.userspace_addr, ret);
3087+ if (ret < 0) {
3088+ error_report("%s: KVM_SET_USER_MEMORY_REGION failed, slot=%d,"
3089+ " start=0x%" PRIx64 ", size=0x%" PRIx64 ": %s",
3090+ __func__, mem.slot, slot->start_addr,
3091+ (uint64_t)mem.memory_size, strerror(errno));
3092+ }
3093 return ret;
3094 }
3095
3096@@ -518,6 +535,27 @@ static int kvm_get_dirty_pages_log_range(MemoryRegionSection *section,
3097
3098 #define ALIGN(x, y) (((x)+(y)-1) & ~((y)-1))
3099
3100+/* Allocate the dirty bitmap for a slot */
3101+static void kvm_memslot_init_dirty_bitmap(KVMSlot *mem)
3102+{
3103+ /*
3104+ * XXX bad kernel interface alert
3105+ * For dirty bitmap, kernel allocates array of size aligned to
3106+ * bits-per-long. But for case when the kernel is 64bits and
3107+ * the userspace is 32bits, userspace can't align to the same
3108+ * bits-per-long, since sizeof(long) is different between kernel
3109+ * and user space. This way, userspace will provide buffer which
3110+ * may be 4 bytes less than the kernel will use, resulting in
3111+ * userspace memory corruption (which is not detectable by valgrind
3112+ * too, in most cases).
3113+ * So for now, let's align to 64 instead of HOST_LONG_BITS here, in
3114+ * a hope that sizeof(long) won't become >8 any time soon.
3115+ */
3116+ hwaddr bitmap_size = ALIGN(((mem->memory_size) >> TARGET_PAGE_BITS),
3117+ /*HOST_LONG_BITS*/ 64) / 8;
3118+ mem->dirty_bmap = g_malloc0(bitmap_size);
3119+}
3120+
3121 /**
3122 * kvm_physical_sync_dirty_bitmap - Sync dirty bitmap from kernel space
3123 *
3124@@ -550,23 +588,9 @@ static int kvm_physical_sync_dirty_bitmap(KVMMemoryListener *kml,
3125 goto out;
3126 }
3127
3128- /* XXX bad kernel interface alert
3129- * For dirty bitmap, kernel allocates array of size aligned to
3130- * bits-per-long. But for case when the kernel is 64bits and
3131- * the userspace is 32bits, userspace can't align to the same
3132- * bits-per-long, since sizeof(long) is different between kernel
3133- * and user space. This way, userspace will provide buffer which
3134- * may be 4 bytes less than the kernel will use, resulting in
3135- * userspace memory corruption (which is not detectable by valgrind
3136- * too, in most cases).
3137- * So for now, let's align to 64 instead of HOST_LONG_BITS here, in
3138- * a hope that sizeof(long) won't become >8 any time soon.
3139- */
3140 if (!mem->dirty_bmap) {
3141- hwaddr bitmap_size = ALIGN(((mem->memory_size) >> TARGET_PAGE_BITS),
3142- /*HOST_LONG_BITS*/ 64) / 8;
3143 /* Allocate on the first log_sync, once and for all */
3144- mem->dirty_bmap = g_malloc0(bitmap_size);
3145+ kvm_memslot_init_dirty_bitmap(mem);
3146 }
3147
3148 d.dirty_bitmap = mem->dirty_bmap;
3149@@ -1067,6 +1091,13 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml,
3150 mem->ram = ram;
3151 mem->flags = kvm_mem_flags(mr);
3152
3153+ if (mem->flags & KVM_MEM_LOG_DIRTY_PAGES) {
3154+ /*
3155+ * Reallocate the bmap; it means it doesn't disappear in
3156+ * middle of a migrate.
3157+ */
3158+ kvm_memslot_init_dirty_bitmap(mem);
3159+ }
3160 err = kvm_set_user_memory_region(kml, mem, true);
3161 if (err) {
3162 fprintf(stderr, "%s: error registering slot: %s\n", __func__,
3163@@ -1758,10 +1789,11 @@ void kvm_irqchip_set_qemuirq_gsi(KVMState *s, qemu_irq irq, int gsi)
3164 g_hash_table_insert(s->gsimap, irq, GINT_TO_POINTER(gsi));
3165 }
3166
3167-static void kvm_irqchip_create(MachineState *machine, KVMState *s)
3168+static void kvm_irqchip_create(KVMState *s)
3169 {
3170 int ret;
3171
3172+ assert(s->kernel_irqchip_split != ON_OFF_AUTO_AUTO);
3173 if (kvm_check_extension(s, KVM_CAP_IRQCHIP)) {
3174 ;
3175 } else if (kvm_check_extension(s, KVM_CAP_S390_IRQCHIP)) {
3176@@ -1776,9 +1808,9 @@ static void kvm_irqchip_create(MachineState *machine, KVMState *s)
3177
3178 /* First probe and see if there's a arch-specific hook to create the
3179 * in-kernel irqchip for us */
3180- ret = kvm_arch_irqchip_create(machine, s);
3181+ ret = kvm_arch_irqchip_create(s);
3182 if (ret == 0) {
3183- if (machine_kernel_irqchip_split(machine)) {
3184+ if (s->kernel_irqchip_split == ON_OFF_AUTO_ON) {
3185 perror("Split IRQ chip mode not supported.");
3186 exit(1);
3187 } else {
3188@@ -1826,7 +1858,7 @@ static int kvm_max_vcpu_id(KVMState *s)
3189
3190 bool kvm_vcpu_id_is_valid(int vcpu_id)
3191 {
3192- KVMState *s = KVM_STATE(current_machine->accelerator);
3193+ KVMState *s = KVM_STATE(current_accel());
3194 return vcpu_id >= 0 && vcpu_id < kvm_max_vcpu_id(s);
3195 }
3196
3197@@ -2049,8 +2081,12 @@ static int kvm_init(MachineState *ms)
3198 goto err;
3199 }
3200
3201- if (machine_kernel_irqchip_allowed(ms)) {
3202- kvm_irqchip_create(ms, s);
3203+ if (s->kernel_irqchip_split == ON_OFF_AUTO_AUTO) {
3204+ s->kernel_irqchip_split = mc->default_kernel_irqchip_split ? ON_OFF_AUTO_ON : ON_OFF_AUTO_OFF;
3205+ }
3206+
3207+ if (s->kernel_irqchip_allowed) {
3208+ kvm_irqchip_create(s);
3209 }
3210
3211 if (kvm_eventfds_allowed) {
3212@@ -2152,9 +2188,9 @@ void kvm_flush_coalesced_mmio_buffer(void)
3213 ent = &ring->coalesced_mmio[ring->first];
3214
3215 if (ent->pio == 1) {
3216- address_space_rw(&address_space_io, ent->phys_addr,
3217- MEMTXATTRS_UNSPECIFIED, ent->data,
3218- ent->len, true);
3219+ address_space_write(&address_space_io, ent->phys_addr,
3220+ MEMTXATTRS_UNSPECIFIED, ent->data,
3221+ ent->len);
3222 } else {
3223 cpu_physical_memory_write(ent->phys_addr, ent->data, ent->len);
3224 }
3225@@ -2940,6 +2976,95 @@ static bool kvm_accel_has_memory(MachineState *ms, AddressSpace *as,
3226 return false;
3227 }
3228
3229+static void kvm_get_kvm_shadow_mem(Object *obj, Visitor *v,
3230+ const char *name, void *opaque,
3231+ Error **errp)
3232+{
3233+ KVMState *s = KVM_STATE(obj);
3234+ int64_t value = s->kvm_shadow_mem;
3235+
3236+ visit_type_int(v, name, &value, errp);
3237+}
3238+
3239+static void kvm_set_kvm_shadow_mem(Object *obj, Visitor *v,
3240+ const char *name, void *opaque,
3241+ Error **errp)
3242+{
3243+ KVMState *s = KVM_STATE(obj);
3244+ Error *error = NULL;
3245+ int64_t value;
3246+
3247+ visit_type_int(v, name, &value, &error);
3248+ if (error) {
3249+ error_propagate(errp, error);
3250+ return;
3251+ }
3252+
3253+ s->kvm_shadow_mem = value;
3254+}
3255+
3256+static void kvm_set_kernel_irqchip(Object *obj, Visitor *v,
3257+ const char *name, void *opaque,
3258+ Error **errp)
3259+{
3260+ Error *err = NULL;
3261+ KVMState *s = KVM_STATE(obj);
3262+ OnOffSplit mode;
3263+
3264+ visit_type_OnOffSplit(v, name, &mode, &err);
3265+ if (err) {
3266+ error_propagate(errp, err);
3267+ return;
3268+ } else {
3269+ switch (mode) {
3270+ case ON_OFF_SPLIT_ON:
3271+ s->kernel_irqchip_allowed = true;
3272+ s->kernel_irqchip_required = true;
3273+ s->kernel_irqchip_split = ON_OFF_AUTO_OFF;
3274+ break;
3275+ case ON_OFF_SPLIT_OFF:
3276+ s->kernel_irqchip_allowed = false;
3277+ s->kernel_irqchip_required = false;
3278+ s->kernel_irqchip_split = ON_OFF_AUTO_OFF;
3279+ break;
3280+ case ON_OFF_SPLIT_SPLIT:
3281+ s->kernel_irqchip_allowed = true;
3282+ s->kernel_irqchip_required = true;
3283+ s->kernel_irqchip_split = ON_OFF_AUTO_ON;
3284+ break;
3285+ default:
3286+ /* The value was checked in visit_type_OnOffSplit() above. If
3287+ * we get here, then something is wrong in QEMU.
3288+ */
3289+ abort();
3290+ }
3291+ }
3292+}
3293+
3294+bool kvm_kernel_irqchip_allowed(void)
3295+{
3296+ return kvm_state->kernel_irqchip_allowed;
3297+}
3298+
3299+bool kvm_kernel_irqchip_required(void)
3300+{
3301+ return kvm_state->kernel_irqchip_required;
3302+}
3303+
3304+bool kvm_kernel_irqchip_split(void)
3305+{
3306+ return kvm_state->kernel_irqchip_split == ON_OFF_AUTO_ON;
3307+}
3308+
3309+static void kvm_accel_instance_init(Object *obj)
3310+{
3311+ KVMState *s = KVM_STATE(obj);
3312+
3313+ s->kvm_shadow_mem = -1;
3314+ s->kernel_irqchip_allowed = true;
3315+ s->kernel_irqchip_split = ON_OFF_AUTO_AUTO;
3316+}
3317+
3318 static void kvm_accel_class_init(ObjectClass *oc, void *data)
3319 {
3320 AccelClass *ac = ACCEL_CLASS(oc);
3321@@ -2947,11 +3072,24 @@ static void kvm_accel_class_init(ObjectClass *oc, void *data)
3322 ac->init_machine = kvm_init;
3323 ac->has_memory = kvm_accel_has_memory;
3324 ac->allowed = &kvm_allowed;
3325+
3326+ object_class_property_add(oc, "kernel-irqchip", "on|off|split",
3327+ NULL, kvm_set_kernel_irqchip,
3328+ NULL, NULL, &error_abort);
3329+ object_class_property_set_description(oc, "kernel-irqchip",
3330+ "Configure KVM in-kernel irqchip", &error_abort);
3331+
3332+ object_class_property_add(oc, "kvm-shadow-mem", "int",
3333+ kvm_get_kvm_shadow_mem, kvm_set_kvm_shadow_mem,
3334+ NULL, NULL, &error_abort);
3335+ object_class_property_set_description(oc, "kvm-shadow-mem",
3336+ "KVM shadow MMU size", &error_abort);
3337 }
3338
3339 static const TypeInfo kvm_accel_type = {
3340 .name = TYPE_KVM_ACCEL,
3341 .parent = TYPE_ACCEL,
3342+ .instance_init = kvm_accel_instance_init,
3343 .class_init = kvm_accel_class_init,
3344 .instance_size = sizeof(KVMState),
3345 };
3346diff --git a/accel/tcg/atomic_template.h b/accel/tcg/atomic_template.h
3347index 8376762..2696948 100644
3348--- a/accel/tcg/atomic_template.h
3349+++ b/accel/tcg/atomic_template.h
3350@@ -64,13 +64,10 @@
3351 the ATOMIC_NAME macro, and redefined below. */
3352 #if DATA_SIZE == 1
3353 # define END
3354-# define MEND _be /* either le or be would be fine */
3355 #elif defined(HOST_WORDS_BIGENDIAN)
3356 # define END _be
3357-# define MEND _be
3358 #else
3359 # define END _le
3360-# define MEND _le
3361 #endif
3362
3363 ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, target_ulong addr,
3364@@ -79,8 +76,8 @@ ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, target_ulong addr,
3365 ATOMIC_MMU_DECLS;
3366 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP;
3367 DATA_TYPE ret;
3368- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false,
3369- ATOMIC_MMU_IDX);
3370+ uint16_t info = trace_mem_build_info(SHIFT, false, 0, false,
3371+ ATOMIC_MMU_IDX);
3372
3373 atomic_trace_rmw_pre(env, addr, info);
3374 #if DATA_SIZE == 16
3375@@ -99,8 +96,8 @@ ABI_TYPE ATOMIC_NAME(ld)(CPUArchState *env, target_ulong addr EXTRA_ARGS)
3376 {
3377 ATOMIC_MMU_DECLS;
3378 DATA_TYPE val, *haddr = ATOMIC_MMU_LOOKUP;
3379- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false,
3380- ATOMIC_MMU_IDX);
3381+ uint16_t info = trace_mem_build_info(SHIFT, false, 0, false,
3382+ ATOMIC_MMU_IDX);
3383
3384 atomic_trace_ld_pre(env, addr, info);
3385 val = atomic16_read(haddr);
3386@@ -114,8 +111,8 @@ void ATOMIC_NAME(st)(CPUArchState *env, target_ulong addr,
3387 {
3388 ATOMIC_MMU_DECLS;
3389 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP;
3390- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, true,
3391- ATOMIC_MMU_IDX);
3392+ uint16_t info = trace_mem_build_info(SHIFT, false, 0, true,
3393+ ATOMIC_MMU_IDX);
3394
3395 atomic_trace_st_pre(env, addr, info);
3396 atomic16_set(haddr, val);
3397@@ -130,8 +127,8 @@ ABI_TYPE ATOMIC_NAME(xchg)(CPUArchState *env, target_ulong addr,
3398 ATOMIC_MMU_DECLS;
3399 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP;
3400 DATA_TYPE ret;
3401- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false,
3402- ATOMIC_MMU_IDX);
3403+ uint16_t info = trace_mem_build_info(SHIFT, false, 0, false,
3404+ ATOMIC_MMU_IDX);
3405
3406 atomic_trace_rmw_pre(env, addr, info);
3407 ret = atomic_xchg__nocheck(haddr, val);
3408@@ -147,10 +144,8 @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
3409 ATOMIC_MMU_DECLS; \
3410 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; \
3411 DATA_TYPE ret; \
3412- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, \
3413- false, \
3414- ATOMIC_MMU_IDX); \
3415- \
3416+ uint16_t info = trace_mem_build_info(SHIFT, false, 0, false, \
3417+ ATOMIC_MMU_IDX); \
3418 atomic_trace_rmw_pre(env, addr, info); \
3419 ret = atomic_##X(haddr, val); \
3420 ATOMIC_MMU_CLEANUP; \
3421@@ -183,10 +178,8 @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
3422 ATOMIC_MMU_DECLS; \
3423 XDATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; \
3424 XDATA_TYPE cmp, old, new, val = xval; \
3425- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, \
3426- false, \
3427- ATOMIC_MMU_IDX); \
3428- \
3429+ uint16_t info = trace_mem_build_info(SHIFT, false, 0, false, \
3430+ ATOMIC_MMU_IDX); \
3431 atomic_trace_rmw_pre(env, addr, info); \
3432 smp_mb(); \
3433 cmp = atomic_read__nocheck(haddr); \
3434@@ -213,7 +206,6 @@ GEN_ATOMIC_HELPER_FN(umax_fetch, MAX, DATA_TYPE, new)
3435 #endif /* DATA SIZE >= 16 */
3436
3437 #undef END
3438-#undef MEND
3439
3440 #if DATA_SIZE > 1
3441
3442@@ -221,10 +213,8 @@ GEN_ATOMIC_HELPER_FN(umax_fetch, MAX, DATA_TYPE, new)
3443 within the ATOMIC_NAME macro. */
3444 #ifdef HOST_WORDS_BIGENDIAN
3445 # define END _le
3446-# define MEND _le
3447 #else
3448 # define END _be
3449-# define MEND _be
3450 #endif
3451
3452 ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, target_ulong addr,
3453@@ -233,9 +223,8 @@ ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, target_ulong addr,
3454 ATOMIC_MMU_DECLS;
3455 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP;
3456 DATA_TYPE ret;
3457- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT,
3458- false,
3459- ATOMIC_MMU_IDX);
3460+ uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, false,
3461+ ATOMIC_MMU_IDX);
3462
3463 atomic_trace_rmw_pre(env, addr, info);
3464 #if DATA_SIZE == 16
3465@@ -254,9 +243,8 @@ ABI_TYPE ATOMIC_NAME(ld)(CPUArchState *env, target_ulong addr EXTRA_ARGS)
3466 {
3467 ATOMIC_MMU_DECLS;
3468 DATA_TYPE val, *haddr = ATOMIC_MMU_LOOKUP;
3469- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT,
3470- false,
3471- ATOMIC_MMU_IDX);
3472+ uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, false,
3473+ ATOMIC_MMU_IDX);
3474
3475 atomic_trace_ld_pre(env, addr, info);
3476 val = atomic16_read(haddr);
3477@@ -270,9 +258,8 @@ void ATOMIC_NAME(st)(CPUArchState *env, target_ulong addr,
3478 {
3479 ATOMIC_MMU_DECLS;
3480 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP;
3481- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT,
3482- true,
3483- ATOMIC_MMU_IDX);
3484+ uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, true,
3485+ ATOMIC_MMU_IDX);
3486
3487 val = BSWAP(val);
3488 atomic_trace_st_pre(env, addr, info);
3489@@ -289,9 +276,8 @@ ABI_TYPE ATOMIC_NAME(xchg)(CPUArchState *env, target_ulong addr,
3490 ATOMIC_MMU_DECLS;
3491 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP;
3492 ABI_TYPE ret;
3493- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT,
3494- false,
3495- ATOMIC_MMU_IDX);
3496+ uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, false,
3497+ ATOMIC_MMU_IDX);
3498
3499 atomic_trace_rmw_pre(env, addr, info);
3500 ret = atomic_xchg__nocheck(haddr, BSWAP(val));
3501@@ -307,10 +293,8 @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
3502 ATOMIC_MMU_DECLS; \
3503 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; \
3504 DATA_TYPE ret; \
3505- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, \
3506- false, \
3507- ATOMIC_MMU_IDX); \
3508- \
3509+ uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, \
3510+ false, ATOMIC_MMU_IDX); \
3511 atomic_trace_rmw_pre(env, addr, info); \
3512 ret = atomic_##X(haddr, BSWAP(val)); \
3513 ATOMIC_MMU_CLEANUP; \
3514@@ -341,10 +325,8 @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, target_ulong addr, \
3515 ATOMIC_MMU_DECLS; \
3516 XDATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; \
3517 XDATA_TYPE ldo, ldn, old, new, val = xval; \
3518- uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, \
3519- false, \
3520- ATOMIC_MMU_IDX); \
3521- \
3522+ uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, \
3523+ false, ATOMIC_MMU_IDX); \
3524 atomic_trace_rmw_pre(env, addr, info); \
3525 smp_mb(); \
3526 ldn = atomic_read__nocheck(haddr); \
3527@@ -378,7 +360,6 @@ GEN_ATOMIC_HELPER_FN(add_fetch, ADD, DATA_TYPE, new)
3528 #endif /* DATA_SIZE >= 16 */
3529
3530 #undef END
3531-#undef MEND
3532 #endif /* DATA_SIZE > 1 */
3533
3534 #undef BSWAP
3535diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
3536index c01f59c..d95c484 100644
3537--- a/accel/tcg/cpu-exec.c
3538+++ b/accel/tcg/cpu-exec.c
3539@@ -23,7 +23,7 @@
3540 #include "trace.h"
3541 #include "disas/disas.h"
3542 #include "exec/exec-all.h"
3543-#include "tcg.h"
3544+#include "tcg/tcg.h"
3545 #include "qemu/atomic.h"
3546 #include "sysemu/qtest.h"
3547 #include "qemu/timer.h"
3548@@ -156,7 +156,7 @@ static inline tcg_target_ulong cpu_tb_exec(CPUState *cpu, TranslationBlock *itb)
3549 #if defined(DEBUG_DISAS)
3550 if (qemu_loglevel_mask(CPU_LOG_TB_CPU)
3551 && qemu_log_in_addr_range(itb->pc)) {
3552- qemu_log_lock();
3553+ FILE *logfile = qemu_log_lock();
3554 int flags = 0;
3555 if (qemu_loglevel_mask(CPU_LOG_TB_FPU)) {
3556 flags |= CPU_DUMP_FPU;
3557@@ -165,7 +165,7 @@ static inline tcg_target_ulong cpu_tb_exec(CPUState *cpu, TranslationBlock *itb)
3558 flags |= CPU_DUMP_CCOP;
3559 #endif
3560 log_cpu_state(cpu, flags);
3561- qemu_log_unlock();
3562+ qemu_log_unlock(logfile);
3563 }
3564 #endif /* DEBUG_DISAS */
3565
3566@@ -240,6 +240,8 @@ void cpu_exec_step_atomic(CPUState *cpu)
3567 uint32_t cf_mask = cflags & CF_HASH_MASK;
3568
3569 if (sigsetjmp(cpu->jmp_env, 0) == 0) {
3570+ start_exclusive();
3571+
3572 tb = tb_lookup__cpu_state(cpu, &pc, &cs_base, &flags, cf_mask);
3573 if (tb == NULL) {
3574 mmap_lock();
3575@@ -247,8 +249,6 @@ void cpu_exec_step_atomic(CPUState *cpu)
3576 mmap_unlock();
3577 }
3578
3579- start_exclusive();
3580-
3581 /* Since we got here, we know that parallel_cpus must be true. */
3582 parallel_cpus = false;
3583 cc->cpu_exec_enter(cpu);
3584@@ -271,14 +271,15 @@ void cpu_exec_step_atomic(CPUState *cpu)
3585 qemu_plugin_disable_mem_helpers(cpu);
3586 }
3587
3588- if (cpu_in_exclusive_context(cpu)) {
3589- /* We might longjump out of either the codegen or the
3590- * execution, so must make sure we only end the exclusive
3591- * region if we started it.
3592- */
3593- parallel_cpus = true;
3594- end_exclusive();
3595- }
3596+
3597+ /*
3598+ * As we start the exclusive region before codegen we must still
3599+ * be in the region if we longjump out of either the codegen or
3600+ * the execution.
3601+ */
3602+ g_assert(cpu_in_exclusive_context(cpu));
3603+ parallel_cpus = true;
3604+ end_exclusive();
3605 }
3606
3607 struct tb_desc {
3608diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
3609index 9822194..e3b5750 100644
3610--- a/accel/tcg/cputlb.c
3611+++ b/accel/tcg/cputlb.c
3612@@ -34,6 +34,8 @@
3613 #include "qemu/atomic.h"
3614 #include "qemu/atomic128.h"
3615 #include "translate-all.h"
3616+#include "trace-root.h"
3617+#include "trace/mem.h"
3618 #ifdef CONFIG_PLUGIN
3619 #include "qemu/plugin-memory.h"
3620 #endif
3621@@ -78,9 +80,14 @@ QEMU_BUILD_BUG_ON(sizeof(target_ulong) > sizeof(run_on_cpu_data));
3622 QEMU_BUILD_BUG_ON(NB_MMU_MODES > 16);
3623 #define ALL_MMUIDX_BITS ((1 << NB_MMU_MODES) - 1)
3624
3625-static inline size_t sizeof_tlb(CPUArchState *env, uintptr_t mmu_idx)
3626+static inline size_t tlb_n_entries(CPUTLBDescFast *fast)
3627 {
3628- return env_tlb(env)->f[mmu_idx].mask + (1 << CPU_TLB_ENTRY_BITS);
3629+ return (fast->mask >> CPU_TLB_ENTRY_BITS) + 1;
3630+}
3631+
3632+static inline size_t sizeof_tlb(CPUTLBDescFast *fast)
3633+{
3634+ return fast->mask + (1 << CPU_TLB_ENTRY_BITS);
3635 }
3636
3637 static void tlb_window_reset(CPUTLBDesc *desc, int64_t ns,
3638@@ -90,26 +97,10 @@ static void tlb_window_reset(CPUTLBDesc *desc, int64_t ns,
3639 desc->window_max_entries = max_entries;
3640 }
3641
3642-static void tlb_dyn_init(CPUArchState *env)
3643-{
3644- int i;
3645-
3646- for (i = 0; i < NB_MMU_MODES; i++) {
3647- CPUTLBDesc *desc = &env_tlb(env)->d[i];
3648- size_t n_entries = 1 << CPU_TLB_DYN_DEFAULT_BITS;
3649-
3650- tlb_window_reset(desc, get_clock_realtime(), 0);
3651- desc->n_used_entries = 0;
3652- env_tlb(env)->f[i].mask = (n_entries - 1) << CPU_TLB_ENTRY_BITS;
3653- env_tlb(env)->f[i].table = g_new(CPUTLBEntry, n_entries);
3654- env_tlb(env)->d[i].iotlb = g_new(CPUIOTLBEntry, n_entries);
3655- }
3656-}
3657-
3658 /**
3659 * tlb_mmu_resize_locked() - perform TLB resize bookkeeping; resize if necessary
3660- * @env: CPU that owns the TLB
3661- * @mmu_idx: MMU index of the TLB
3662+ * @desc: The CPUTLBDesc portion of the TLB
3663+ * @fast: The CPUTLBDescFast portion of the same TLB
3664 *
3665 * Called with tlb_lock_held.
3666 *
3667@@ -146,13 +137,12 @@ static void tlb_dyn_init(CPUArchState *env)
3668 * high), since otherwise we are likely to have a significant amount of
3669 * conflict misses.
3670 */
3671-static void tlb_mmu_resize_locked(CPUArchState *env, int mmu_idx)
3672+static void tlb_mmu_resize_locked(CPUTLBDesc *desc, CPUTLBDescFast *fast,
3673+ int64_t now)
3674 {
3675- CPUTLBDesc *desc = &env_tlb(env)->d[mmu_idx];
3676- size_t old_size = tlb_n_entries(env, mmu_idx);
3677+ size_t old_size = tlb_n_entries(fast);
3678 size_t rate;
3679 size_t new_size = old_size;
3680- int64_t now = get_clock_realtime();
3681 int64_t window_len_ms = 100;
3682 int64_t window_len_ns = window_len_ms * 1000 * 1000;
3683 bool window_expired = now > desc->window_begin_ns + window_len_ns;
3684@@ -191,14 +181,15 @@ static void tlb_mmu_resize_locked(CPUArchState *env, int mmu_idx)
3685 return;
3686 }
3687
3688- g_free(env_tlb(env)->f[mmu_idx].table);
3689- g_free(env_tlb(env)->d[mmu_idx].iotlb);
3690+ g_free(fast->table);
3691+ g_free(desc->iotlb);
3692
3693 tlb_window_reset(desc, now, 0);
3694 /* desc->n_used_entries is cleared by the caller */
3695- env_tlb(env)->f[mmu_idx].mask = (new_size - 1) << CPU_TLB_ENTRY_BITS;
3696- env_tlb(env)->f[mmu_idx].table = g_try_new(CPUTLBEntry, new_size);
3697- env_tlb(env)->d[mmu_idx].iotlb = g_try_new(CPUIOTLBEntry, new_size);
3698+ fast->mask = (new_size - 1) << CPU_TLB_ENTRY_BITS;
3699+ fast->table = g_try_new(CPUTLBEntry, new_size);
3700+ desc->iotlb = g_try_new(CPUIOTLBEntry, new_size);
3701+
3702 /*
3703 * If the allocations fail, try smaller sizes. We just freed some
3704 * memory, so going back to half of new_size has a good chance of working.
3705@@ -206,27 +197,51 @@ static void tlb_mmu_resize_locked(CPUArchState *env, int mmu_idx)
3706 * allocations to fail though, so we progressively reduce the allocation
3707 * size, aborting if we cannot even allocate the smallest TLB we support.
3708 */
3709- while (env_tlb(env)->f[mmu_idx].table == NULL ||
3710- env_tlb(env)->d[mmu_idx].iotlb == NULL) {
3711+ while (fast->table == NULL || desc->iotlb == NULL) {
3712 if (new_size == (1 << CPU_TLB_DYN_MIN_BITS)) {
3713 error_report("%s: %s", __func__, strerror(errno));
3714 abort();
3715 }
3716 new_size = MAX(new_size >> 1, 1 << CPU_TLB_DYN_MIN_BITS);
3717- env_tlb(env)->f[mmu_idx].mask = (new_size - 1) << CPU_TLB_ENTRY_BITS;
3718+ fast->mask = (new_size - 1) << CPU_TLB_ENTRY_BITS;
3719
3720- g_free(env_tlb(env)->f[mmu_idx].table);
3721- g_free(env_tlb(env)->d[mmu_idx].iotlb);
3722- env_tlb(env)->f[mmu_idx].table = g_try_new(CPUTLBEntry, new_size);
3723- env_tlb(env)->d[mmu_idx].iotlb = g_try_new(CPUIOTLBEntry, new_size);
3724+ g_free(fast->table);
3725+ g_free(desc->iotlb);
3726+ fast->table = g_try_new(CPUTLBEntry, new_size);
3727+ desc->iotlb = g_try_new(CPUIOTLBEntry, new_size);
3728 }
3729 }
3730
3731-static inline void tlb_table_flush_by_mmuidx(CPUArchState *env, int mmu_idx)
3732+static void tlb_mmu_flush_locked(CPUTLBDesc *desc, CPUTLBDescFast *fast)
3733 {
3734- tlb_mmu_resize_locked(env, mmu_idx);
3735- memset(env_tlb(env)->f[mmu_idx].table, -1, sizeof_tlb(env, mmu_idx));
3736- env_tlb(env)->d[mmu_idx].n_used_entries = 0;
3737+ desc->n_used_entries = 0;
3738+ desc->large_page_addr = -1;
3739+ desc->large_page_mask = -1;
3740+ desc->vindex = 0;
3741+ memset(fast->table, -1, sizeof_tlb(fast));
3742+ memset(desc->vtable, -1, sizeof(desc->vtable));
3743+}
3744+
3745+static void tlb_flush_one_mmuidx_locked(CPUArchState *env, int mmu_idx,
3746+ int64_t now)
3747+{
3748+ CPUTLBDesc *desc = &env_tlb(env)->d[mmu_idx];
3749+ CPUTLBDescFast *fast = &env_tlb(env)->f[mmu_idx];
3750+
3751+ tlb_mmu_resize_locked(desc, fast, now);
3752+ tlb_mmu_flush_locked(desc, fast);
3753+}
3754+
3755+static void tlb_mmu_init(CPUTLBDesc *desc, CPUTLBDescFast *fast, int64_t now)
3756+{
3757+ size_t n_entries = 1 << CPU_TLB_DYN_DEFAULT_BITS;
3758+
3759+ tlb_window_reset(desc, now, 0);
3760+ desc->n_used_entries = 0;
3761+ fast->mask = (n_entries - 1) << CPU_TLB_ENTRY_BITS;
3762+ fast->table = g_new(CPUTLBEntry, n_entries);
3763+ desc->iotlb = g_new(CPUIOTLBEntry, n_entries);
3764+ tlb_mmu_flush_locked(desc, fast);
3765 }
3766
3767 static inline void tlb_n_used_entries_inc(CPUArchState *env, uintptr_t mmu_idx)
3768@@ -242,13 +257,17 @@ static inline void tlb_n_used_entries_dec(CPUArchState *env, uintptr_t mmu_idx)
3769 void tlb_init(CPUState *cpu)
3770 {
3771 CPUArchState *env = cpu->env_ptr;
3772+ int64_t now = get_clock_realtime();
3773+ int i;
3774
3775 qemu_spin_init(&env_tlb(env)->c.lock);
3776
3777- /* Ensure that cpu_reset performs a full flush. */
3778- env_tlb(env)->c.dirty = ALL_MMUIDX_BITS;
3779+ /* All tlbs are initialized flushed. */
3780+ env_tlb(env)->c.dirty = 0;
3781
3782- tlb_dyn_init(env);
3783+ for (i = 0; i < NB_MMU_MODES; i++) {
3784+ tlb_mmu_init(&env_tlb(env)->d[i], &env_tlb(env)->f[i], now);
3785+ }
3786 }
3787
3788 /* flush_all_helper: run fn across all cpus
3789@@ -287,21 +306,12 @@ void tlb_flush_counts(size_t *pfull, size_t *ppart, size_t *pelide)
3790 *pelide = elide;
3791 }
3792
3793-static void tlb_flush_one_mmuidx_locked(CPUArchState *env, int mmu_idx)
3794-{
3795- tlb_table_flush_by_mmuidx(env, mmu_idx);
3796- env_tlb(env)->d[mmu_idx].large_page_addr = -1;
3797- env_tlb(env)->d[mmu_idx].large_page_mask = -1;
3798- env_tlb(env)->d[mmu_idx].vindex = 0;
3799- memset(env_tlb(env)->d[mmu_idx].vtable, -1,
3800- sizeof(env_tlb(env)->d[0].vtable));
3801-}
3802-
3803 static void tlb_flush_by_mmuidx_async_work(CPUState *cpu, run_on_cpu_data data)
3804 {
3805 CPUArchState *env = cpu->env_ptr;
3806 uint16_t asked = data.host_int;
3807 uint16_t all_dirty, work, to_clean;
3808+ int64_t now = get_clock_realtime();
3809
3810 assert_cpu_is_self(cpu);
3811
3812@@ -316,7 +326,7 @@ static void tlb_flush_by_mmuidx_async_work(CPUState *cpu, run_on_cpu_data data)
3813
3814 for (work = to_clean; work != 0; work &= work - 1) {
3815 int mmu_idx = ctz32(work);
3816- tlb_flush_one_mmuidx_locked(env, mmu_idx);
3817+ tlb_flush_one_mmuidx_locked(env, mmu_idx, now);
3818 }
3819
3820 qemu_spin_unlock(&env_tlb(env)->c.lock);
3821@@ -438,7 +448,7 @@ static void tlb_flush_page_locked(CPUArchState *env, int midx,
3822 tlb_debug("forcing full flush midx %d ("
3823 TARGET_FMT_lx "/" TARGET_FMT_lx ")\n",
3824 midx, lp_addr, lp_mask);
3825- tlb_flush_one_mmuidx_locked(env, midx);
3826+ tlb_flush_one_mmuidx_locked(env, midx, get_clock_realtime());
3827 } else {
3828 if (tlb_flush_entry_locked(tlb_entry(env, midx, page), page)) {
3829 tlb_n_used_entries_dec(env, midx);
3830@@ -447,28 +457,29 @@ static void tlb_flush_page_locked(CPUArchState *env, int midx,
3831 }
3832 }
3833
3834-/* As we are going to hijack the bottom bits of the page address for a
3835- * mmuidx bit mask we need to fail to build if we can't do that
3836+/**
3837+ * tlb_flush_page_by_mmuidx_async_0:
3838+ * @cpu: cpu on which to flush
3839+ * @addr: page of virtual address to flush
3840+ * @idxmap: set of mmu_idx to flush
3841+ *
3842+ * Helper for tlb_flush_page_by_mmuidx and friends, flush one page
3843+ * at @addr from the tlbs indicated by @idxmap from @cpu.
3844 */
3845-QEMU_BUILD_BUG_ON(NB_MMU_MODES > TARGET_PAGE_BITS_MIN);
3846-
3847-static void tlb_flush_page_by_mmuidx_async_work(CPUState *cpu,
3848- run_on_cpu_data data)
3849+static void tlb_flush_page_by_mmuidx_async_0(CPUState *cpu,
3850+ target_ulong addr,
3851+ uint16_t idxmap)
3852 {
3853 CPUArchState *env = cpu->env_ptr;
3854- target_ulong addr_and_mmuidx = (target_ulong) data.target_ptr;
3855- target_ulong addr = addr_and_mmuidx & TARGET_PAGE_MASK;
3856- unsigned long mmu_idx_bitmap = addr_and_mmuidx & ALL_MMUIDX_BITS;
3857 int mmu_idx;
3858
3859 assert_cpu_is_self(cpu);
3860
3861- tlb_debug("page addr:" TARGET_FMT_lx " mmu_map:0x%lx\n",
3862- addr, mmu_idx_bitmap);
3863+ tlb_debug("page addr:" TARGET_FMT_lx " mmu_map:0x%x\n", addr, idxmap);
3864
3865 qemu_spin_lock(&env_tlb(env)->c.lock);
3866 for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
3867- if (test_bit(mmu_idx, &mmu_idx_bitmap)) {
3868+ if ((idxmap >> mmu_idx) & 1) {
3869 tlb_flush_page_locked(env, mmu_idx, addr);
3870 }
3871 }
3872@@ -477,22 +488,75 @@ static void tlb_flush_page_by_mmuidx_async_work(CPUState *cpu,
3873 tb_flush_jmp_cache(cpu, addr);
3874 }
3875
3876-void tlb_flush_page_by_mmuidx(CPUState *cpu, target_ulong addr, uint16_t idxmap)
3877+/**
3878+ * tlb_flush_page_by_mmuidx_async_1:
3879+ * @cpu: cpu on which to flush
3880+ * @data: encoded addr + idxmap
3881+ *
3882+ * Helper for tlb_flush_page_by_mmuidx and friends, called through
3883+ * async_run_on_cpu. The idxmap parameter is encoded in the page
3884+ * offset of the target_ptr field. This limits the set of mmu_idx
3885+ * that can be passed via this method.
3886+ */
3887+static void tlb_flush_page_by_mmuidx_async_1(CPUState *cpu,
3888+ run_on_cpu_data data)
3889 {
3890- target_ulong addr_and_mmu_idx;
3891+ target_ulong addr_and_idxmap = (target_ulong) data.target_ptr;
3892+ target_ulong addr = addr_and_idxmap & TARGET_PAGE_MASK;
3893+ uint16_t idxmap = addr_and_idxmap & ~TARGET_PAGE_MASK;
3894
3895+ tlb_flush_page_by_mmuidx_async_0(cpu, addr, idxmap);
3896+}
3897+
3898+typedef struct {
3899+ target_ulong addr;
3900+ uint16_t idxmap;
3901+} TLBFlushPageByMMUIdxData;
3902+
3903+/**
3904+ * tlb_flush_page_by_mmuidx_async_2:
3905+ * @cpu: cpu on which to flush
3906+ * @data: allocated addr + idxmap
3907+ *
3908+ * Helper for tlb_flush_page_by_mmuidx and friends, called through
3909+ * async_run_on_cpu. The addr+idxmap parameters are stored in a
3910+ * TLBFlushPageByMMUIdxData structure that has been allocated
3911+ * specifically for this helper. Free the structure when done.
3912+ */
3913+static void tlb_flush_page_by_mmuidx_async_2(CPUState *cpu,
3914+ run_on_cpu_data data)
3915+{
3916+ TLBFlushPageByMMUIdxData *d = data.host_ptr;
3917+
3918+ tlb_flush_page_by_mmuidx_async_0(cpu, d->addr, d->idxmap);
3919+ g_free(d);
3920+}
3921+
3922+void tlb_flush_page_by_mmuidx(CPUState *cpu, target_ulong addr, uint16_t idxmap)
3923+{
3924 tlb_debug("addr: "TARGET_FMT_lx" mmu_idx:%" PRIx16 "\n", addr, idxmap);
3925
3926 /* This should already be page aligned */
3927- addr_and_mmu_idx = addr & TARGET_PAGE_MASK;
3928- addr_and_mmu_idx |= idxmap;
3929+ addr &= TARGET_PAGE_MASK;
3930
3931- if (!qemu_cpu_is_self(cpu)) {
3932- async_run_on_cpu(cpu, tlb_flush_page_by_mmuidx_async_work,
3933- RUN_ON_CPU_TARGET_PTR(addr_and_mmu_idx));
3934+ if (qemu_cpu_is_self(cpu)) {
3935+ tlb_flush_page_by_mmuidx_async_0(cpu, addr, idxmap);
3936+ } else if (idxmap < TARGET_PAGE_SIZE) {
3937+ /*
3938+ * Most targets have only a few mmu_idx. In the case where
3939+ * we can stuff idxmap into the low TARGET_PAGE_BITS, avoid
3940+ * allocating memory for this operation.
3941+ */
3942+ async_run_on_cpu(cpu, tlb_flush_page_by_mmuidx_async_1,
3943+ RUN_ON_CPU_TARGET_PTR(addr | idxmap));
3944 } else {
3945- tlb_flush_page_by_mmuidx_async_work(
3946- cpu, RUN_ON_CPU_TARGET_PTR(addr_and_mmu_idx));
3947+ TLBFlushPageByMMUIdxData *d = g_new(TLBFlushPageByMMUIdxData, 1);
3948+
3949+ /* Otherwise allocate a structure, freed by the worker. */
3950+ d->addr = addr;
3951+ d->idxmap = idxmap;
3952+ async_run_on_cpu(cpu, tlb_flush_page_by_mmuidx_async_2,
3953+ RUN_ON_CPU_HOST_PTR(d));
3954 }
3955 }
3956
3957@@ -504,17 +568,36 @@ void tlb_flush_page(CPUState *cpu, target_ulong addr)
3958 void tlb_flush_page_by_mmuidx_all_cpus(CPUState *src_cpu, target_ulong addr,
3959 uint16_t idxmap)
3960 {
3961- const run_on_cpu_func fn = tlb_flush_page_by_mmuidx_async_work;
3962- target_ulong addr_and_mmu_idx;
3963-
3964 tlb_debug("addr: "TARGET_FMT_lx" mmu_idx:%"PRIx16"\n", addr, idxmap);
3965
3966 /* This should already be page aligned */
3967- addr_and_mmu_idx = addr & TARGET_PAGE_MASK;
3968- addr_and_mmu_idx |= idxmap;
3969+ addr &= TARGET_PAGE_MASK;
3970
3971- flush_all_helper(src_cpu, fn, RUN_ON_CPU_TARGET_PTR(addr_and_mmu_idx));
3972- fn(src_cpu, RUN_ON_CPU_TARGET_PTR(addr_and_mmu_idx));
3973+ /*
3974+ * Allocate memory to hold addr+idxmap only when needed.
3975+ * See tlb_flush_page_by_mmuidx for details.
3976+ */
3977+ if (idxmap < TARGET_PAGE_SIZE) {
3978+ flush_all_helper(src_cpu, tlb_flush_page_by_mmuidx_async_1,
3979+ RUN_ON_CPU_TARGET_PTR(addr | idxmap));
3980+ } else {
3981+ CPUState *dst_cpu;
3982+
3983+ /* Allocate a separate data block for each destination cpu. */
3984+ CPU_FOREACH(dst_cpu) {
3985+ if (dst_cpu != src_cpu) {
3986+ TLBFlushPageByMMUIdxData *d
3987+ = g_new(TLBFlushPageByMMUIdxData, 1);
3988+
3989+ d->addr = addr;
3990+ d->idxmap = idxmap;
3991+ async_run_on_cpu(dst_cpu, tlb_flush_page_by_mmuidx_async_2,
3992+ RUN_ON_CPU_HOST_PTR(d));
3993+ }
3994+ }
3995+ }
3996+
3997+ tlb_flush_page_by_mmuidx_async_0(src_cpu, addr, idxmap);
3998 }
3999
4000 void tlb_flush_page_all_cpus(CPUState *src, target_ulong addr)
4001@@ -526,17 +609,41 @@ void tlb_flush_page_by_mmuidx_all_cpus_synced(CPUState *src_cpu,
4002 target_ulong addr,
4003 uint16_t idxmap)
4004 {
4005- const run_on_cpu_func fn = tlb_flush_page_by_mmuidx_async_work;
4006- target_ulong addr_and_mmu_idx;
4007-
4008 tlb_debug("addr: "TARGET_FMT_lx" mmu_idx:%"PRIx16"\n", addr, idxmap);
4009
4010 /* This should already be page aligned */
4011- addr_and_mmu_idx = addr & TARGET_PAGE_MASK;
4012- addr_and_mmu_idx |= idxmap;
4013+ addr &= TARGET_PAGE_MASK;
4014+
4015+ /*
4016+ * Allocate memory to hold addr+idxmap only when needed.
4017+ * See tlb_flush_page_by_mmuidx for details.
4018+ */
4019+ if (idxmap < TARGET_PAGE_SIZE) {
4020+ flush_all_helper(src_cpu, tlb_flush_page_by_mmuidx_async_1,
4021+ RUN_ON_CPU_TARGET_PTR(addr | idxmap));
4022+ async_safe_run_on_cpu(src_cpu, tlb_flush_page_by_mmuidx_async_1,
4023+ RUN_ON_CPU_TARGET_PTR(addr | idxmap));
4024+ } else {
4025+ CPUState *dst_cpu;
4026+ TLBFlushPageByMMUIdxData *d;
4027+
4028+ /* Allocate a separate data block for each destination cpu. */
4029+ CPU_FOREACH(dst_cpu) {
4030+ if (dst_cpu != src_cpu) {
4031+ d = g_new(TLBFlushPageByMMUIdxData, 1);
4032+ d->addr = addr;
4033+ d->idxmap = idxmap;
4034+ async_run_on_cpu(dst_cpu, tlb_flush_page_by_mmuidx_async_2,
4035+ RUN_ON_CPU_HOST_PTR(d));
4036+ }
4037+ }
4038
4039- flush_all_helper(src_cpu, fn, RUN_ON_CPU_TARGET_PTR(addr_and_mmu_idx));
4040- async_safe_run_on_cpu(src_cpu, fn, RUN_ON_CPU_TARGET_PTR(addr_and_mmu_idx));
4041+ d = g_new(TLBFlushPageByMMUIdxData, 1);
4042+ d->addr = addr;
4043+ d->idxmap = idxmap;
4044+ async_safe_run_on_cpu(src_cpu, tlb_flush_page_by_mmuidx_async_2,
4045+ RUN_ON_CPU_HOST_PTR(d));
4046+ }
4047 }
4048
4049 void tlb_flush_page_all_cpus_synced(CPUState *src, target_ulong addr)
4050@@ -620,7 +727,7 @@ void tlb_reset_dirty(CPUState *cpu, ram_addr_t start1, ram_addr_t length)
4051 qemu_spin_lock(&env_tlb(env)->c.lock);
4052 for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
4053 unsigned int i;
4054- unsigned int n = tlb_n_entries(env, mmu_idx);
4055+ unsigned int n = tlb_n_entries(&env_tlb(env)->f[mmu_idx]);
4056
4057 for (i = 0; i < n; i++) {
4058 tlb_reset_dirty_range_locked(&env_tlb(env)->f[mmu_idx].table[i],
4059@@ -1626,6 +1733,137 @@ tcg_target_ulong helper_be_ldsl_mmu(CPUArchState *env, target_ulong addr,
4060 }
4061
4062 /*
4063+ * Load helpers for cpu_ldst.h.
4064+ */
4065+
4066+static inline uint64_t cpu_load_helper(CPUArchState *env, abi_ptr addr,
4067+ int mmu_idx, uintptr_t retaddr,
4068+ MemOp op, FullLoadHelper *full_load)
4069+{
4070+ uint16_t meminfo;
4071+ TCGMemOpIdx oi;
4072+ uint64_t ret;
4073+
4074+ meminfo = trace_mem_get_info(op, mmu_idx, false);
4075+ trace_guest_mem_before_exec(env_cpu(env), addr, meminfo);
4076+
4077+ op &= ~MO_SIGN;
4078+ oi = make_memop_idx(op, mmu_idx);
4079+ ret = full_load(env, addr, oi, retaddr);
4080+
4081+ qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, meminfo);
4082+
4083+ return ret;
4084+}
4085+
4086+uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
4087+ int mmu_idx, uintptr_t ra)
4088+{
4089+ return cpu_load_helper(env, addr, mmu_idx, ra, MO_UB, full_ldub_mmu);
4090+}
4091+
4092+int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
4093+ int mmu_idx, uintptr_t ra)
4094+{
4095+ return (int8_t)cpu_load_helper(env, addr, mmu_idx, ra, MO_SB,
4096+ full_ldub_mmu);
4097+}
4098+
4099+uint32_t cpu_lduw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
4100+ int mmu_idx, uintptr_t ra)
4101+{
4102+ return cpu_load_helper(env, addr, mmu_idx, ra, MO_TEUW,
4103+ MO_TE == MO_LE
4104+ ? full_le_lduw_mmu : full_be_lduw_mmu);
4105+}
4106+
4107+int cpu_ldsw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
4108+ int mmu_idx, uintptr_t ra)
4109+{
4110+ return (int16_t)cpu_load_helper(env, addr, mmu_idx, ra, MO_TESW,
4111+ MO_TE == MO_LE
4112+ ? full_le_lduw_mmu : full_be_lduw_mmu);
4113+}
4114+
4115+uint32_t cpu_ldl_mmuidx_ra(CPUArchState *env, abi_ptr addr,
4116+ int mmu_idx, uintptr_t ra)
4117+{
4118+ return cpu_load_helper(env, addr, mmu_idx, ra, MO_TEUL,
4119+ MO_TE == MO_LE
4120+ ? full_le_ldul_mmu : full_be_ldul_mmu);
4121+}
4122+
4123+uint64_t cpu_ldq_mmuidx_ra(CPUArchState *env, abi_ptr addr,
4124+ int mmu_idx, uintptr_t ra)
4125+{
4126+ return cpu_load_helper(env, addr, mmu_idx, ra, MO_TEQ,
4127+ MO_TE == MO_LE
4128+ ? helper_le_ldq_mmu : helper_be_ldq_mmu);
4129+}
4130+
4131+uint32_t cpu_ldub_data_ra(CPUArchState *env, target_ulong ptr,
4132+ uintptr_t retaddr)
4133+{
4134+ return cpu_ldub_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
4135+}
4136+
4137+int cpu_ldsb_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
4138+{
4139+ return cpu_ldsb_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
4140+}
4141+
4142+uint32_t cpu_lduw_data_ra(CPUArchState *env, target_ulong ptr,
4143+ uintptr_t retaddr)
4144+{
4145+ return cpu_lduw_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
4146+}
4147+
4148+int cpu_ldsw_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
4149+{
4150+ return cpu_ldsw_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
4151+}
4152+
4153+uint32_t cpu_ldl_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
4154+{
4155+ return cpu_ldl_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
4156+}
4157+
4158+uint64_t cpu_ldq_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
4159+{
4160+ return cpu_ldq_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
4161+}
4162+
4163+uint32_t cpu_ldub_data(CPUArchState *env, target_ulong ptr)
4164+{
4165+ return cpu_ldub_data_ra(env, ptr, 0);
4166+}
4167+
4168+int cpu_ldsb_data(CPUArchState *env, target_ulong ptr)
4169+{
4170+ return cpu_ldsb_data_ra(env, ptr, 0);
4171+}
4172+
4173+uint32_t cpu_lduw_data(CPUArchState *env, target_ulong ptr)
4174+{
4175+ return cpu_lduw_data_ra(env, ptr, 0);
4176+}
4177+
4178+int cpu_ldsw_data(CPUArchState *env, target_ulong ptr)
4179+{
4180+ return cpu_ldsw_data_ra(env, ptr, 0);
4181+}
4182+
4183+uint32_t cpu_ldl_data(CPUArchState *env, target_ulong ptr)
4184+{
4185+ return cpu_ldl_data_ra(env, ptr, 0);
4186+}
4187+
4188+uint64_t cpu_ldq_data(CPUArchState *env, target_ulong ptr)
4189+{
4190+ return cpu_ldq_data_ra(env, ptr, 0);
4191+}
4192+
4193+/*
4194 * Store Helpers
4195 */
4196
4197@@ -1854,6 +2092,94 @@ void helper_be_stq_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
4198 store_helper(env, addr, val, oi, retaddr, MO_BEQ);
4199 }
4200
4201+/*
4202+ * Store Helpers for cpu_ldst.h
4203+ */
4204+
4205+static inline void QEMU_ALWAYS_INLINE
4206+cpu_store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
4207+ int mmu_idx, uintptr_t retaddr, MemOp op)
4208+{
4209+ TCGMemOpIdx oi;
4210+ uint16_t meminfo;
4211+
4212+ meminfo = trace_mem_get_info(op, mmu_idx, true);
4213+ trace_guest_mem_before_exec(env_cpu(env), addr, meminfo);
4214+
4215+ oi = make_memop_idx(op, mmu_idx);
4216+ store_helper(env, addr, val, oi, retaddr, op);
4217+
4218+ qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, meminfo);
4219+}
4220+
4221+void cpu_stb_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
4222+ int mmu_idx, uintptr_t retaddr)
4223+{
4224+ cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_UB);
4225+}
4226+
4227+void cpu_stw_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
4228+ int mmu_idx, uintptr_t retaddr)
4229+{
4230+ cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_TEUW);
4231+}
4232+
4233+void cpu_stl_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
4234+ int mmu_idx, uintptr_t retaddr)
4235+{
4236+ cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_TEUL);
4237+}
4238+
4239+void cpu_stq_mmuidx_ra(CPUArchState *env, target_ulong addr, uint64_t val,
4240+ int mmu_idx, uintptr_t retaddr)
4241+{
4242+ cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_TEQ);
4243+}
4244+
4245+void cpu_stb_data_ra(CPUArchState *env, target_ulong ptr,
4246+ uint32_t val, uintptr_t retaddr)
4247+{
4248+ cpu_stb_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
4249+}
4250+
4251+void cpu_stw_data_ra(CPUArchState *env, target_ulong ptr,
4252+ uint32_t val, uintptr_t retaddr)
4253+{
4254+ cpu_stw_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
4255+}
4256+
4257+void cpu_stl_data_ra(CPUArchState *env, target_ulong ptr,
4258+ uint32_t val, uintptr_t retaddr)
4259+{
4260+ cpu_stl_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
4261+}
4262+
4263+void cpu_stq_data_ra(CPUArchState *env, target_ulong ptr,
4264+ uint64_t val, uintptr_t retaddr)
4265+{
4266+ cpu_stq_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
4267+}
4268+
4269+void cpu_stb_data(CPUArchState *env, target_ulong ptr, uint32_t val)
4270+{
4271+ cpu_stb_data_ra(env, ptr, val, 0);
4272+}
4273+
4274+void cpu_stw_data(CPUArchState *env, target_ulong ptr, uint32_t val)
4275+{
4276+ cpu_stw_data_ra(env, ptr, val, 0);
4277+}
4278+
4279+void cpu_stl_data(CPUArchState *env, target_ulong ptr, uint32_t val)
4280+{
4281+ cpu_stl_data_ra(env, ptr, val, 0);
4282+}
4283+
4284+void cpu_stq_data(CPUArchState *env, target_ulong ptr, uint64_t val)
4285+{
4286+ cpu_stq_data_ra(env, ptr, val, 0);
4287+}
4288+
4289 /* First set of helpers allows passing in of OI and RETADDR. This makes
4290 them callable from other helpers. */
4291
4292@@ -1912,98 +2238,50 @@ void helper_be_stq_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
4293
4294 /* Code access functions. */
4295
4296-static uint64_t full_ldub_cmmu(CPUArchState *env, target_ulong addr,
4297+static uint64_t full_ldub_code(CPUArchState *env, target_ulong addr,
4298 TCGMemOpIdx oi, uintptr_t retaddr)
4299 {
4300- return load_helper(env, addr, oi, retaddr, MO_8, true, full_ldub_cmmu);
4301-}
4302-
4303-uint8_t helper_ret_ldub_cmmu(CPUArchState *env, target_ulong addr,
4304- TCGMemOpIdx oi, uintptr_t retaddr)
4305-{
4306- return full_ldub_cmmu(env, addr, oi, retaddr);
4307-}
4308-
4309-int8_t helper_ret_ldsb_cmmu(CPUArchState *env, target_ulong addr,
4310- TCGMemOpIdx oi, uintptr_t retaddr)
4311-{
4312- return (int8_t) full_ldub_cmmu(env, addr, oi, retaddr);
4313-}
4314-
4315-static uint64_t full_le_lduw_cmmu(CPUArchState *env, target_ulong addr,
4316- TCGMemOpIdx oi, uintptr_t retaddr)
4317-{
4318- return load_helper(env, addr, oi, retaddr, MO_LEUW, true,
4319- full_le_lduw_cmmu);
4320-}
4321-
4322-uint16_t helper_le_lduw_cmmu(CPUArchState *env, target_ulong addr,
4323- TCGMemOpIdx oi, uintptr_t retaddr)
4324-{
4325- return full_le_lduw_cmmu(env, addr, oi, retaddr);
4326+ return load_helper(env, addr, oi, retaddr, MO_8, true, full_ldub_code);
4327 }
4328
4329-int16_t helper_le_ldsw_cmmu(CPUArchState *env, target_ulong addr,
4330- TCGMemOpIdx oi, uintptr_t retaddr)
4331+uint32_t cpu_ldub_code(CPUArchState *env, abi_ptr addr)
4332 {
4333- return (int16_t) full_le_lduw_cmmu(env, addr, oi, retaddr);
4334+ TCGMemOpIdx oi = make_memop_idx(MO_UB, cpu_mmu_index(env, true));
4335+ return full_ldub_code(env, addr, oi, 0);
4336 }
4337
4338-static uint64_t full_be_lduw_cmmu(CPUArchState *env, target_ulong addr,
4339- TCGMemOpIdx oi, uintptr_t retaddr)
4340-{
4341- return load_helper(env, addr, oi, retaddr, MO_BEUW, true,
4342- full_be_lduw_cmmu);
4343-}
4344-
4345-uint16_t helper_be_lduw_cmmu(CPUArchState *env, target_ulong addr,
4346- TCGMemOpIdx oi, uintptr_t retaddr)
4347-{
4348- return full_be_lduw_cmmu(env, addr, oi, retaddr);
4349-}
4350-
4351-int16_t helper_be_ldsw_cmmu(CPUArchState *env, target_ulong addr,
4352- TCGMemOpIdx oi, uintptr_t retaddr)
4353-{
4354- return (int16_t) full_be_lduw_cmmu(env, addr, oi, retaddr);
4355-}
4356-
4357-static uint64_t full_le_ldul_cmmu(CPUArchState *env, target_ulong addr,
4358- TCGMemOpIdx oi, uintptr_t retaddr)
4359+static uint64_t full_lduw_code(CPUArchState *env, target_ulong addr,
4360+ TCGMemOpIdx oi, uintptr_t retaddr)
4361 {
4362- return load_helper(env, addr, oi, retaddr, MO_LEUL, true,
4363- full_le_ldul_cmmu);
4364+ return load_helper(env, addr, oi, retaddr, MO_TEUW, true, full_lduw_code);
4365 }
4366
4367-uint32_t helper_le_ldl_cmmu(CPUArchState *env, target_ulong addr,
4368- TCGMemOpIdx oi, uintptr_t retaddr)
4369+uint32_t cpu_lduw_code(CPUArchState *env, abi_ptr addr)
4370 {
4371- return full_le_ldul_cmmu(env, addr, oi, retaddr);
4372+ TCGMemOpIdx oi = make_memop_idx(MO_TEUW, cpu_mmu_index(env, true));
4373+ return full_lduw_code(env, addr, oi, 0);
4374 }
4375
4376-static uint64_t full_be_ldul_cmmu(CPUArchState *env, target_ulong addr,
4377- TCGMemOpIdx oi, uintptr_t retaddr)
4378+static uint64_t full_ldl_code(CPUArchState *env, target_ulong addr,
4379+ TCGMemOpIdx oi, uintptr_t retaddr)
4380 {
4381- return load_helper(env, addr, oi, retaddr, MO_BEUL, true,
4382- full_be_ldul_cmmu);
4383+ return load_helper(env, addr, oi, retaddr, MO_TEUL, true, full_ldl_code);
4384 }
4385
4386-uint32_t helper_be_ldl_cmmu(CPUArchState *env, target_ulong addr,
4387- TCGMemOpIdx oi, uintptr_t retaddr)
4388+uint32_t cpu_ldl_code(CPUArchState *env, abi_ptr addr)
4389 {
4390- return full_be_ldul_cmmu(env, addr, oi, retaddr);
4391+ TCGMemOpIdx oi = make_memop_idx(MO_TEUL, cpu_mmu_index(env, true));
4392+ return full_ldl_code(env, addr, oi, 0);
4393 }
4394
4395-uint64_t helper_le_ldq_cmmu(CPUArchState *env, target_ulong addr,
4396- TCGMemOpIdx oi, uintptr_t retaddr)
4397+static uint64_t full_ldq_code(CPUArchState *env, target_ulong addr,
4398+ TCGMemOpIdx oi, uintptr_t retaddr)
4399 {
4400- return load_helper(env, addr, oi, retaddr, MO_LEQ, true,
4401- helper_le_ldq_cmmu);
4402+ return load_helper(env, addr, oi, retaddr, MO_TEQ, true, full_ldq_code);
4403 }
4404
4405-uint64_t helper_be_ldq_cmmu(CPUArchState *env, target_ulong addr,
4406- TCGMemOpIdx oi, uintptr_t retaddr)
4407+uint64_t cpu_ldq_code(CPUArchState *env, abi_ptr addr)
4408 {
4409- return load_helper(env, addr, oi, retaddr, MO_BEQ, true,
4410- helper_be_ldq_cmmu);
4411+ TCGMemOpIdx oi = make_memop_idx(MO_TEQ, cpu_mmu_index(env, true));
4412+ return full_ldq_code(env, addr, oi, 0);
4413 }
4414diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
4415index c59d5b0..acfdcfd 100644
4416--- a/accel/tcg/tcg-all.c
4417+++ b/accel/tcg/tcg-all.c
4418@@ -30,8 +30,23 @@
4419 #include "cpu.h"
4420 #include "sysemu/cpus.h"
4421 #include "qemu/main-loop.h"
4422+#include "tcg/tcg.h"
4423+#include "qapi/error.h"
4424+#include "qemu/error-report.h"
4425+#include "hw/boards.h"
4426+#include "qapi/qapi-builtin-visit.h"
4427
4428-unsigned long tcg_tb_size;
4429+typedef struct TCGState {
4430+ AccelState parent_obj;
4431+
4432+ bool mttcg_enabled;
4433+ unsigned long tb_size;
4434+} TCGState;
4435+
4436+#define TYPE_TCG_ACCEL ACCEL_CLASS_NAME("tcg")
4437+
4438+#define TCG_STATE(obj) \
4439+ OBJECT_CHECK(TCGState, (obj), TYPE_TCG_ACCEL)
4440
4441 /* mask must never be zero, except for A20 change call */
4442 static void tcg_handle_interrupt(CPUState *cpu, int mask)
4443@@ -58,27 +73,153 @@ static void tcg_handle_interrupt(CPUState *cpu, int mask)
4444 }
4445 }
4446
4447+/*
4448+ * We default to false if we know other options have been enabled
4449+ * which are currently incompatible with MTTCG. Otherwise when each
4450+ * guest (target) has been updated to support:
4451+ * - atomic instructions
4452+ * - memory ordering primitives (barriers)
4453+ * they can set the appropriate CONFIG flags in ${target}-softmmu.mak
4454+ *
4455+ * Once a guest architecture has been converted to the new primitives
4456+ * there are two remaining limitations to check.
4457+ *
4458+ * - The guest can't be oversized (e.g. 64 bit guest on 32 bit host)
4459+ * - The host must have a stronger memory order than the guest
4460+ *
4461+ * It may be possible in future to support strong guests on weak hosts
4462+ * but that will require tagging all load/stores in a guest with their
4463+ * implicit memory order requirements which would likely slow things
4464+ * down a lot.
4465+ */
4466+
4467+static bool check_tcg_memory_orders_compatible(void)
4468+{
4469+#if defined(TCG_GUEST_DEFAULT_MO) && defined(TCG_TARGET_DEFAULT_MO)
4470+ return (TCG_GUEST_DEFAULT_MO & ~TCG_TARGET_DEFAULT_MO) == 0;
4471+#else
4472+ return false;
4473+#endif
4474+}
4475+
4476+static bool default_mttcg_enabled(void)
4477+{
4478+ if (use_icount || TCG_OVERSIZED_GUEST) {
4479+ return false;
4480+ } else {
4481+#ifdef TARGET_SUPPORTS_MTTCG
4482+ return check_tcg_memory_orders_compatible();
4483+#else
4484+ return false;
4485+#endif
4486+ }
4487+}
4488+
4489+static void tcg_accel_instance_init(Object *obj)
4490+{
4491+ TCGState *s = TCG_STATE(obj);
4492+
4493+ s->mttcg_enabled = default_mttcg_enabled();
4494+}
4495+
4496 static int tcg_init(MachineState *ms)
4497 {
4498- tcg_exec_init(tcg_tb_size * 1024 * 1024);
4499+ TCGState *s = TCG_STATE(current_accel());
4500+
4501+ tcg_exec_init(s->tb_size * 1024 * 1024);
4502 cpu_interrupt_handler = tcg_handle_interrupt;
4503+ mttcg_enabled = s->mttcg_enabled;
4504 return 0;
4505 }
4506
4507+static char *tcg_get_thread(Object *obj, Error **errp)
4508+{
4509+ TCGState *s = TCG_STATE(obj);
4510+
4511+ return g_strdup(s->mttcg_enabled ? "multi" : "single");
4512+}
4513+
4514+static void tcg_set_thread(Object *obj, const char *value, Error **errp)
4515+{
4516+ TCGState *s = TCG_STATE(obj);
4517+
4518+ if (strcmp(value, "multi") == 0) {
4519+ if (TCG_OVERSIZED_GUEST) {
4520+ error_setg(errp, "No MTTCG when guest word size > hosts");
4521+ } else if (use_icount) {
4522+ error_setg(errp, "No MTTCG when icount is enabled");
4523+ } else {
4524+#ifndef TARGET_SUPPORTS_MTTCG
4525+ warn_report("Guest not yet converted to MTTCG - "
4526+ "you may get unexpected results");
4527+#endif
4528+ if (!check_tcg_memory_orders_compatible()) {
4529+ warn_report("Guest expects a stronger memory ordering "
4530+ "than the host provides");
4531+ error_printf("This may cause strange/hard to debug errors\n");
4532+ }
4533+ s->mttcg_enabled = true;
4534+ }
4535+ } else if (strcmp(value, "single") == 0) {
4536+ s->mttcg_enabled = false;
4537+ } else {
4538+ error_setg(errp, "Invalid 'thread' setting %s", value);
4539+ }
4540+}
4541+
4542+static void tcg_get_tb_size(Object *obj, Visitor *v,
4543+ const char *name, void *opaque,
4544+ Error **errp)
4545+{
4546+ TCGState *s = TCG_STATE(obj);
4547+ uint32_t value = s->tb_size;
4548+
4549+ visit_type_uint32(v, name, &value, errp);
4550+}
4551+
4552+static void tcg_set_tb_size(Object *obj, Visitor *v,
4553+ const char *name, void *opaque,
4554+ Error **errp)
4555+{
4556+ TCGState *s = TCG_STATE(obj);
4557+ Error *error = NULL;
4558+ uint32_t value;
4559+
4560+ visit_type_uint32(v, name, &value, &error);
4561+ if (error) {
4562+ error_propagate(errp, error);
4563+ return;
4564+ }
4565+
4566+ s->tb_size = value;
4567+}
4568+
4569 static void tcg_accel_class_init(ObjectClass *oc, void *data)
4570 {
4571 AccelClass *ac = ACCEL_CLASS(oc);
4572 ac->name = "tcg";
4573 ac->init_machine = tcg_init;
4574 ac->allowed = &tcg_allowed;
4575-}
4576
4577-#define TYPE_TCG_ACCEL ACCEL_CLASS_NAME("tcg")
4578+ object_class_property_add_str(oc, "thread",
4579+ tcg_get_thread,
4580+ tcg_set_thread,
4581+ NULL);
4582+
4583+ object_class_property_add(oc, "tb-size", "int",
4584+ tcg_get_tb_size, tcg_set_tb_size,
4585+ NULL, NULL, &error_abort);
4586+ object_class_property_set_description(oc, "tb-size",
4587+ "TCG translation block cache size", &error_abort);
4588+
4589+}
4590
4591 static const TypeInfo tcg_accel_type = {
4592 .name = TYPE_TCG_ACCEL,
4593 .parent = TYPE_ACCEL,
4594+ .instance_init = tcg_accel_instance_init,
4595 .class_init = tcg_accel_class_init,
4596+ .instance_size = sizeof(TCGState),
4597 };
4598
4599 static void register_accel_types(void)
4600diff --git a/accel/tcg/tcg-runtime-gvec.c b/accel/tcg/tcg-runtime-gvec.c
4601index 51cb29c..ca44970 100644
4602--- a/accel/tcg/tcg-runtime-gvec.c
4603+++ b/accel/tcg/tcg-runtime-gvec.c
4604@@ -21,51 +21,9 @@
4605 #include "qemu/host-utils.h"
4606 #include "cpu.h"
4607 #include "exec/helper-proto.h"
4608-#include "tcg-gvec-desc.h"
4609+#include "tcg/tcg-gvec-desc.h"
4610
4611
4612-/* Virtually all hosts support 16-byte vectors. Those that don't can emulate
4613- * them via GCC's generic vector extension. This turns out to be simpler and
4614- * more reliable than getting the compiler to autovectorize.
4615- *
4616- * In tcg-op-gvec.c, we asserted that both the size and alignment of the data
4617- * are multiples of 16.
4618- *
4619- * When the compiler does not support all of the operations we require, the
4620- * loops are written so that we can always fall back on the base types.
4621- */
4622-#ifdef CONFIG_VECTOR16
4623-typedef uint8_t vec8 __attribute__((vector_size(16)));
4624-typedef uint16_t vec16 __attribute__((vector_size(16)));
4625-typedef uint32_t vec32 __attribute__((vector_size(16)));
4626-typedef uint64_t vec64 __attribute__((vector_size(16)));
4627-
4628-typedef int8_t svec8 __attribute__((vector_size(16)));
4629-typedef int16_t svec16 __attribute__((vector_size(16)));
4630-typedef int32_t svec32 __attribute__((vector_size(16)));
4631-typedef int64_t svec64 __attribute__((vector_size(16)));
4632-
4633-#define DUP16(X) { X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X }
4634-#define DUP8(X) { X, X, X, X, X, X, X, X }
4635-#define DUP4(X) { X, X, X, X }
4636-#define DUP2(X) { X, X }
4637-#else
4638-typedef uint8_t vec8;
4639-typedef uint16_t vec16;
4640-typedef uint32_t vec32;
4641-typedef uint64_t vec64;
4642-
4643-typedef int8_t svec8;
4644-typedef int16_t svec16;
4645-typedef int32_t svec32;
4646-typedef int64_t svec64;
4647-
4648-#define DUP16(X) X
4649-#define DUP8(X) X
4650-#define DUP4(X) X
4651-#define DUP2(X) X
4652-#endif /* CONFIG_VECTOR16 */
4653-
4654 static inline void clear_high(void *d, intptr_t oprsz, uint32_t desc)
4655 {
4656 intptr_t maxsz = simd_maxsz(desc);
4657@@ -83,8 +41,8 @@ void HELPER(gvec_add8)(void *d, void *a, void *b, uint32_t desc)
4658 intptr_t oprsz = simd_oprsz(desc);
4659 intptr_t i;
4660
4661- for (i = 0; i < oprsz; i += sizeof(vec8)) {
4662- *(vec8 *)(d + i) = *(vec8 *)(a + i) + *(vec8 *)(b + i);
4663+ for (i = 0; i < oprsz; i += sizeof(uint8_t)) {
4664+ *(uint8_t *)(d + i) = *(uint8_t *)(a + i) + *(uint8_t *)(b + i);
4665 }
4666 clear_high(d, oprsz, desc);
4667 }
4668@@ -94,8 +52,8 @@ void HELPER(gvec_add16)(void *d, void *a, void *b, uint32_t desc)
4669 intptr_t oprsz = simd_oprsz(desc);
4670 intptr_t i;
4671
4672- for (i = 0; i < oprsz; i += sizeof(vec16)) {
4673- *(vec16 *)(d + i) = *(vec16 *)(a + i) + *(vec16 *)(b + i);
4674+ for (i = 0; i < oprsz; i += sizeof(uint16_t)) {
4675+ *(uint16_t *)(d + i) = *(uint16_t *)(a + i) + *(uint16_t *)(b + i);
4676 }
4677 clear_high(d, oprsz, desc);
4678 }
4679@@ -105,8 +63,8 @@ void HELPER(gvec_add32)(void *d, void *a, void *b, uint32_t desc)
4680 intptr_t oprsz = simd_oprsz(desc);
4681 intptr_t i;
4682
4683- for (i = 0; i < oprsz; i += sizeof(vec32)) {
4684- *(vec32 *)(d + i) = *(vec32 *)(a + i) + *(vec32 *)(b + i);
4685+ for (i = 0; i < oprsz; i += sizeof(uint32_t)) {
4686+ *(uint32_t *)(d + i) = *(uint32_t *)(a + i) + *(uint32_t *)(b + i);
4687 }
4688 clear_high(d, oprsz, desc);
4689 }
4690@@ -116,8 +74,8 @@ void HELPER(gvec_add64)(void *d, void *a, void *b, uint32_t desc)
4691 intptr_t oprsz = simd_oprsz(desc);
4692 intptr_t i;
4693
4694- for (i = 0; i < oprsz; i += sizeof(vec64)) {
4695- *(vec64 *)(d + i) = *(vec64 *)(a + i) + *(vec64 *)(b + i);
4696+ for (i = 0; i < oprsz; i += sizeof(uint64_t)) {
4697+ *(uint64_t *)(d + i) = *(uint64_t *)(a + i) + *(uint64_t *)(b + i);
4698 }
4699 clear_high(d, oprsz, desc);
4700 }
4701@@ -125,11 +83,10 @@ void HELPER(gvec_add64)(void *d, void *a, void *b, uint32_t desc)
4702 void HELPER(gvec_adds8)(void *d, void *a, uint64_t b, uint32_t desc)
4703 {
4704 intptr_t oprsz = simd_oprsz(desc);
4705- vec8 vecb = (vec8)DUP16(b);
4706 intptr_t i;
4707
4708- for (i = 0; i < oprsz; i += sizeof(vec8)) {
4709- *(vec8 *)(d + i) = *(vec8 *)(a + i) + vecb;
4710+ for (i = 0; i < oprsz; i += sizeof(uint8_t)) {
4711+ *(uint8_t *)(d + i) = *(uint8_t *)(a + i) + (uint8_t)b;
4712 }
4713 clear_high(d, oprsz, desc);
4714 }
4715@@ -137,11 +94,10 @@ void HELPER(gvec_adds8)(void *d, void *a, uint64_t b, uint32_t desc)
4716 void HELPER(gvec_adds16)(void *d, void *a, uint64_t b, uint32_t desc)
4717 {
4718 intptr_t oprsz = simd_oprsz(desc);
4719- vec16 vecb = (vec16)DUP8(b);
4720 intptr_t i;
4721
4722- for (i = 0; i < oprsz; i += sizeof(vec16)) {
4723- *(vec16 *)(d + i) = *(vec16 *)(a + i) + vecb;
4724+ for (i = 0; i < oprsz; i += sizeof(uint16_t)) {
4725+ *(uint16_t *)(d + i) = *(uint16_t *)(a + i) + (uint16_t)b;
4726 }
4727 clear_high(d, oprsz, desc);
4728 }
4729@@ -149,11 +105,10 @@ void HELPER(gvec_adds16)(void *d, void *a, uint64_t b, uint32_t desc)
4730 void HELPER(gvec_adds32)(void *d, void *a, uint64_t b, uint32_t desc)
4731 {
4732 intptr_t oprsz = simd_oprsz(desc);
4733- vec32 vecb = (vec32)DUP4(b);
4734 intptr_t i;
4735
4736- for (i = 0; i < oprsz; i += sizeof(vec32)) {
4737- *(vec32 *)(d + i) = *(vec32 *)(a + i) + vecb;
4738+ for (i = 0; i < oprsz; i += sizeof(uint32_t)) {
4739+ *(uint32_t *)(d + i) = *(uint32_t *)(a + i) + (uint32_t)b;
4740 }
4741 clear_high(d, oprsz, desc);
4742 }
4743@@ -161,11 +116,10 @@ void HELPER(gvec_adds32)(void *d, void *a, uint64_t b, uint32_t desc)
4744 void HELPER(gvec_adds64)(void *d, void *a, uint64_t b, uint32_t desc)
4745 {
4746 intptr_t oprsz = simd_oprsz(desc);
4747- vec64 vecb = (vec64)DUP2(b);
4748 intptr_t i;
4749
4750- for (i = 0; i < oprsz; i += sizeof(vec64)) {
4751- *(vec64 *)(d + i) = *(vec64 *)(a + i) + vecb;
4752+ for (i = 0; i < oprsz; i += sizeof(uint64_t)) {
4753+ *(uint64_t *)(d + i) = *(uint64_t *)(a + i) + b;
4754 }
4755 clear_high(d, oprsz, desc);
4756 }
4757@@ -175,8 +129,8 @@ void HELPER(gvec_sub8)(void *d, void *a, void *b, uint32_t desc)
4758 intptr_t oprsz = simd_oprsz(desc);
4759 intptr_t i;
4760
4761- for (i = 0; i < oprsz; i += sizeof(vec8)) {
4762- *(vec8 *)(d + i) = *(vec8 *)(a + i) - *(vec8 *)(b + i);
4763+ for (i = 0; i < oprsz; i += sizeof(uint8_t)) {
4764+ *(uint8_t *)(d + i) = *(uint8_t *)(a + i) - *(uint8_t *)(b + i);
4765 }
4766 clear_high(d, oprsz, desc);
4767 }
4768@@ -186,8 +140,8 @@ void HELPER(gvec_sub16)(void *d, void *a, void *b, uint32_t desc)
4769 intptr_t oprsz = simd_oprsz(desc);
4770 intptr_t i;
4771
4772- for (i = 0; i < oprsz; i += sizeof(vec16)) {
4773- *(vec16 *)(d + i) = *(vec16 *)(a + i) - *(vec16 *)(b + i);
4774+ for (i = 0; i < oprsz; i += sizeof(uint16_t)) {
4775+ *(uint16_t *)(d + i) = *(uint16_t *)(a + i) - *(uint16_t *)(b + i);
4776 }
4777 clear_high(d, oprsz, desc);
4778 }
4779@@ -197,8 +151,8 @@ void HELPER(gvec_sub32)(void *d, void *a, void *b, uint32_t desc)
4780 intptr_t oprsz = simd_oprsz(desc);
4781 intptr_t i;
4782
4783- for (i = 0; i < oprsz; i += sizeof(vec32)) {
4784- *(vec32 *)(d + i) = *(vec32 *)(a + i) - *(vec32 *)(b + i);
4785+ for (i = 0; i < oprsz; i += sizeof(uint32_t)) {
4786+ *(uint32_t *)(d + i) = *(uint32_t *)(a + i) - *(uint32_t *)(b + i);
4787 }
4788 clear_high(d, oprsz, desc);
4789 }
4790@@ -208,8 +162,8 @@ void HELPER(gvec_sub64)(void *d, void *a, void *b, uint32_t desc)
4791 intptr_t oprsz = simd_oprsz(desc);
4792 intptr_t i;
4793
4794- for (i = 0; i < oprsz; i += sizeof(vec64)) {
4795- *(vec64 *)(d + i) = *(vec64 *)(a + i) - *(vec64 *)(b + i);
4796+ for (i = 0; i < oprsz; i += sizeof(uint64_t)) {
4797+ *(uint64_t *)(d + i) = *(uint64_t *)(a + i) - *(uint64_t *)(b + i);
4798 }
4799 clear_high(d, oprsz, desc);
4800 }
4801@@ -217,11 +171,10 @@ void HELPER(gvec_sub64)(void *d, void *a, void *b, uint32_t desc)
4802 void HELPER(gvec_subs8)(void *d, void *a, uint64_t b, uint32_t desc)
4803 {
4804 intptr_t oprsz = simd_oprsz(desc);
4805- vec8 vecb = (vec8)DUP16(b);
4806 intptr_t i;
4807
4808- for (i = 0; i < oprsz; i += sizeof(vec8)) {
4809- *(vec8 *)(d + i) = *(vec8 *)(a + i) - vecb;
4810+ for (i = 0; i < oprsz; i += sizeof(uint8_t)) {
4811+ *(uint8_t *)(d + i) = *(uint8_t *)(a + i) - (uint8_t)b;
4812 }
4813 clear_high(d, oprsz, desc);
4814 }
4815@@ -229,11 +182,10 @@ void HELPER(gvec_subs8)(void *d, void *a, uint64_t b, uint32_t desc)
4816 void HELPER(gvec_subs16)(void *d, void *a, uint64_t b, uint32_t desc)
4817 {
4818 intptr_t oprsz = simd_oprsz(desc);
4819- vec16 vecb = (vec16)DUP8(b);
4820 intptr_t i;
4821
4822- for (i = 0; i < oprsz; i += sizeof(vec16)) {
4823- *(vec16 *)(d + i) = *(vec16 *)(a + i) - vecb;
4824+ for (i = 0; i < oprsz; i += sizeof(uint16_t)) {
4825+ *(uint16_t *)(d + i) = *(uint16_t *)(a + i) - (uint16_t)b;
4826 }
4827 clear_high(d, oprsz, desc);
4828 }
4829@@ -241,11 +193,10 @@ void HELPER(gvec_subs16)(void *d, void *a, uint64_t b, uint32_t desc)
4830 void HELPER(gvec_subs32)(void *d, void *a, uint64_t b, uint32_t desc)
4831 {
4832 intptr_t oprsz = simd_oprsz(desc);
4833- vec32 vecb = (vec32)DUP4(b);
4834 intptr_t i;
4835
4836- for (i = 0; i < oprsz; i += sizeof(vec32)) {
4837- *(vec32 *)(d + i) = *(vec32 *)(a + i) - vecb;
4838+ for (i = 0; i < oprsz; i += sizeof(uint32_t)) {
4839+ *(uint32_t *)(d + i) = *(uint32_t *)(a + i) - (uint32_t)b;
4840 }
4841 clear_high(d, oprsz, desc);
4842 }
4843@@ -253,11 +204,10 @@ void HELPER(gvec_subs32)(void *d, void *a, uint64_t b, uint32_t desc)
4844 void HELPER(gvec_subs64)(void *d, void *a, uint64_t b, uint32_t desc)
4845 {
4846 intptr_t oprsz = simd_oprsz(desc);
4847- vec64 vecb = (vec64)DUP2(b);
4848 intptr_t i;
4849
4850- for (i = 0; i < oprsz; i += sizeof(vec64)) {
4851- *(vec64 *)(d + i) = *(vec64 *)(a + i) - vecb;
4852+ for (i = 0; i < oprsz; i += sizeof(uint64_t)) {
4853+ *(uint64_t *)(d + i) = *(uint64_t *)(a + i) - b;
4854 }
4855 clear_high(d, oprsz, desc);
4856 }
4857@@ -267,8 +217,8 @@ void HELPER(gvec_mul8)(void *d, void *a, void *b, uint32_t desc)
4858 intptr_t oprsz = simd_oprsz(desc);
4859 intptr_t i;
4860
4861- for (i = 0; i < oprsz; i += sizeof(vec8)) {
4862- *(vec8 *)(d + i) = *(vec8 *)(a + i) * *(vec8 *)(b + i);
4863+ for (i = 0; i < oprsz; i += sizeof(uint8_t)) {
4864+ *(uint8_t *)(d + i) = *(uint8_t *)(a + i) * *(uint8_t *)(b + i);
4865 }
4866 clear_high(d, oprsz, desc);
4867 }
4868@@ -278,8 +228,8 @@ void HELPER(gvec_mul16)(void *d, void *a, void *b, uint32_t desc)
4869 intptr_t oprsz = simd_oprsz(desc);
4870 intptr_t i;
4871
4872- for (i = 0; i < oprsz; i += sizeof(vec16)) {
4873- *(vec16 *)(d + i) = *(vec16 *)(a + i) * *(vec16 *)(b + i);
4874+ for (i = 0; i < oprsz; i += sizeof(uint16_t)) {
4875+ *(uint16_t *)(d + i) = *(uint16_t *)(a + i) * *(uint16_t *)(b + i);
4876 }
4877 clear_high(d, oprsz, desc);
4878 }
4879@@ -289,8 +239,8 @@ void HELPER(gvec_mul32)(void *d, void *a, void *b, uint32_t desc)
4880 intptr_t oprsz = simd_oprsz(desc);
4881 intptr_t i;
4882
4883- for (i = 0; i < oprsz; i += sizeof(vec32)) {
4884- *(vec32 *)(d + i) = *(vec32 *)(a + i) * *(vec32 *)(b + i);
4885+ for (i = 0; i < oprsz; i += sizeof(uint32_t)) {
4886+ *(uint32_t *)(d + i) = *(uint32_t *)(a + i) * *(uint32_t *)(b + i);
4887 }
4888 clear_high(d, oprsz, desc);
4889 }
4890@@ -300,8 +250,8 @@ void HELPER(gvec_mul64)(void *d, void *a, void *b, uint32_t desc)
4891 intptr_t oprsz = simd_oprsz(desc);
4892 intptr_t i;
4893
4894- for (i = 0; i < oprsz; i += sizeof(vec64)) {
4895- *(vec64 *)(d + i) = *(vec64 *)(a + i) * *(vec64 *)(b + i);
4896+ for (i = 0; i < oprsz; i += sizeof(uint64_t)) {
4897+ *(uint64_t *)(d + i) = *(uint64_t *)(a + i) * *(uint64_t *)(b + i);
4898 }
4899 clear_high(d, oprsz, desc);
4900 }
4901@@ -309,11 +259,10 @@ void HELPER(gvec_mul64)(void *d, void *a, void *b, uint32_t desc)
4902 void HELPER(gvec_muls8)(void *d, void *a, uint64_t b, uint32_t desc)
4903 {
4904 intptr_t oprsz = simd_oprsz(desc);
4905- vec8 vecb = (vec8)DUP16(b);
4906 intptr_t i;
4907
4908- for (i = 0; i < oprsz; i += sizeof(vec8)) {
4909- *(vec8 *)(d + i) = *(vec8 *)(a + i) * vecb;
4910+ for (i = 0; i < oprsz; i += sizeof(uint8_t)) {
4911+ *(uint8_t *)(d + i) = *(uint8_t *)(a + i) * (uint8_t)b;
4912 }
4913 clear_high(d, oprsz, desc);
4914 }
4915@@ -321,11 +270,10 @@ void HELPER(gvec_muls8)(void *d, void *a, uint64_t b, uint32_t desc)
4916 void HELPER(gvec_muls16)(void *d, void *a, uint64_t b, uint32_t desc)
4917 {
4918 intptr_t oprsz = simd_oprsz(desc);
4919- vec16 vecb = (vec16)DUP8(b);
4920 intptr_t i;
4921
4922- for (i = 0; i < oprsz; i += sizeof(vec16)) {
4923- *(vec16 *)(d + i) = *(vec16 *)(a + i) * vecb;
4924+ for (i = 0; i < oprsz; i += sizeof(uint16_t)) {
4925+ *(uint16_t *)(d + i) = *(uint16_t *)(a + i) * (uint16_t)b;
4926 }
4927 clear_high(d, oprsz, desc);
4928 }
4929@@ -333,11 +281,10 @@ void HELPER(gvec_muls16)(void *d, void *a, uint64_t b, uint32_t desc)
4930 void HELPER(gvec_muls32)(void *d, void *a, uint64_t b, uint32_t desc)
4931 {
4932 intptr_t oprsz = simd_oprsz(desc);
4933- vec32 vecb = (vec32)DUP4(b);
4934 intptr_t i;
4935
4936- for (i = 0; i < oprsz; i += sizeof(vec32)) {
4937- *(vec32 *)(d + i) = *(vec32 *)(a + i) * vecb;
4938+ for (i = 0; i < oprsz; i += sizeof(uint32_t)) {
4939+ *(uint32_t *)(d + i) = *(uint32_t *)(a + i) * (uint32_t)b;
4940 }
4941 clear_high(d, oprsz, desc);
4942 }
4943@@ -345,11 +292,10 @@ void HELPER(gvec_muls32)(void *d, void *a, uint64_t b, uint32_t desc)
4944 void HELPER(gvec_muls64)(void *d, void *a, uint64_t b, uint32_t desc)
4945 {
4946 intptr_t oprsz = simd_oprsz(desc);
4947- vec64 vecb = (vec64)DUP2(b);
4948 intptr_t i;
4949
4950- for (i = 0; i < oprsz; i += sizeof(vec64)) {
4951- *(vec64 *)(d + i) = *(vec64 *)(a + i) * vecb;
4952+ for (i = 0; i < oprsz; i += sizeof(uint64_t)) {
4953+ *(uint64_t *)(d + i) = *(uint64_t *)(a + i) * b;
4954 }
4955 clear_high(d, oprsz, desc);
4956 }
4957@@ -359,8 +305,8 @@ void HELPER(gvec_neg8)(void *d, void *a, uint32_t desc)
4958 intptr_t oprsz = simd_oprsz(desc);
4959 intptr_t i;
4960
4961- for (i = 0; i < oprsz; i += sizeof(vec8)) {
4962- *(vec8 *)(d + i) = -*(vec8 *)(a + i);
4963+ for (i = 0; i < oprsz; i += sizeof(uint8_t)) {
4964+ *(uint8_t *)(d + i) = -*(uint8_t *)(a + i);
4965 }
4966 clear_high(d, oprsz, desc);
4967 }
4968@@ -370,8 +316,8 @@ void HELPER(gvec_neg16)(void *d, void *a, uint32_t desc)
4969 intptr_t oprsz = simd_oprsz(desc);
4970 intptr_t i;
4971
4972- for (i = 0; i < oprsz; i += sizeof(vec16)) {
4973- *(vec16 *)(d + i) = -*(vec16 *)(a + i);
4974+ for (i = 0; i < oprsz; i += sizeof(uint16_t)) {
4975+ *(uint16_t *)(d + i) = -*(uint16_t *)(a + i);
4976 }
4977 clear_high(d, oprsz, desc);
4978 }
4979@@ -381,8 +327,8 @@ void HELPER(gvec_neg32)(void *d, void *a, uint32_t desc)
4980 intptr_t oprsz = simd_oprsz(desc);
4981 intptr_t i;
4982
4983- for (i = 0; i < oprsz; i += sizeof(vec32)) {
4984- *(vec32 *)(d + i) = -*(vec32 *)(a + i);
4985+ for (i = 0; i < oprsz; i += sizeof(uint32_t)) {
4986+ *(uint32_t *)(d + i) = -*(uint32_t *)(a + i);
4987 }
4988 clear_high(d, oprsz, desc);
4989 }
4990@@ -392,8 +338,8 @@ void HELPER(gvec_neg64)(void *d, void *a, uint32_t desc)
4991 intptr_t oprsz = simd_oprsz(desc);
4992 intptr_t i;
4993
4994- for (i = 0; i < oprsz; i += sizeof(vec64)) {
4995- *(vec64 *)(d + i) = -*(vec64 *)(a + i);
4996+ for (i = 0; i < oprsz; i += sizeof(uint64_t)) {
4997+ *(uint64_t *)(d + i) = -*(uint64_t *)(a + i);
4998 }
4999 clear_high(d, oprsz, desc);
5000 }
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches