Message ID | 20190802150605.5880-1-jfreimann@redhat.com |
---|---|
Headers | show |
Series | add failover feature for assigned network devices | expand |
On Fri, Aug 02, 2019 at 05:05:56PM +0200, Jens Freimann wrote: > This is implementing the host side of the net_failover concept > (https://www.kernel.org/doc/html/latest/networking/net_failover.html) > > Changes since v1: > - add new QMP events, > - one is send when the primary device is unplugged > - one is send when VIRTIO_NET_F_STANDBY is not negotiated. > This is needed because we hide the primary device until > the feature bit is negotiated and then add it with > qdev_add_device(). The event is for libvirt to be aware of that. > - patch 7/9: a new migration state, called wait-unplug. > It is entered after SETUP and before ACTIVE. In this phase we check > devices for pending guest unplug complete event. > This patch still has a problem. It checks in a loop if there are still > devices that are not unplugged by the guest. If the guest never > returns it will run forever. How to terminate this loop? I thought > about a timed wait semaphore or just spinning for a certain amount of time, > but nothing seems good. Any ideas here? > - patch 2/9: When unplugging the primary devices, only do the guest part i.e. > call hotplug_handler_unplug_request() which calls the pcie attention > button code. The unrealize part is not done so the ressources of the > device are not freed. In case of migration failure we can re-plug the device to > the guest with hotplug_handler_hotplug(). I tested migration failure and > a following second attempt to migrate that doesn't fail. > - add the primary device on the target VM, done in runstate change > handler. > - fix error reporting (dgilbert) > - get rid of timer to add device after feature negotiation > > The general idea is that we have a pair of devices, a vfio-pci and a > virtio-net device. Before migration the vfio device is unplugged and data > flows to the virtio-net device, on the target side another vfio-pci device > is plugged in to take over the data-path. In the guest the net_failover > module will pair net devices with the same MAC address. > > * Patch 1 adds the infrastructure to hide the device for the qbus and qdev APIs > > * Patch 2 In the second patch the virtio-net uses the API to defer adding the vfio > device until the VIRTIO_NET_F_STANDBY feature is acked. It also > implements the migration handler to unplug the device from the guest and > re-plug in case of migration failure > > * Patch 3 and 4 make sure that we can unplug the vfio-device before > migration starts > > * Patch 5 and 6 add new qmp events, one sends the device id of a device > that was just requested to be unplugged from the guest and another one > to let libvirt know if VIRTIO_NET_F_STANDBY was negotiated > > * Patch 7 adds a new migration state that is entered while we wait for > devices to be unplugged by guest OS > > * Patch 8 sets a new flag for PCIDevice 'partially_hotplugged' which we > use to skip the unrealize code path when doing a unplug of the primary > device > > * Patch 9 sets the pending_deleted_event before triggering the guest > unplug request > > Previous discussion: > RFC v1 https://patchwork.ozlabs.org/cover/989098/ > RFC v2 https://www.mail-archive.com/qemu-devel@nongnu.org/msg606906.html > v1: https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg03968.html > > To summarize concerns/feedback from previous discussion: > 1.- guest OS can reject or worse _delay_ unplug by any amount of time. > Migration might get stuck for unpredictable time with unclear reason. > This approach combines two tricky things, hot/unplug and migration. > -> We need to let libvirt know what's happening. Add new qmp events > and a new migration state. When a primary device is (partially) > unplugged (only from guest) we send a qmp event with the device id. When > it is unplugged from the guest the DEVICE_DELETED event is sent. > Migration will enter the wait-unplug state while waiting for the guest > os to unplug all primary devices and then move on with migration. > 2. PCI devices are a precious ressource. The primary device should never > be added to QEMU if it won't be used by guest instead of hiding it in > QEMU. > -> We only hotplug the device when the standby feature bit was > negotiated. We save the device cmdline options until we need it for > qdev_device_add() > Hiding a device can be a useful concept to model. For example a > pci device in a powered-off slot could be marked as hidden until the slot is > powered on (mst). > 3. Management layer software should handle this. Open Stack already has > components/code to handle unplug/replug VFIO devices and metadata to > provide to the guest for detecting which devices should be paired. > -> An approach that includes all software from firmware to > higher-level management software wasn't tried in the last years. This is > an attempt to keep it simple and contained in QEMU as much as possible. > One of the problems that stopped management software and libvirt from > implementing this idea is that it can't be sure that it's possible to > re-plug the primary device. By not freeing the devices resources in QEMU > and only asking the guest OS to unplug it is possible to re-plug the > device in case of a migration failure. > 4. Hotplugging a device and then making it part of a failover setup is > not possible > -> addressed by extending qdev hotplug functions to check for hidden > attribute, so e.g. device_add can be used to plug a device. > > > I have tested this with a mlx5 NIC and was able to migrate the VM with > above mentioned workarounds for open problems. > > Command line example: > > qemu-system-x86_64 -enable-kvm -m 3072 -smp 3 \ > -machine q35,kernel-irqchip=split -cpu host \ > -k fr \ > -serial stdio \ > -net none \ > -qmp unix:/tmp/qmp.socket,server,nowait \ > -monitor telnet:127.0.0.1:5555,server,nowait \ > -device pcie-root-port,id=root0,multifunction=on,chassis=0,addr=0xa \ > -device pcie-root-port,id=root1,bus=pcie.0,chassis=1 \ > -device pcie-root-port,id=root2,bus=pcie.0,chassis=2 \ > -netdev tap,script=/root/bin/bridge.sh,downscript=no,id=hostnet1,vhost=on \ > -device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:6f:55:cc,bus=root2,failover=on \ > -device vfio-pci,host=5e:00.2,id=hostdev0,bus=root1,standby=net1 \ > /root/rhel-guest-image-8.0-1781.x86_64.qcow2 Didn't read this yet, one question: how do migration commands look like? > I'm grateful for any remarks or ideas! > > Thanks! > > Changes from RFCv2 to v1: > - work around circular dependency of commandline options. Just add > failover=on to the virtio-net standby options and reference it from > primary (vfio-pci) device with standby=<id> > - add patch 3/4 to allow migration of vfio-pci device when it is part of a > failover pair, still disallow for all other devices > - add patch 4/4 to allow unplug of device during migrationm, make an > exception for failover primary devices. I'd like feedback on how to > solve this more elegant. I added a boolean to DeviceState, have it > default to false for all devices except for primary devices. > - not tested yet with surprise removal > - I don't expect this to go in as it is, still needs more testing but > I'd like to get feedback on above mentioned changes. > > > > Jens Freimann (9): > qdev/qbus: Add hidden device support > net/virtio: add failover support > vfio: unplug failover primary device before migration > migration: allow unplug during migration for failover devices > qapi: add unplug primary event > qapi: Add failover negotiated event > migration: Add new migration state wait-unplug > pci: mark devices partially unplugged > pci: mark device having guest unplug request pending > > hw/core/qdev.c | 20 ++++ > hw/net/virtio-net.c | 180 +++++++++++++++++++++++++++++++++ > hw/pci/pci.c | 2 + > hw/pci/pcie.c | 6 ++ > hw/vfio/pci.c | 25 ++++- > hw/vfio/pci.h | 2 + > include/hw/pci/pci.h | 1 + > include/hw/qdev-core.h | 9 ++ > include/hw/virtio/virtio-net.h | 13 +++ > include/hw/virtio/virtio.h | 1 + > include/migration/vmstate.h | 2 + > migration/migration.c | 14 +++ > migration/savevm.c | 18 ++++ > migration/savevm.h | 1 + > qapi/migration.json | 24 ++++- > qapi/net.json | 16 +++ > qdev-monitor.c | 43 +++++++- > vl.c | 6 +- > 18 files changed, 375 insertions(+), 8 deletions(-) > > -- > 2.21.0
Patchew URL: https://patchew.org/QEMU/20190802150605.5880-1-jfreimann@redhat.com/ Hi, This series seems to have some coding style problems. See output below for more information: Type: series Subject: [Qemu-devel] [PATCH v2 0/9] add failover feature for assigned network devices Message-id: 20190802150605.5880-1-jfreimann@redhat.com === TEST SCRIPT BEGIN === #!/bin/bash git rev-parse base > /dev/null || exit 0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram ./scripts/checkpatch.pl --mailback base.. === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 From https://github.com/patchew-project/qemu * [new tag] patchew/20190802150605.5880-1-jfreimann@redhat.com -> patchew/20190802150605.5880-1-jfreimann@redhat.com Submodule 'capstone' (https://git.qemu.org/git/capstone.git) registered for path 'capstone' Submodule 'dtc' (https://git.qemu.org/git/dtc.git) registered for path 'dtc' Submodule 'roms/QemuMacDrivers' (https://git.qemu.org/git/QemuMacDrivers.git) registered for path 'roms/QemuMacDrivers' Submodule 'roms/SLOF' (https://git.qemu.org/git/SLOF.git) registered for path 'roms/SLOF' Submodule 'roms/edk2' (https://git.qemu.org/git/edk2.git) registered for path 'roms/edk2' Submodule 'roms/ipxe' (https://git.qemu.org/git/ipxe.git) registered for path 'roms/ipxe' Submodule 'roms/openbios' (https://git.qemu.org/git/openbios.git) registered for path 'roms/openbios' Submodule 'roms/openhackware' (https://git.qemu.org/git/openhackware.git) registered for path 'roms/openhackware' Submodule 'roms/opensbi' (https://git.qemu.org/git/opensbi.git) registered for path 'roms/opensbi' Submodule 'roms/qemu-palcode' (https://git.qemu.org/git/qemu-palcode.git) registered for path 'roms/qemu-palcode' Submodule 'roms/seabios' (https://git.qemu.org/git/seabios.git/) registered for path 'roms/seabios' Submodule 'roms/seabios-hppa' (https://git.qemu.org/git/seabios-hppa.git) registered for path 'roms/seabios-hppa' Submodule 'roms/sgabios' (https://git.qemu.org/git/sgabios.git) registered for path 'roms/sgabios' Submodule 'roms/skiboot' (https://git.qemu.org/git/skiboot.git) registered for path 'roms/skiboot' Submodule 'roms/u-boot' (https://git.qemu.org/git/u-boot.git) registered for path 'roms/u-boot' Submodule 'roms/u-boot-sam460ex' (https://git.qemu.org/git/u-boot-sam460ex.git) registered for path 'roms/u-boot-sam460ex' Submodule 'slirp' (https://git.qemu.org/git/libslirp.git) registered for path 'slirp' Submodule 'tests/fp/berkeley-softfloat-3' (https://git.qemu.org/git/berkeley-softfloat-3.git) registered for path 'tests/fp/berkeley-softfloat-3' Submodule 'tests/fp/berkeley-testfloat-3' (https://git.qemu.org/git/berkeley-testfloat-3.git) registered for path 'tests/fp/berkeley-testfloat-3' Submodule 'ui/keycodemapdb' (https://git.qemu.org/git/keycodemapdb.git) registered for path 'ui/keycodemapdb' Cloning into 'capstone'... Submodule path 'capstone': checked out '22ead3e0bfdb87516656453336160e0a37b066bf' Cloning into 'dtc'... Submodule path 'dtc': checked out '88f18909db731a627456f26d779445f84e449536' Cloning into 'roms/QemuMacDrivers'... Submodule path 'roms/QemuMacDrivers': checked out '90c488d5f4a407342247b9ea869df1c2d9c8e266' Cloning into 'roms/SLOF'... Submodule path 'roms/SLOF': checked out 'ba1ab360eebe6338bb8d7d83a9220ccf7e213af3' Cloning into 'roms/edk2'... Submodule path 'roms/edk2': checked out '20d2e5a125e34fc8501026613a71549b2a1a3e54' Submodule 'SoftFloat' (https://github.com/ucb-bar/berkeley-softfloat-3.git) registered for path 'ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3' Submodule 'CryptoPkg/Library/OpensslLib/openssl' (https://github.com/openssl/openssl) registered for path 'CryptoPkg/Library/OpensslLib/openssl' Cloning into 'ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3'... Submodule path 'roms/edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3': checked out 'b64af41c3276f97f0e181920400ee056b9c88037' Cloning into 'CryptoPkg/Library/OpensslLib/openssl'... Submodule path 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl': checked out '50eaac9f3337667259de725451f201e784599687' Submodule 'boringssl' (https://boringssl.googlesource.com/boringssl) registered for path 'boringssl' Submodule 'krb5' (https://github.com/krb5/krb5) registered for path 'krb5' Submodule 'pyca.cryptography' (https://github.com/pyca/cryptography.git) registered for path 'pyca-cryptography' Cloning into 'boringssl'... Submodule path 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl/boringssl': checked out '2070f8ad9151dc8f3a73bffaa146b5e6937a583f' Cloning into 'krb5'... Submodule path 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl/krb5': checked out 'b9ad6c49505c96a088326b62a52568e3484f2168' Cloning into 'pyca-cryptography'... Submodule path 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl/pyca-cryptography': checked out '09403100de2f6f1cdd0d484dcb8e620f1c335c8f' Cloning into 'roms/ipxe'... Submodule path 'roms/ipxe': checked out 'de4565cbe76ea9f7913a01f331be3ee901bb6e17' Cloning into 'roms/openbios'... Submodule path 'roms/openbios': checked out 'c79e0ecb84f4f1ee3f73f521622e264edd1bf174' Cloning into 'roms/openhackware'... Submodule path 'roms/openhackware': checked out 'c559da7c8eec5e45ef1f67978827af6f0b9546f5' Cloning into 'roms/opensbi'... Submodule path 'roms/opensbi': checked out 'ce228ee0919deb9957192d723eecc8aaae2697c6' Cloning into 'roms/qemu-palcode'... Submodule path 'roms/qemu-palcode': checked out 'bf0e13698872450164fa7040da36a95d2d4b326f' Cloning into 'roms/seabios'... Submodule path 'roms/seabios': checked out 'a5cab58e9a3fb6e168aba919c5669bea406573b4' Cloning into 'roms/seabios-hppa'... Submodule path 'roms/seabios-hppa': checked out '0f4fe84658165e96ce35870fd19fc634e182e77b' Cloning into 'roms/sgabios'... Submodule path 'roms/sgabios': checked out 'cbaee52287e5f32373181cff50a00b6c4ac9015a' Cloning into 'roms/skiboot'... Submodule path 'roms/skiboot': checked out '261ca8e779e5138869a45f174caa49be6a274501' Cloning into 'roms/u-boot'... Submodule path 'roms/u-boot': checked out 'd3689267f92c5956e09cc7d1baa4700141662bff' Cloning into 'roms/u-boot-sam460ex'... Submodule path 'roms/u-boot-sam460ex': checked out '60b3916f33e617a815973c5a6df77055b2e3a588' Cloning into 'slirp'... Submodule path 'slirp': checked out '126c04acbabd7ad32c2b018fe10dfac2a3bc1210' Cloning into 'tests/fp/berkeley-softfloat-3'... Submodule path 'tests/fp/berkeley-softfloat-3': checked out 'b64af41c3276f97f0e181920400ee056b9c88037' Cloning into 'tests/fp/berkeley-testfloat-3'... Submodule path 'tests/fp/berkeley-testfloat-3': checked out '5a59dcec19327396a011a17fd924aed4fec416b3' Cloning into 'ui/keycodemapdb'... Submodule path 'ui/keycodemapdb': checked out '6b3d716e2b6472eb7189d3220552280ef3d832ce' Switched to a new branch 'test' 5413b11 pci: mark device having guest unplug request pending 1122a98 pci: mark devices partially unplugged 037ece6 migration: Add new migration state wait-unplug 977cddd qapi: Add failover negotiated event c667aac qapi: add unplug primary event ed7c901 migration: allow unplug during migration for failover devices a5b44ef vfio: unplug failover primary device before migration fb65f38 net/virtio: add failover support 13cff19 qdev/qbus: Add hidden device support === OUTPUT BEGIN === 1/9 Checking commit 13cff197cc0c (qdev/qbus: Add hidden device support) 2/9 Checking commit fb65f38adbcf (net/virtio: add failover support) 3/9 Checking commit a5b44ef6ba1f (vfio: unplug failover primary device before migration) 4/9 Checking commit ed7c9019a392 (migration: allow unplug during migration for failover devices) 5/9 Checking commit c667aac9cb69 (qapi: add unplug primary event) 6/9 Checking commit 977cddd4833c (qapi: Add failover negotiated event) 7/9 Checking commit 037ece679d59 (migration: Add new migration state wait-unplug) ERROR: trailing whitespace #85: FILE: migration/migration.c:3232: + MIGRATION_STATUS_ACTIVE); $ ERROR: trailing whitespace #141: FILE: qapi/migration.json:137: +# (since 4.2) $ total: 2 errors, 0 warnings, 94 lines checked Patch 7/9 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 8/9 Checking commit 1122a980b0ff (pci: mark devices partially unplugged) 9/9 Checking commit 5413b11426c0 (pci: mark device having guest unplug request pending) === OUTPUT END === Test command exited with code: 1 The full log is available at http://patchew.org/logs/20190802150605.5880-1-jfreimann@redhat.com/testing.checkpatch/?type=message. --- Email generated automatically by Patchew [https://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
Patchew URL: https://patchew.org/QEMU/20190802150605.5880-1-jfreimann@redhat.com/ Hi, This series failed the asan build test. Please find the testing commands and their output below. If you have Docker installed, you can probably reproduce it locally. === TEST SCRIPT BEGIN === #!/bin/bash make docker-image-fedora V=1 NETWORK=1 time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1 === TEST SCRIPT END === PASS 1 fdc-test /x86_64/fdc/cmos PASS 2 fdc-test /x86_64/fdc/no_media_on_start PASS 3 fdc-test /x86_64/fdc/read_without_media ==10754==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 fdc-test /x86_64/fdc/media_change PASS 5 fdc-test /x86_64/fdc/sense_interrupt PASS 6 fdc-test /x86_64/fdc/relative_seek --- PASS 32 test-opts-visitor /visitor/opts/range/beyond PASS 33 test-opts-visitor /visitor/opts/dict/unvisited MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-coroutine -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-coroutine" ==10817==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10817==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffbb748000; bottom 0x7ff8aa6f8000; size: 0x000711050000 (30350311424) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 test-coroutine /basic/no-dangling-access --- PASS 12 fdc-test /x86_64/fdc/read_no_dma_19 PASS 13 fdc-test /x86_64/fdc/fuzz-registers MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/ide-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ide-test" ==10836==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 14 test-aio /aio/timer/schedule PASS 15 test-aio /aio/coroutine/queue-chaining PASS 16 test-aio /aio-gsource/flush --- PASS 25 test-aio /aio-gsource/event/wait PASS 26 test-aio /aio-gsource/event/flush PASS 27 test-aio /aio-gsource/event/wait/no-flush-cb ==10845==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 ide-test /x86_64/ide/identify ==10851==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 ide-test /x86_64/ide/flush PASS 28 test-aio /aio-gsource/timer/schedule MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-aio-multithread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-aio-multithread" ==10860==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-aio-multithread /aio/multi/lifecycle ==10857==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 ide-test /x86_64/ide/bmdma/simple_rw PASS 2 test-aio-multithread /aio/multi/schedule ==10878==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 ide-test /x86_64/ide/bmdma/trim PASS 3 test-aio-multithread /aio/multi/mutex/contended ==10889==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 ide-test /x86_64/ide/bmdma/short_prdt ==10900==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 ide-test /x86_64/ide/bmdma/one_sector_short_prdt ==10906==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 ide-test /x86_64/ide/bmdma/long_prdt ==10912==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 test-aio-multithread /aio/multi/mutex/handoff ==10912==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc98368000; bottom 0x7fbd2f3fe000; size: 0x003f68f6a000 (272343932928) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 8 ide-test /x86_64/ide/bmdma/no_busmaster PASS 5 test-aio-multithread /aio/multi/mutex/mcs PASS 9 ide-test /x86_64/ide/flush/nodev ==10933==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 test-aio-multithread /aio/multi/mutex/pthread MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-throttle -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-throttle" PASS 10 ide-test /x86_64/ide/flush/empty_drive ==10940==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-throttle /throttle/leak_bucket PASS 2 test-throttle /throttle/compute_wait PASS 3 test-throttle /throttle/init --- PASS 14 test-throttle /throttle/config/max PASS 15 test-throttle /throttle/config/iops_size MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-thread-pool -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-thread-pool" ==10946==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-thread-pool /thread-pool/submit PASS 2 test-thread-pool /thread-pool/submit-aio PASS 3 test-thread-pool /thread-pool/submit-co PASS 4 test-thread-pool /thread-pool/submit-many ==10942==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 11 ide-test /x86_64/ide/flush/retry_pci ==11018==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 12 ide-test /x86_64/ide/flush/retry_isa PASS 5 test-thread-pool /thread-pool/cancel ==11024==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 13 ide-test /x86_64/ide/cdrom/pio ==11031==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 test-thread-pool /thread-pool/cancel-async MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-hbitmap -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-hbitmap" PASS 1 test-hbitmap /hbitmap/granularity --- PASS 5 test-hbitmap /hbitmap/iter/partial PASS 6 test-hbitmap /hbitmap/iter/granularity PASS 7 test-hbitmap /hbitmap/iter/iter_and_reset ==11042==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 test-hbitmap /hbitmap/get/all PASS 9 test-hbitmap /hbitmap/get/some PASS 10 test-hbitmap /hbitmap/set/all --- PASS 28 test-hbitmap /hbitmap/truncate/shrink/medium PASS 29 test-hbitmap /hbitmap/truncate/shrink/large PASS 30 test-hbitmap /hbitmap/meta/zero ==11056==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 ahci-test /x86_64/ahci/sanity ==11062==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 ahci-test /x86_64/ahci/pci_spec ==11068==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 ahci-test /x86_64/ahci/pci_enable ==11074==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 ahci-test /x86_64/ahci/hba_spec ==11080==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 31 test-hbitmap /hbitmap/meta/one PASS 32 test-hbitmap /hbitmap/meta/byte PASS 33 test-hbitmap /hbitmap/meta/word PASS 5 ahci-test /x86_64/ahci/hba_enable ==11086==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 34 test-hbitmap /hbitmap/meta/sector PASS 35 test-hbitmap /hbitmap/serialize/align PASS 6 ahci-test /x86_64/ahci/identify ==11092==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 ahci-test /x86_64/ahci/max ==11098==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 36 test-hbitmap /hbitmap/serialize/basic PASS 37 test-hbitmap /hbitmap/serialize/part PASS 38 test-hbitmap /hbitmap/serialize/zeroes --- PASS 42 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_1 PASS 43 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_4 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-bdrv-drain -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-drain" ==11105==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-bdrv-drain /bdrv-drain/nested PASS 2 test-bdrv-drain /bdrv-drain/multiparent PASS 3 test-bdrv-drain /bdrv-drain/set_aio_context --- PASS 39 test-bdrv-drain /bdrv-drain/detach/driver_cb PASS 40 test-bdrv-drain /bdrv-drain/attach/drain MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-bdrv-graph-mod -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-graph-mod" ==11126==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11147==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-bdrv-graph-mod /bdrv-graph-mod/update-perm-tree PASS 2 test-bdrv-graph-mod /bdrv-graph-mod/should-update-child ==11126==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd4a856000; bottom 0x7f56987fe000; size: 0x00a6b2058000 (715951276032) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-blockjob -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob" ==11157==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-blockjob /blockjob/ids PASS 2 test-blockjob /blockjob/cancel/created PASS 3 test-blockjob /blockjob/cancel/running --- PASS 8 test-blockjob /blockjob/cancel/concluded PASS 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-blockjob-txn -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob-txn" ==11163==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-blockjob-txn /single/success PASS 2 test-blockjob-txn /single/failure PASS 3 test-blockjob-txn /single/cancel --- PASS 5 test-blockjob-txn /pair/failure PASS 6 test-blockjob-txn /pair/cancel PASS 7 test-blockjob-txn /pair/fail-cancel-race ==11161==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-block-backend -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-backend" ==11161==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc67f94000; bottom 0x7f3d45bfe000; size: 0x00bf22396000 (820912939008) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 ==11172==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-block-backend /block-backend/drain_aio_error PASS 2 test-block-backend /block-backend/drain_all_aio_error MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-block-iothread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-iothread" PASS 10 ahci-test /x86_64/ahci/io/pio/lba28/simple/low ==11178==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-block-iothread /sync-op/pread PASS 2 test-block-iothread /sync-op/pwrite PASS 3 test-block-iothread /sync-op/load_vmstate --- PASS 14 test-block-iothread /propagate/basic PASS 15 test-block-iothread /propagate/diamond PASS 16 test-block-iothread /propagate/mirror ==11180==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-image-locking -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-image-locking" ==11180==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc5c50d000; bottom 0x7fc4ec1fe000; size: 0x00377030f000 (238105456640) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 ==11204==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-image-locking /image-locking/basic PASS 2 test-image-locking /image-locking/set-perm-abort MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-x86-cpuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid" --- PASS 3 test-xbzrle /xbzrle/encode_decode_unchanged PASS 4 test-xbzrle /xbzrle/encode_decode_1_byte PASS 5 test-xbzrle /xbzrle/encode_decode_overflow ==11213==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11213==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd72c73000; bottom 0x7fb46a9fe000; size: 0x004908275000 (313669406720) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 6 test-xbzrle /xbzrle/encode_decode --- PASS 133 test-cutils /cutils/strtosz/erange PASS 134 test-cutils /cutils/strtosz/metric MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-shift128 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-shift128" ==11228==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-shift128 /host-utils/test_lshift PASS 2 test-shift128 /host-utils/test_rshift MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-mul64 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-mul64" PASS 1 test-mul64 /host-utils/mulu64 PASS 2 test-mul64 /host-utils/muls64 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-int128 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-int128" ==11228==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc5ca92000; bottom 0x7f7d41bfe000; size: 0x007f1ae94000 (545912340480) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 test-int128 /int128/int128_and --- PASS 10 test-int128 /int128/int128_rshift MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/rcutorture -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="rcutorture" PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low ==11261==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11261==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff38f9f000; bottom 0x7ff600bfe000; size: 0x0009383a1000 (39598034944) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 rcutorture /rcu/torture/1reader PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high ==11283==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11283==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcb3d11000; bottom 0x7fa534f7c000; size: 0x00577ed95000 (375790325760) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 2 rcutorture /rcu/torture/10readers MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-rcu-list -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-list" PASS 15 ahci-test /x86_64/ahci/io/pio/lba28/long/zero PASS 1 test-rcu-list /rcu/qlist/single-threaded ==11296==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11296==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffefa12b000; bottom 0x7f7e2f324000; size: 0x0080cae07000 (553159520256) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 2 test-rcu-list /rcu/qlist/short-few PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low ==11329==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11329==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff3417e000; bottom 0x7f77d1d24000; size: 0x00876245a000 (581469315072) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 3 test-rcu-list /rcu/qlist/long-many PASS 17 ahci-test /x86_64/ahci/io/pio/lba28/long/high MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-rcu-simpleq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-simpleq" ==11336==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 18 ahci-test /x86_64/ahci/io/pio/lba28/short/zero PASS 1 test-rcu-simpleq /rcu/qsimpleq/single-threaded ==11348==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 test-rcu-simpleq /rcu/qsimpleq/short-few PASS 19 ahci-test /x86_64/ahci/io/pio/lba28/short/low ==11381==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 20 ahci-test /x86_64/ahci/io/pio/lba28/short/high PASS 3 test-rcu-simpleq /rcu/qsimpleq/long-many MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-rcu-tailq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-tailq" ==11387==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11387==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe8af40000; bottom 0x7f6eab7fe000; size: 0x008fdf742000 (617929252864) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero PASS 1 test-rcu-tailq /rcu/qtailq/single-threaded ==11400==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11400==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff97378000; bottom 0x7f6e2effe000; size: 0x00916837a000 (624518733824) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 2 test-rcu-tailq /rcu/qtailq/short-few PASS 22 ahci-test /x86_64/ahci/io/pio/lba48/simple/low ==11433==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11433==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcaa4fe000; bottom 0x7f865a3fe000; size: 0x007650100000 (508149366784) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 23 ahci-test /x86_64/ahci/io/pio/lba48/simple/high PASS 3 test-rcu-tailq /rcu/qtailq/long-many ==11439==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-qdist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qdist" ==11439==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffce9098000; bottom 0x7f29bc3fe000; size: 0x00d32cc9a000 (906989510656) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 test-qdist /qdist/none --- PASS 8 test-qdist /qdist/binning/shrink MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-qht -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht" PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero ==11454==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11454==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffce63e5000; bottom 0x7fc693bfe000; size: 0x0036527e7000 (233312251904) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 25 ahci-test /x86_64/ahci/io/pio/lba48/double/low ==11460==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11460==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd676cc000; bottom 0x7f006ddfe000; size: 0x00fcf98ce000 (1086518517760) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 26 ahci-test /x86_64/ahci/io/pio/lba48/double/high ==11466==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11466==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffda85aa000; bottom 0x7fdb67f7c000; size: 0x00224062e000 (147109109760) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 27 ahci-test /x86_64/ahci/io/pio/lba48/long/zero ==11472==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11472==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcdc8b4000; bottom 0x7f120bbfe000; size: 0x00ead0cb6000 (1008525336576) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 28 ahci-test /x86_64/ahci/io/pio/lba48/long/low ==11478==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11478==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd3ef2e000; bottom 0x7f0c6f1fe000; size: 0x00f0cfd30000 (1034278862848) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 29 ahci-test /x86_64/ahci/io/pio/lba48/long/high ==11484==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 30 ahci-test /x86_64/ahci/io/pio/lba48/short/zero ==11490==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 31 ahci-test /x86_64/ahci/io/pio/lba48/short/low ==11496==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 32 ahci-test /x86_64/ahci/io/pio/lba48/short/high ==11502==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 33 ahci-test /x86_64/ahci/io/dma/lba28/fragmented ==11508==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-qht /qht/mode/default PASS 34 ahci-test /x86_64/ahci/io/dma/lba28/retry PASS 2 test-qht /qht/mode/resize MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-qht-par -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht-par" ==11514==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 35 ahci-test /x86_64/ahci/io/dma/lba28/simple/zero PASS 1 test-qht-par /qht/parallel/2threads-0%updates-1s ==11530==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 36 ahci-test /x86_64/ahci/io/dma/lba28/simple/low PASS 2 test-qht-par /qht/parallel/2threads-20%updates-1s MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-bitops -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bitops" ==11543==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-bitops /bitops/sextract32 PASS 2 test-bitops /bitops/sextract64 PASS 3 test-bitops /bitops/half_shuffle32 --- PASS 1 check-qom-interface /qom/interface/direct_impl PASS 2 check-qom-interface /qom/interface/intermediate_impl MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/check-qom-proplist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="check-qom-proplist" ==11566==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 check-qom-proplist /qom/proplist/createlist PASS 2 check-qom-proplist /qom/proplist/createv PASS 3 check-qom-proplist /qom/proplist/createcmdline --- PASS 4 test-crypto-hash /crypto/hash/digest PASS 5 test-crypto-hash /crypto/hash/base64 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-crypto-hmac -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-hmac" ==11595==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-crypto-hmac /crypto/hmac/iov PASS 2 test-crypto-hmac /crypto/hmac/alloc PASS 3 test-crypto-hmac /crypto/hmac/prealloc --- PASS 16 test-crypto-secret /crypto/secret/crypt/badiv MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-crypto-tlscredsx509 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlscredsx509" PASS 39 ahci-test /x86_64/ahci/io/dma/lba28/double/low ==11626==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 40 ahci-test /x86_64/ahci/io/dma/lba28/double/high PASS 1 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectserver PASS 2 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectclient PASS 3 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca1 ==11633==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero PASS 4 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca2 PASS 5 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca3 PASS 6 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca1 PASS 7 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca2 PASS 8 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca3 ==11639==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low PASS 9 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver1 ==11645==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 10 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver2 PASS 43 ahci-test /x86_64/ahci/io/dma/lba28/long/high PASS 11 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver3 ==11651==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 12 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver4 PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero PASS 13 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver5 PASS 14 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver6 ==11657==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 45 ahci-test /x86_64/ahci/io/dma/lba28/short/low PASS 15 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver7 PASS 16 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badserver1 --- PASS 32 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive1 PASS 33 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive2 PASS 34 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive3 ==11663==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 35 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/chain1 PASS 36 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/chain2 PASS 37 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingca --- PASS 39 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingclient MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-crypto-tlssession -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlssession" PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high ==11674==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-crypto-tlssession /qcrypto/tlssession/psk PASS 47 ahci-test /x86_64/ahci/io/dma/lba48/simple/zero PASS 2 test-crypto-tlssession /qcrypto/tlssession/basicca ==11680==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 test-crypto-tlssession /qcrypto/tlssession/differentca PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low PASS 4 test-crypto-tlssession /qcrypto/tlssession/altname1 ==11686==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 test-crypto-tlssession /qcrypto/tlssession/altname2 PASS 6 test-crypto-tlssession /qcrypto/tlssession/altname3 PASS 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high ==11692==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero ==11698==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low PASS 7 test-crypto-tlssession /qcrypto/tlssession/altname4 ==11704==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high ==11710==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero ==11716==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 test-crypto-tlssession /qcrypto/tlssession/altname5 PASS 9 test-crypto-tlssession /qcrypto/tlssession/altname6 PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low PASS 10 test-crypto-tlssession /qcrypto/tlssession/wildcard1 ==11722==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 11 test-crypto-tlssession /qcrypto/tlssession/wildcard2 PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high ==11728==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 12 test-crypto-tlssession /qcrypto/tlssession/wildcard3 PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero ==11734==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 13 test-crypto-tlssession /qcrypto/tlssession/wildcard4 PASS 57 ahci-test /x86_64/ahci/io/dma/lba48/short/low ==11740==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 58 ahci-test /x86_64/ahci/io/dma/lba48/short/high PASS 14 test-crypto-tlssession /qcrypto/tlssession/wildcard5 ==11746==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 15 test-crypto-tlssession /qcrypto/tlssession/wildcard6 PASS 59 ahci-test /x86_64/ahci/io/ncq/simple PASS 16 test-crypto-tlssession /qcrypto/tlssession/cachain MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-qga -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qga" ==11752==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 60 ahci-test /x86_64/ahci/io/ncq/retry ==11764==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-qga /qga/sync-delimited PASS 2 test-qga /qga/sync PASS 3 test-qga /qga/ping --- PASS 16 test-qga /qga/invalid-args PASS 17 test-qga /qga/fsfreeze-status PASS 61 ahci-test /x86_64/ahci/flush/simple ==11771==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 18 test-qga /qga/blacklist PASS 19 test-qga /qga/config PASS 20 test-qga /qga/guest-exec PASS 21 test-qga /qga/guest-exec-invalid PASS 62 ahci-test /x86_64/ahci/flush/retry ==11784==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 22 test-qga /qga/guest-get-osinfo PASS 23 test-qga /qga/guest-get-host-name PASS 24 test-qga /qga/guest-get-timezone --- PASS 1 test-timed-average /timed-average/average MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-util-filemonitor -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-util-filemonitor" PASS 1 test-util-filemonitor /util/filemonitor ==11790==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-util-sockets -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-util-sockets" PASS 1 test-util-sockets /util/socket/is-socket/bad PASS 2 test-util-sockets /util/socket/is-socket/good --- PASS 5 test-io-channel-file /io/channel/pipe/async MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-io-channel-tls -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-tls" PASS 63 ahci-test /x86_64/ahci/flush/migrate ==11893==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-io-channel-tls /qio/channel/tls/basic MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-io-channel-command -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-command" PASS 1 test-io-channel-command /io/channel/command/fifo/sync --- MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-io-channel-buffer -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-buffer" PASS 1 test-io-channel-buffer /io/channel/buf MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-base64 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-base64" ==11903==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-base64 /util/base64/good PASS 2 test-base64 /util/base64/embedded-nul PASS 3 test-base64 /util/base64/not-nul-terminated --- PASS 1 test-logging /logging/parse_range PASS 2 test-logging /logging/parse_path MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-replication -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-replication" ==11954==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-replication /replication/primary/read PASS 2 test-replication /replication/primary/write PASS 64 ahci-test /x86_64/ahci/migrate/sanity ==11960==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 test-replication /replication/primary/start PASS 4 test-replication /replication/primary/stop PASS 5 test-replication /replication/primary/do_checkpoint PASS 6 test-replication /replication/primary/get_error_all ==11965==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 test-replication /replication/secondary/read PASS 8 test-replication /replication/secondary/write PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple ==11974==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11979==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==11954==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffddd5cf000; bottom 0x7f7b771fc000; size: 0x0082663d3000 (560061034496) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 9 test-replication /replication/secondary/start PASS 66 ahci-test /x86_64/ahci/migrate/dma/halted ==12005==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==12010==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 10 test-replication /replication/secondary/stop PASS 67 ahci-test /x86_64/ahci/migrate/ncq/simple ==12019==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==12024==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 11 test-replication /replication/secondary/do_checkpoint PASS 12 test-replication /replication/secondary/get_error_all MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-bufferiszero -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bufferiszero" PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted ==12037==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 69 ahci-test /x86_64/ahci/cdrom/eject ==12042==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 70 ahci-test /x86_64/ahci/cdrom/dma/single ==12048==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 71 ahci-test /x86_64/ahci/cdrom/dma/multi ==12054==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 72 ahci-test /x86_64/ahci/cdrom/pio/single ==12060==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==12060==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffffc89b000; bottom 0x7feef4ffe000; size: 0x00110789d000 (73140916224) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 73 ahci-test /x86_64/ahci/cdrom/pio/multi ==12066==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 74 ahci-test /x86_64/ahci/cdrom/pio/bcl MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/hd-geo-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="hd-geo-test" PASS 1 hd-geo-test /x86_64/hd-geo/ide/none ==12081==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 hd-geo-test /x86_64/hd-geo/ide/drive/cd_0 ==12087==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/blank ==12093==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/lba ==12099==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/chs ==12105==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 hd-geo-test /x86_64/hd-geo/ide/device/mbr/blank ==12111==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 hd-geo-test /x86_64/hd-geo/ide/device/mbr/lba ==12117==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 hd-geo-test /x86_64/hd-geo/ide/device/mbr/chs ==12123==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 hd-geo-test /x86_64/hd-geo/ide/device/user/chs ==12128==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 10 hd-geo-test /x86_64/hd-geo/ide/device/user/chst MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/boot-order-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="boot-order-test" PASS 1 boot-order-test /x86_64/boot-order/pc --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12196==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP' Using expected file 'tests/data/acpi/pc/FACP' --- PASS 21 test-qgraph /qgraph/test_two_test_same_interface PASS 22 test-qgraph /qgraph/test_test_in_path PASS 23 test-qgraph /qgraph/test_double_edge ==12211==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP' Using expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12225==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.bridge' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12231==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.ipmikcs' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12237==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.cphp' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12244==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.memhp' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12250==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.numamem' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12256==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.dimmpxm' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12265==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.bridge' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12271==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.mmio64' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12277==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.ipmibt' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12283==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.cphp' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12290==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.memhp' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12296==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.numamem' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12302==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.dimmpxm' Looking for expected file 'tests/data/acpi/q35/FACP' --- PASS 1 i440fx-test /x86_64/i440fx/defaults PASS 2 i440fx-test /x86_64/i440fx/pam PASS 3 i440fx-test /x86_64/i440fx/firmware/bios ==12386==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 i440fx-test /x86_64/i440fx/firmware/pflash MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/fw_cfg-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="fw_cfg-test" PASS 1 fw_cfg-test /x86_64/fw_cfg/signature --- MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/drive_del-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="drive_del-test" PASS 1 drive_del-test /x86_64/drive_del/without-dev PASS 2 drive_del-test /x86_64/drive_del/after_failed_device_add ==12474==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 drive_del-test /x86_64/blockdev/drive_del_device_del MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/wdt_ib700-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="wdt_ib700-test" PASS 1 wdt_ib700-test /x86_64/wdt_ib700/pause --- PASS 1 usb-hcd-uhci-test /x86_64/uhci/pci/init PASS 2 usb-hcd-uhci-test /x86_64/uhci/pci/port1 PASS 3 usb-hcd-uhci-test /x86_64/uhci/pci/hotplug ==12669==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 usb-hcd-uhci-test /x86_64/uhci/pci/hotplug/usb-storage MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/usb-hcd-xhci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="usb-hcd-xhci-test" PASS 1 usb-hcd-xhci-test /x86_64/xhci/pci/init PASS 2 usb-hcd-xhci-test /x86_64/xhci/pci/hotplug ==12678==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 usb-hcd-xhci-test /x86_64/xhci/pci/hotplug/usb-uas PASS 4 usb-hcd-xhci-test /x86_64/xhci/pci/hotplug/usb-ccid MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/cpu-plug-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="cpu-plug-test" --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12784==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 vmgenid-test /x86_64/vmgenid/vmgenid/set-guid Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12790==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 vmgenid-test /x86_64/vmgenid/vmgenid/set-guid-auto Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12796==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 vmgenid-test /x86_64/vmgenid/vmgenid/query-monitor MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/tpm-crb-swtpm-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="tpm-crb-swtpm-test" SKIP 1 tpm-crb-swtpm-test /x86_64/tpm/crb-swtpm/test # SKIP swtpm not in PATH or missing --tpm2 support --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12901==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12906==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 migration-test /x86_64/migration/fd_proto Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12914==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12919==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 migration-test /x86_64/migration/postcopy/unix PASS 5 migration-test /x86_64/migration/postcopy/recovery Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12949==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12954==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 migration-test /x86_64/migration/precopy/unix Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12963==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12968==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 migration-test /x86_64/migration/precopy/tcp Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12977==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==12982==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 migration-test /x86_64/migration/xbzrle/unix MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/test-x86-cpuid-compat -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid-compat" PASS 1 test-x86-cpuid-compat /x86/cpuid/parsing-plus-minus --- PASS 6 numa-test /x86_64/numa/pc/dynamic/cpu MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qmp-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="qmp-test" PASS 1 qmp-test /x86_64/qmp/protocol ==13311==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 qmp-test /x86_64/qmp/oob PASS 3 qmp-test /x86_64/qmp/preconfig PASS 4 qmp-test /x86_64/qmp/missing-any-arg --- PASS 6 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/sdhci-pci/sdhci/sdhci-tests/registers PASS 7 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/tpci200/ipack/ipoctal232/ipoctal232-tests/nop PASS 8 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/tpci200/pci-device/pci-device-tests/nop ==13720==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-9p-pci/pci-device/pci-device-tests/nop PASS 10 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-9p-pci/virtio/virtio-tests/nop PASS 11 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-9p-pci/virtio-9p/virtio-9p-tests/config --- PASS 20 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-9p-pci/virtio-9p/virtio-9p-tests/fs/flush/ignored PASS 21 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-balloon-pci/pci-device/pci-device-tests/nop PASS 22 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-balloon-pci/virtio/virtio-tests/nop ==13733==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 23 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk/virtio-blk-tests/indirect ==13740==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 24 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk/virtio-blk-tests/config ==13747==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 25 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk/virtio-blk-tests/basic ==13754==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 26 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk/virtio-blk-tests/resize ==13761==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 27 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk-pci-tests/msix ==13768==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 28 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk-pci-tests/idx ==13775==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 29 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk-pci-tests/nxvirtq ==13782==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 30 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk-pci-tests/hotplug PASS 31 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-net-pci/virtio-net/virtio-net-tests/basic PASS 32 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-net-pci/virtio-net/virtio-net-tests/rx_stop_cont PASS 33 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-net-pci/virtio-net/virtio-net-tests/announce-self ** ERROR:/tmp/qemu-test/src/tests/qos-test.c:305:subprocess_run_one_test: child process (/x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-net-pci/virtio-net/virtio-net-tests/vhost-user/migrate/subprocess [13806]) failed unexpectedly ERROR - Bail out! ERROR:/tmp/qemu-test/src/tests/qos-test.c:305:subprocess_run_one_test: child process (/x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-net-pci/virtio-net/virtio-net-tests/vhost-user/migrate/subprocess [13806]) failed unexpectedly make: *** [/tmp/qemu-test/src/tests/Makefile.include:899: check-qtest-x86_64] Error 1 make: *** Waiting for unfinished jobs.... Traceback (most recent call last): The full log is available at http://patchew.org/logs/20190802150605.5880-1-jfreimann@redhat.com/testing.asan/?type=message. --- Email generated automatically by Patchew [https://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
On Fri, Aug 02, 2019 at 11:22:10AM -0400, Michael S. Tsirkin wrote: >On Fri, Aug 02, 2019 at 05:05:56PM +0200, Jens Freimann wrote: >> This is implementing the host side of the net_failover concept >> (https://www.kernel.org/doc/html/latest/networking/net_failover.html) >> >> Changes since v1: [...] >Didn't read this yet, one question: how do migration commands look >like? You mean the hmp commands I think: migrate -d tcp:host:port and to cancel migrate_cancel regards, Jens
On Mon, Aug 05, 2019 at 03:12:15PM +0200, Jens Freimann wrote: > On Fri, Aug 02, 2019 at 11:22:10AM -0400, Michael S. Tsirkin wrote: > > On Fri, Aug 02, 2019 at 05:05:56PM +0200, Jens Freimann wrote: > > > This is implementing the host side of the net_failover concept > > > (https://www.kernel.org/doc/html/latest/networking/net_failover.html) > > > > > > Changes since v1: > > [...] > > > Didn't read this yet, one question: how do migration commands look > > like? > > You mean the hmp commands I think: > > migrate -d tcp:host:port > > and to cancel > > migrate_cancel > > > regards, > Jens Sorry, no. I mean the command line on the incoming side.
On Mon, Aug 05, 2019 at 10:22:25AM -0400, Michael S. Tsirkin wrote: >On Mon, Aug 05, 2019 at 03:12:15PM +0200, Jens Freimann wrote: >> On Fri, Aug 02, 2019 at 11:22:10AM -0400, Michael S. Tsirkin wrote: >> > On Fri, Aug 02, 2019 at 05:05:56PM +0200, Jens Freimann wrote: >> > > This is implementing the host side of the net_failover concept >> > > (https://www.kernel.org/doc/html/latest/networking/net_failover.html) >> > > >> > > Changes since v1: >> >> [...] >> >> > Didn't read this yet, one question: how do migration commands look >> > like? >> >> You mean the hmp commands I think: >> >> migrate -d tcp:host:port >> >> and to cancel >> >> migrate_cancel >> >> >> regards, >> Jens > >Sorry, no. I mean the command line on the incoming side. It looks the same with -incoming tcp:0:4444 added. Pci address of vfio-pci device can be changed. > >-- >MST >
On Mon, Aug 05, 2019 at 08:49:49PM +0200, Jens Freimann wrote: > On Mon, Aug 05, 2019 at 10:22:25AM -0400, Michael S. Tsirkin wrote: > > On Mon, Aug 05, 2019 at 03:12:15PM +0200, Jens Freimann wrote: > > > On Fri, Aug 02, 2019 at 11:22:10AM -0400, Michael S. Tsirkin wrote: > > > > On Fri, Aug 02, 2019 at 05:05:56PM +0200, Jens Freimann wrote: > > > > > This is implementing the host side of the net_failover concept > > > > > (https://www.kernel.org/doc/html/latest/networking/net_failover.html) > > > > > > > > > > Changes since v1: > > > > > > [...] > > > > > > > Didn't read this yet, one question: how do migration commands look > > > > like? > > > > > > You mean the hmp commands I think: > > > > > > migrate -d tcp:host:port > > > > > > and to cancel > > > > > > migrate_cancel > > > > > > > > > regards, > > > Jens > > > > Sorry, no. I mean the command line on the incoming side. > > It looks the same with -incoming tcp:0:4444 added. Pci address of > vfio-pci device can be changed. Sounds good. And I assume one can also skip the vfio device and hotplug it later, right? > > > > -- > > MST > >
On Tue, Aug 06, 2019 at 04:43:35AM -0400, Michael S. Tsirkin wrote: >On Mon, Aug 05, 2019 at 08:49:49PM +0200, Jens Freimann wrote: >> On Mon, Aug 05, 2019 at 10:22:25AM -0400, Michael S. Tsirkin wrote: >> > On Mon, Aug 05, 2019 at 03:12:15PM +0200, Jens Freimann wrote: >> > > On Fri, Aug 02, 2019 at 11:22:10AM -0400, Michael S. Tsirkin wrote: >> > > > On Fri, Aug 02, 2019 at 05:05:56PM +0200, Jens Freimann wrote: >> > > > > This is implementing the host side of the net_failover concept >> > > > > (https://www.kernel.org/doc/html/latest/networking/net_failover.html) >> > > > > >> > > > > Changes since v1: >> > > >> > > [...] >> > > >> > > > Didn't read this yet, one question: how do migration commands look >> > > > like? >> > > >> > > You mean the hmp commands I think: >> > > >> > > migrate -d tcp:host:port >> > > >> > > and to cancel >> > > >> > > migrate_cancel >> > > >> > > >> > > regards, >> > > Jens >> > >> > Sorry, no. I mean the command line on the incoming side. >> >> It looks the same with -incoming tcp:0:4444 added. Pci address of >> vfio-pci device can be changed. > > >Sounds good. And I assume one can also skip the vfio device and >hotplug it later, right? yes, the vfio device can be hotplugged later both on target and source. regards, Jens
On Fri, Aug 02, 2019 at 05:05:56PM +0200, Jens Freimann wrote: > This is implementing the host side of the net_failover concept > (https://www.kernel.org/doc/html/latest/networking/net_failover.html) Virtio bits look fine. Anyone else wants to comment on management/migration aspects? Which tree should this be merged in? Mine? > Changes since v1: > - add new QMP events, > - one is send when the primary device is unplugged > - one is send when VIRTIO_NET_F_STANDBY is not negotiated. > This is needed because we hide the primary device until > the feature bit is negotiated and then add it with > qdev_add_device(). The event is for libvirt to be aware of that. > - patch 7/9: a new migration state, called wait-unplug. > It is entered after SETUP and before ACTIVE. In this phase we check > devices for pending guest unplug complete event. > This patch still has a problem. It checks in a loop if there are still > devices that are not unplugged by the guest. If the guest never > returns it will run forever. How to terminate this loop? I thought > about a timed wait semaphore or just spinning for a certain amount of time, > but nothing seems good. Any ideas here? > - patch 2/9: When unplugging the primary devices, only do the guest part i.e. > call hotplug_handler_unplug_request() which calls the pcie attention > button code. The unrealize part is not done so the ressources of the > device are not freed. In case of migration failure we can re-plug the device to > the guest with hotplug_handler_hotplug(). I tested migration failure and > a following second attempt to migrate that doesn't fail. > - add the primary device on the target VM, done in runstate change > handler. > - fix error reporting (dgilbert) > - get rid of timer to add device after feature negotiation > > The general idea is that we have a pair of devices, a vfio-pci and a > virtio-net device. Before migration the vfio device is unplugged and data > flows to the virtio-net device, on the target side another vfio-pci device > is plugged in to take over the data-path. In the guest the net_failover > module will pair net devices with the same MAC address. > > * Patch 1 adds the infrastructure to hide the device for the qbus and qdev APIs > > * Patch 2 In the second patch the virtio-net uses the API to defer adding the vfio > device until the VIRTIO_NET_F_STANDBY feature is acked. It also > implements the migration handler to unplug the device from the guest and > re-plug in case of migration failure > > * Patch 3 and 4 make sure that we can unplug the vfio-device before > migration starts > > * Patch 5 and 6 add new qmp events, one sends the device id of a device > that was just requested to be unplugged from the guest and another one > to let libvirt know if VIRTIO_NET_F_STANDBY was negotiated > > * Patch 7 adds a new migration state that is entered while we wait for > devices to be unplugged by guest OS > > * Patch 8 sets a new flag for PCIDevice 'partially_hotplugged' which we > use to skip the unrealize code path when doing a unplug of the primary > device > > * Patch 9 sets the pending_deleted_event before triggering the guest > unplug request > > Previous discussion: > RFC v1 https://patchwork.ozlabs.org/cover/989098/ > RFC v2 https://www.mail-archive.com/qemu-devel@nongnu.org/msg606906.html > v1: https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg03968.html > > To summarize concerns/feedback from previous discussion: > 1.- guest OS can reject or worse _delay_ unplug by any amount of time. > Migration might get stuck for unpredictable time with unclear reason. > This approach combines two tricky things, hot/unplug and migration. > -> We need to let libvirt know what's happening. Add new qmp events > and a new migration state. When a primary device is (partially) > unplugged (only from guest) we send a qmp event with the device id. When > it is unplugged from the guest the DEVICE_DELETED event is sent. > Migration will enter the wait-unplug state while waiting for the guest > os to unplug all primary devices and then move on with migration. > 2. PCI devices are a precious ressource. The primary device should never > be added to QEMU if it won't be used by guest instead of hiding it in > QEMU. > -> We only hotplug the device when the standby feature bit was > negotiated. We save the device cmdline options until we need it for > qdev_device_add() > Hiding a device can be a useful concept to model. For example a > pci device in a powered-off slot could be marked as hidden until the slot is > powered on (mst). > 3. Management layer software should handle this. Open Stack already has > components/code to handle unplug/replug VFIO devices and metadata to > provide to the guest for detecting which devices should be paired. > -> An approach that includes all software from firmware to > higher-level management software wasn't tried in the last years. This is > an attempt to keep it simple and contained in QEMU as much as possible. > One of the problems that stopped management software and libvirt from > implementing this idea is that it can't be sure that it's possible to > re-plug the primary device. By not freeing the devices resources in QEMU > and only asking the guest OS to unplug it is possible to re-plug the > device in case of a migration failure. > 4. Hotplugging a device and then making it part of a failover setup is > not possible > -> addressed by extending qdev hotplug functions to check for hidden > attribute, so e.g. device_add can be used to plug a device. > > > I have tested this with a mlx5 NIC and was able to migrate the VM with > above mentioned workarounds for open problems. > > Command line example: > > qemu-system-x86_64 -enable-kvm -m 3072 -smp 3 \ > -machine q35,kernel-irqchip=split -cpu host \ > -k fr \ > -serial stdio \ > -net none \ > -qmp unix:/tmp/qmp.socket,server,nowait \ > -monitor telnet:127.0.0.1:5555,server,nowait \ > -device pcie-root-port,id=root0,multifunction=on,chassis=0,addr=0xa \ > -device pcie-root-port,id=root1,bus=pcie.0,chassis=1 \ > -device pcie-root-port,id=root2,bus=pcie.0,chassis=2 \ > -netdev tap,script=/root/bin/bridge.sh,downscript=no,id=hostnet1,vhost=on \ > -device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:6f:55:cc,bus=root2,failover=on \ > -device vfio-pci,host=5e:00.2,id=hostdev0,bus=root1,standby=net1 \ > /root/rhel-guest-image-8.0-1781.x86_64.qcow2 > > I'm grateful for any remarks or ideas! > > Thanks! > > Changes from RFCv2 to v1: > - work around circular dependency of commandline options. Just add > failover=on to the virtio-net standby options and reference it from > primary (vfio-pci) device with standby=<id> > - add patch 3/4 to allow migration of vfio-pci device when it is part of a > failover pair, still disallow for all other devices > - add patch 4/4 to allow unplug of device during migrationm, make an > exception for failover primary devices. I'd like feedback on how to > solve this more elegant. I added a boolean to DeviceState, have it > default to false for all devices except for primary devices. > - not tested yet with surprise removal > - I don't expect this to go in as it is, still needs more testing but > I'd like to get feedback on above mentioned changes. > > > > Jens Freimann (9): > qdev/qbus: Add hidden device support > net/virtio: add failover support > vfio: unplug failover primary device before migration > migration: allow unplug during migration for failover devices > qapi: add unplug primary event > qapi: Add failover negotiated event > migration: Add new migration state wait-unplug > pci: mark devices partially unplugged > pci: mark device having guest unplug request pending > > hw/core/qdev.c | 20 ++++ > hw/net/virtio-net.c | 180 +++++++++++++++++++++++++++++++++ > hw/pci/pci.c | 2 + > hw/pci/pcie.c | 6 ++ > hw/vfio/pci.c | 25 ++++- > hw/vfio/pci.h | 2 + > include/hw/pci/pci.h | 1 + > include/hw/qdev-core.h | 9 ++ > include/hw/virtio/virtio-net.h | 13 +++ > include/hw/virtio/virtio.h | 1 + > include/migration/vmstate.h | 2 + > migration/migration.c | 14 +++ > migration/savevm.c | 18 ++++ > migration/savevm.h | 1 + > qapi/migration.json | 24 ++++- > qapi/net.json | 16 +++ > qdev-monitor.c | 43 +++++++- > vl.c | 6 +- > 18 files changed, 375 insertions(+), 8 deletions(-) > > -- > 2.21.0