diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml index 7d3ad00a1e..10d22dcf6c 100644 --- a/.gitlab-ci.d/crossbuild-template.yml +++ b/.gitlab-ci.d/crossbuild-template.yml @@ -9,7 +9,8 @@ ../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS --disable-user --target-list-exclude="arm-softmmu cris-softmmu i386-softmmu microblaze-softmmu mips-softmmu mipsel-softmmu - mips64-softmmu ppc-softmmu sh4-softmmu xtensa-softmmu" + mips64-softmmu ppc-softmmu riscv32-softmmu sh4-softmmu + sparc-softmmu xtensa-softmmu $CROSS_SKIP_TARGETS" - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS - if grep -q "EXESUF=.exe" config-host.mak; then make installer; diff --git a/.gitlab-ci.d/crossbuilds.yml b/.gitlab-ci.d/crossbuilds.yml index 4ff3aa3cfc..f10168db2e 100644 --- a/.gitlab-ci.d/crossbuilds.yml +++ b/.gitlab-ci.d/crossbuilds.yml @@ -160,6 +160,8 @@ cross-win32-system: job: win32-fedora-cross-container variables: IMAGE: fedora-win32-cross + CROSS_SKIP_TARGETS: alpha-softmmu avr-softmmu hppa-softmmu m68k-softmmu + microblazeel-softmmu mips64el-softmmu nios2-softmmu artifacts: paths: - build/qemu-setup*.exe @@ -170,6 +172,8 @@ cross-win64-system: job: win64-fedora-cross-container variables: IMAGE: fedora-win64-cross + CROSS_SKIP_TARGETS: or1k-softmmu rx-softmmu sh4eb-softmmu sparc64-softmmu + tricore-softmmu xtensaeb-softmmu artifacts: paths: - build/qemu-setup*.exe diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst index 07d597847c..cbfa1a8e31 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -9,8 +9,145 @@ trouble after a recent upgrade. System emulator command line arguments -------------------------------------- -``-net ...,name=``\ *name* (removed in 5.1) -''''''''''''''''''''''''''''''''''''''''''' +``-hdachs`` (removed in 2.12) +''''''''''''''''''''''''''''' + +The geometry defined by ``-hdachs c,h,s,t`` should now be specified via +``-device ide-hd,drive=dr,cyls=c,heads=h,secs=s,bios-chs-trans=t`` +(together with ``-drive if=none,id=dr,...``). + +``-net channel`` (removed in 2.12) +'''''''''''''''''''''''''''''''''' + +This option has been replaced by ``-net user,guestfwd=...``. + +``-net dump`` (removed in 2.12) +''''''''''''''''''''''''''''''' + +``-net dump[,vlan=n][,file=filename][,len=maxlen]`` has been replaced by +``-object filter-dump,id=id,netdev=dev[,file=filename][,maxlen=maxlen]``. +Note that the new syntax works with netdev IDs instead of the old "vlan" hubs. + +``-no-kvm-pit`` (removed in 2.12) +''''''''''''''''''''''''''''''''' + +This was just a dummy option that has been ignored, since the in-kernel PIT +cannot be disabled separately from the irqchip anymore. A similar effect +(which also disables the KVM IOAPIC) can be obtained with +``-M kernel_irqchip=split``. + +``-tdf`` (removed in 2.12) +'''''''''''''''''''''''''' + +There is no replacement, the ``-tdf`` option has just been ignored since the +behaviour that could be changed by this option in qemu-kvm is now the default +when using the KVM PIT. It still can be requested explicitly using +``-global kvm-pit.lost_tick_policy=delay``. + +``-drive secs=s``, ``-drive heads=h`` & ``-drive cyls=c`` (removed in 3.0) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +The drive geometry should now be specified via +``-device ...,drive=dr,cyls=c,heads=h,secs=s`` (together with +``-drive if=none,id=dr,...``). + +``-drive serial=``, ``-drive trans=`` & ``-drive addr=`` (removed in 3.0) +''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +Use ``-device ...,drive=dr,serial=r,bios-chs-trans=t,addr=a`` instead +(together with ``-drive if=none,id=dr,...``). + +``-net ...,vlan=x`` (removed in 3.0) +'''''''''''''''''''''''''''''''''''' + +The term "vlan" was very confusing for most users in this context (it's about +specifying a hub ID, not about IEEE 802.1Q or something similar), so this +has been removed. To connect one NIC frontend with a network backend, either +use ``-nic ...`` (e.g. for on-board NICs) or use ``-netdev ...,id=n`` together +with ``-device ...,netdev=n`` (for full control over pluggable NICs). To +connect multiple NICs or network backends via a hub device (which is what +vlan did), use ``-nic hubport,hubid=x,...`` or +``-netdev hubport,id=n,hubid=x,...`` (with ``-device ...,netdev=n``) instead. + +``-no-kvm-irqchip`` (removed in 3.0) +'''''''''''''''''''''''''''''''''''' + +Use ``-machine kernel_irqchip=off`` instead. + +``-no-kvm-pit-reinjection`` (removed in 3.0) +'''''''''''''''''''''''''''''''''''''''''''' + +Use ``-global kvm-pit.lost_tick_policy=discard`` instead. + +``-balloon`` (removed in 3.1) +''''''''''''''''''''''''''''' + +The ``-balloon virtio`` option has been replaced by ``-device virtio-balloon``. +The ``-balloon none`` option was a no-op and has no replacement. + +``-bootp`` (removed in 3.1) +''''''''''''''''''''''''''' + +The ``-bootp /some/file`` argument is replaced by either +``-netdev user,id=x,bootp=/some/file`` (for pluggable NICs, accompanied with +``-device ...,netdev=x``), or ``-nic user,bootp=/some/file`` (for on-board NICs). +The new syntax allows different settings to be provided per NIC. + +``-redir`` (removed in 3.1) +''''''''''''''''''''''''''' + +The ``-redir [tcp|udp]:hostport:[guestaddr]:guestport`` option is replaced +by either ``-netdev +user,id=x,hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport`` +(for pluggable NICs, accompanied with ``-device ...,netdev=x``) or by the option +``-nic user,hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport`` +(for on-board NICs). The new syntax allows different settings to be provided +per NIC. + +``-smb`` (removed in 3.1) +''''''''''''''''''''''''' + +The ``-smb /some/dir`` argument is replaced by either +``-netdev user,id=x,smb=/some/dir`` (for pluggable NICs, accompanied with +``-device ...,netdev=x``), or ``-nic user,smb=/some/dir`` (for on-board NICs). +The new syntax allows different settings to be provided per NIC. + +``-tftp`` (removed in 3.1) +'''''''''''''''''''''''''' + +The ``-tftp /some/dir`` argument is replaced by either +``-netdev user,id=x,tftp=/some/dir`` (for pluggable NICs, accompanied with +``-device ...,netdev=x``), or ``-nic user,tftp=/some/dir`` (for embedded NICs). +The new syntax allows different settings to be provided per NIC. + +``-localtime`` (removed in 3.1) +''''''''''''''''''''''''''''''' + +Replaced by ``-rtc base=localtime``. + +``-nodefconfig`` (removed in 3.1) +''''''''''''''''''''''''''''''''' + +Use ``-no-user-config`` instead. + +``-rtc-td-hack`` (removed in 3.1) +''''''''''''''''''''''''''''''''' + +Use ``-rtc driftfix=slew`` instead. + +``-startdate`` (removed in 3.1) +''''''''''''''''''''''''''''''' + +Replaced by ``-rtc base=date``. + +``-vnc ...,tls=...``, ``-vnc ...,x509=...`` & ``-vnc ...,x509verify=...`` +''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +The "tls-creds" option should be used instead to point to a "tls-creds-x509" +object created using "-object". + +``-net ...,name=...`` (removed in 5.1) +'''''''''''''''''''''''''''''''''''''' The ``name`` parameter of the ``-net`` option was a synonym for the ``id`` parameter, which should now be used instead. @@ -219,6 +356,17 @@ Specify the properties for the object as top-level arguments instead. Human Monitor Protocol (HMP) commands ------------------------------------- +``usb_add`` and ``usb_remove`` (removed in 2.12) +'''''''''''''''''''''''''''''''''''''''''''''''' + +Replaced by ``device_add`` and ``device_del`` (use ``device_add help`` for a +list of available devices). + +``host_net_add`` and ``host_net_remove`` (removed in 2.12) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +Replaced by ``netdev_add`` and ``netdev_del``. + The ``hub_id`` parameter of ``hostfwd_add`` / ``hostfwd_remove`` (removed in 5.0) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' @@ -325,6 +473,22 @@ Removed without replacement. System emulator machines ------------------------ +``s390-virtio`` (removed in 2.6) +'''''''''''''''''''''''''''''''' + +Use the ``s390-ccw-virtio`` machine instead. + +The m68k ``dummy`` machine (removed in 2.9) +''''''''''''''''''''''''''''''''''''''''''' + +Use the ``none`` machine with the ``loader`` device instead. + +``xlnx-ep108`` (removed in 3.0) +''''''''''''''''''''''''''''''' + +The EP108 was an early access development board that is no longer used. +Use the ``xlnx-zcu102`` machine instead. + ``spike_v1.9.1`` and ``spike_v1.10`` (removed in 5.1) ''''''''''''''''''''''''''''''''''''''''''''''''''''' @@ -343,8 +507,8 @@ mips ``fulong2e`` machine alias (removed in 6.0) This machine has been renamed ``fuloong2e``. -``pc-1.0``, ``pc-1.1``, ``pc-1.2`` and ``pc-1.3`` (removed in 6.0) -'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +``pc-0.10`` up to ``pc-1.3`` (removed in 4.0 up to 6.0) +''''''''''''''''''''''''''''''''''''''''''''''''''''''' These machine types were very old and likely could not be used for live migration from old QEMU versions anymore. Use a newer machine type instead. @@ -365,6 +529,17 @@ running the old binaries, you can use older versions of QEMU. System emulator devices ----------------------- +``spapr-pci-vfio-host-bridge`` (removed in 2.12) +''''''''''''''''''''''''''''''''''''''''''''''''' + +The ``spapr-pci-vfio-host-bridge`` device type has been replaced by the +``spapr-pci-host-bridge`` device type. + +``ivshmem`` (removed in 4.0) +'''''''''''''''''''''''''''' + +Replaced by either the ``ivshmem-plain`` or ``ivshmem-doorbell``. + ``ide-drive`` (removed in 6.0) '''''''''''''''''''''''''''''' diff --git a/scripts/oss-fuzz/build.sh b/scripts/oss-fuzz/build.sh index c1af43fded..98b56e0521 100755 --- a/scripts/oss-fuzz/build.sh +++ b/scripts/oss-fuzz/build.sh @@ -73,17 +73,19 @@ if ! make "-j$(nproc)" qemu-fuzz-i386; then "\nFor example: CC=clang CXX=clang++ $0" fi -for i in $(ldd ./qemu-fuzz-i386 | cut -f3 -d' '); do - cp "$i" "$DEST_DIR/lib/" -done -rm qemu-fuzz-i386 +if [ "$GITLAB_CI" != "true" ]; then + for i in $(ldd ./qemu-fuzz-i386 | cut -f3 -d' '); do + cp "$i" "$DEST_DIR/lib/" + done + rm qemu-fuzz-i386 -# Build a second time to build the final binary with correct rpath -../configure --disable-werror --cc="$CC" --cxx="$CXX" --enable-fuzzing \ - --prefix="$DEST_DIR" --bindir="$DEST_DIR" --datadir="$DEST_DIR/data/" \ - --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="-Wl,-rpath,\$ORIGIN/lib" \ - --target-list="i386-softmmu" -make "-j$(nproc)" qemu-fuzz-i386 V=1 + # Build a second time to build the final binary with correct rpath + ../configure --disable-werror --cc="$CC" --cxx="$CXX" --enable-fuzzing \ + --prefix="$DEST_DIR" --bindir="$DEST_DIR" --datadir="$DEST_DIR/data/" \ + --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="-Wl,-rpath,\$ORIGIN/lib" \ + --target-list="i386-softmmu" + make "-j$(nproc)" qemu-fuzz-i386 V=1 +fi # Copy over the datadir cp -r ../pc-bios/ "$DEST_DIR/pc-bios" diff --git a/storage-daemon/meson.build b/storage-daemon/meson.build index 68852f3d25..49c9d2eac9 100644 --- a/storage-daemon/meson.build +++ b/storage-daemon/meson.build @@ -6,8 +6,8 @@ subdir('qapi') if have_tools qsd_ss = qsd_ss.apply(config_host, strict: false) - executable('qemu-storage-daemon', - qsd_ss.sources(), - dependencies: qsd_ss.dependencies(), - install: true) + qsd = executable('qemu-storage-daemon', + qsd_ss.sources(), + dependencies: qsd_ss.dependencies(), + install: true) endif diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index e22a0792c5..2bc3efd49f 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -276,8 +276,11 @@ foreach dir : target_dirs endif qtest_env.set('G_TEST_DBUS_DAEMON', meson.source_root() / 'tests/dbus-vmstate-daemon.sh') qtest_env.set('QTEST_QEMU_BINARY', './qemu-system-' + target_base) - qtest_env.set('QTEST_QEMU_STORAGE_DAEMON_BINARY', './storage-daemon/qemu-storage-daemon') - + if have_tools and have_vhost_user_blk_server + qtest_env.set('QTEST_QEMU_STORAGE_DAEMON_BINARY', './storage-daemon/qemu-storage-daemon') + test_deps += [qsd] + endif + foreach test : target_qtests # Executables are shared across targets, declare them only the first time we # encounter them diff --git a/tests/qtest/vhost-user-blk-test.c b/tests/qtest/vhost-user-blk-test.c index 8796c74ca4..6f108a1b62 100644 --- a/tests/qtest/vhost-user-blk-test.c +++ b/tests/qtest/vhost-user-blk-test.c @@ -789,6 +789,14 @@ static const char *qtest_qemu_storage_daemon_binary(void) exit(0); } + /* If we've got a path to the binary, check whether we can access it */ + if (strchr(qemu_storage_daemon_bin, '/') && + access(qemu_storage_daemon_bin, X_OK) != 0) { + fprintf(stderr, "ERROR: '%s' is not accessible\n", + qemu_storage_daemon_bin); + exit(1); + } + return qemu_storage_daemon_bin; }