ics_set_kvm_state_one() is called either during reset, in which case
both 'saved priority' and 'current priority' are equal to 0xff, or
during migration. In the latter case, 'saved priority' may differ
from 'current priority' only if the interrupt had been masked with
the ibm,int-off RTAS call. Instead of aborting QEMU, print out an
error and exit.
Based-on: <156217454083.559957.7359208229523652842.stgit@bahia.lan>
Signed-off-by: Greg Kurz <groug@kaod.org>
---
This isn't a bugfix, hence targetting 4.2, but it depends on an actual
fix for 4.1, as mentionned in the Based-on tag.
---
hw/intc/xics_kvm.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c
index 2df1f3e92c7e..f8758b928250 100644
--- a/hw/intc/xics_kvm.c
+++ b/hw/intc/xics_kvm.c
@@ -255,8 +255,21 @@ int ics_set_kvm_state_one(ICSState *ics, int srcno, Error **errp)
state = irq->server;
state |= (uint64_t)(irq->saved_priority & KVM_XICS_PRIORITY_MASK)
<< KVM_XICS_PRIORITY_SHIFT;
- if (irq->priority != irq->saved_priority) {
- assert(irq->priority == 0xff);
+
+ /*
+ * An interrupt can be masked either because the ICS is resetting, in
+ * which case we expect 'current priority' and 'saved priority' to be
+ * equal to 0xff, or because the guest has called the ibm,int-off RTAS
+ * call, in which case we we have recorded the priority the interrupt
+ * had before it was masked in 'saved priority'. If the interrupt isn't
+ * masked, 'saved priority' and 'current priority' are equal (see
+ * ics_get_kvm_state()). Make sure we restore a sane state, otherwise
+ * fail migration.
+ */
+ if (irq->priority != irq->saved_priority && irq->priority != 0xff) {
+ error_setg(errp, "Corrupted state detected for interrupt source %d",
+ srcno);
+ return -EINVAL;
}
if (irq->priority == 0xff) {
Patchew URL: https://patchew.org/QEMU/156217621200.562209.8968691631915806468.stgit@bahia.lan/ 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 ==7821==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" ==7869==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-coroutine /basic/no-dangling-access PASS 2 test-coroutine /basic/lifecycle ==7869==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe6070b000; bottom 0x7f91332f8000; size: 0x006d2d413000 (468910682112) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 3 test-coroutine /basic/yield --- 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" PASS 14 test-aio /aio/timer/schedule ==7884==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 15 test-aio /aio/coroutine/queue-chaining PASS 16 test-aio /aio-gsource/flush PASS 17 test-aio /aio-gsource/bh/schedule --- 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 ==7893==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 ==7899==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! 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" PASS 2 ide-test /x86_64/ide/flush ==7907==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 ==7920==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 ==7926==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 ==7937==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 ==7948==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 ==7954==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 PASS 7 ide-test /x86_64/ide/bmdma/long_prdt ==7965==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==7965==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc45732000; bottom 0x7fbd9e5fe000; size: 0x003ea7134000 (269091028992) 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 9 ide-test /x86_64/ide/flush/nodev 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" ==7981==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 6 test-throttle /throttle/detach_attach PASS 7 test-throttle /throttle/config_functions PASS 8 test-throttle /throttle/accounting ==7987==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 test-throttle /throttle/groups PASS 10 test-throttle /throttle/config/enabled PASS 11 test-throttle /throttle/config/conflicting --- 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" PASS 10 ide-test /x86_64/ide/flush/empty_drive ==7993==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 ==7995==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 PASS 5 test-thread-pool /thread-pool/cancel ==8067==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 ==8073==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 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 2 test-hbitmap /hbitmap/size/0 PASS 3 test-hbitmap /hbitmap/size/unaligned PASS 4 test-hbitmap /hbitmap/iter/empty ==8079==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 test-hbitmap /hbitmap/iter/partial PASS 6 test-hbitmap /hbitmap/iter/granularity PASS 7 test-hbitmap /hbitmap/iter/iter_and_reset --- PASS 15 test-hbitmap /hbitmap/set/overlap PASS 16 test-hbitmap /hbitmap/reset/empty PASS 17 test-hbitmap /hbitmap/reset/general ==8090==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 18 test-hbitmap /hbitmap/reset/all PASS 19 test-hbitmap /hbitmap/truncate/nop PASS 20 test-hbitmap /hbitmap/truncate/grow/negligible --- PASS 30 test-hbitmap /hbitmap/meta/zero PASS 15 ide-test /x86_64/ide/cdrom/dma MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/ahci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ahci-test" ==8104==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 ==8110==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 ==8116==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 ==8122==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 PASS 31 test-hbitmap /hbitmap/meta/one PASS 32 test-hbitmap /hbitmap/meta/byte PASS 33 test-hbitmap /hbitmap/meta/word ==8128==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 ahci-test /x86_64/ahci/hba_enable PASS 34 test-hbitmap /hbitmap/meta/sector PASS 35 test-hbitmap /hbitmap/serialize/align ==8134==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 ahci-test /x86_64/ahci/identify ==8140==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 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" PASS 7 ahci-test /x86_64/ahci/max ==8148==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 26 test-bdrv-drain /bdrv-drain/blockjob/error/drain_subtree PASS 27 test-bdrv-drain /bdrv-drain/blockjob/iothread/drain_all PASS 28 test-bdrv-drain /bdrv-drain/blockjob/iothread/drain ==8150==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 29 test-bdrv-drain /bdrv-drain/blockjob/iothread/drain_subtree PASS 30 test-bdrv-drain /bdrv-drain/blockjob/iothread/error/drain_all PASS 31 test-bdrv-drain /bdrv-drain/blockjob/iothread/error/drain --- PASS 38 test-bdrv-drain /bdrv-drain/detach/driver_cb PASS 39 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" ==8193==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 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" PASS 8 ahci-test /x86_64/ahci/reset ==8199==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 7 test-blockjob /blockjob/cancel/pending PASS 8 test-blockjob /blockjob/cancel/concluded 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" ==8205==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 4 test-blockjob-txn /pair/success PASS 5 test-blockjob-txn /pair/failure PASS 6 test-blockjob-txn /pair/cancel ==8201==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 test-blockjob-txn /pair/fail-cancel-race 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" ==8201==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe68dcc000; bottom 0x7f9cfadfe000; size: 0x00616dfce000 (418457116672) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 ==8214==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 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero ==8220==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 15 test-block-iothread /propagate/diamond PASS 16 test-block-iothread /propagate/mirror 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" ==8222==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8242==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 ==8222==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffeee2e5000; bottom 0x7f6a7a1fe000; size: 0x0094740e7000 (637602263040) 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-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 ==8258==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8258==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe7d9c1000; bottom 0x7fc4363fe000; size: 0x003a475c3000 (250305327104) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 11 ahci-test /x86_64/ahci/io/pio/lba28/simple/high PASS 6 test-xbzrle /xbzrle/encode_decode MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-vmstate -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-vmstate" ==8264==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-vmstate /vmstate/tmp_struct PASS 2 test-vmstate /vmstate/simple/primitive PASS 3 test-vmstate /vmstate/simple/array --- PASS 16 test-vmstate /vmstate/qtailq/save/saveq PASS 17 test-vmstate /vmstate/qtailq/load/loadq MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-cutils -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-cutils" ==8264==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd9704b000; bottom 0x7f53741fe000; size: 0x00aa22e4d000 (730729861120) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 test-cutils /cutils/parse_uint/null --- PASS 9 test-int128 /int128/int128_gt 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" ==8288==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8288==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff0a11c000; bottom 0x7f98659fe000; size: 0x0066a471e000 (440845590528) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low PASS 1 rcutorture /rcu/torture/1reader ==8309==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8309==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdd7de1000; bottom 0x7fd1c6bfe000; size: 0x002c111e3000 (189265752064) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high 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" ==8331==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8331==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff3986a000; bottom 0x7f7f04b24000; size: 0x008034d46000 (550642147328) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 test-rcu-list /rcu/qlist/single-threaded PASS 15 ahci-test /x86_64/ahci/io/pio/lba28/long/zero ==8350==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 test-rcu-list /rcu/qlist/short-few ==8350==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff54428000; bottom 0x7f1a57924000; size: 0x00e4fcb04000 (983491952640) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low ==8377==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8377==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcfcd61000; bottom 0x7f7ab8d24000; size: 0x00824403d000 (559486849024) 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 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" PASS 17 ahci-test /x86_64/ahci/io/pio/lba28/long/high ==8390==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-rcu-simpleq /rcu/qsimpleq/single-threaded PASS 18 ahci-test /x86_64/ahci/io/pio/lba28/short/zero ==8402==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 ==8429==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 ==8435==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 test-rcu-simpleq /rcu/qsimpleq/long-many ==8435==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcd8930000; bottom 0x7f492e9fe000; size: 0x00b3a9f32000 (771650428928) 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-rcu-tailq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-tailq" PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero ==8448==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-rcu-tailq /rcu/qtailq/single-threaded ==8448==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe3c42e000; bottom 0x7f100f3fe000; size: 0x00ee2d030000 (1022957387776) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 22 ahci-test /x86_64/ahci/io/pio/lba48/simple/low ==8460==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 test-rcu-tailq /rcu/qtailq/short-few ==8460==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdd597b000; bottom 0x7f1da53fe000; size: 0x00e03057d000 (962883735552) 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 ==8487==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8487==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffc19fb000; bottom 0x7f7b675fe000; size: 0x00845a3fd000 (568449814528) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero PASS 3 test-rcu-tailq /rcu/qtailq/long-many 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" ==8493==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-qdist /qdist/none PASS 2 test-qdist /qdist/pr PASS 3 test-qdist /qdist/single/empty --- PASS 7 test-qdist /qdist/binning/expand 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" ==8493==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff99ded000; bottom 0x7f7aaadfe000; size: 0x0084eefef000 (570945368064) 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 ==8508==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8508==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff2142d000; bottom 0x7fb6dcbfe000; size: 0x00484482f000 (310387077120) 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 ==8514==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8514==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcd07a0000; bottom 0x7f0a929fe000; size: 0x00f23dda2000 (1040419790848) 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 ==8520==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8520==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffd2707000; bottom 0x7fd222324000; size: 0x002db03e3000 (196230393856) 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 ==8526==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8526==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff6988c000; bottom 0x7f9850b24000; size: 0x006718d68000 (442798342144) 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 ==8532==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 ==8538==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 ==8544==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 ==8550==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 ==8556==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 34 ahci-test /x86_64/ahci/io/dma/lba28/retry ==8562==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 ==8568==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 36 ahci-test /x86_64/ahci/io/dma/lba28/simple/low 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" ==8574==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 37 ahci-test /x86_64/ahci/io/dma/lba28/simple/high PASS 1 test-qht-par /qht/parallel/2threads-0%updates-1s ==8590==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 38 ahci-test /x86_64/ahci/io/dma/lba28/double/zero 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" ==8603==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" ==8630==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-write-threshold /write-threshold/not-trigger PASS 5 test-write-threshold /write-threshold/trigger MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-crypto-hash -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-hash" ==8655==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-crypto-hash /crypto/hash/iov PASS 2 test-crypto-hash /crypto/hash/alloc PASS 3 test-crypto-hash /crypto/hash/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 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero ==8686==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectserver PASS 2 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectclient PASS 3 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca1 PASS 4 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca2 PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low ==8693==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! 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 PASS 43 ahci-test /x86_64/ahci/io/dma/lba28/long/high PASS 9 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver1 ==8699==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero PASS 10 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver2 PASS 11 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver3 ==8705==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 12 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver4 ==8711==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 13 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver5 PASS 14 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver6 PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high --- PASS 32 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive1 PASS 33 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive2 PASS 34 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive3 ==8717==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 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 ==8728==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low ==8734==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 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high ==8740==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 test-crypto-tlssession /qcrypto/tlssession/altname1 PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero PASS 5 test-crypto-tlssession /qcrypto/tlssession/altname2 PASS 6 test-crypto-tlssession /qcrypto/tlssession/altname3 ==8746==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 test-crypto-tlssession /qcrypto/tlssession/altname4 PASS 8 test-crypto-tlssession /qcrypto/tlssession/altname5 PASS 9 test-crypto-tlssession /qcrypto/tlssession/altname6 PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low ==8752==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 10 test-crypto-tlssession /qcrypto/tlssession/wildcard1 PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high ==8758==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 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero ==8764==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low ==8770==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 13 test-crypto-tlssession /qcrypto/tlssession/wildcard4 PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high PASS 14 test-crypto-tlssession /qcrypto/tlssession/wildcard5 PASS 15 test-crypto-tlssession /qcrypto/tlssession/wildcard6 ==8776==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! 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" PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero ==8788==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 15 test-qga /qga/invalid-cmd PASS 16 test-qga /qga/invalid-args PASS 17 test-qga /qga/fsfreeze-status ==8794==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 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 ==8802==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 59 ahci-test /x86_64/ahci/io/ncq/simple 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 25 test-qga /qga/guest-get-users MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-timed-average -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-timed-average" ==8815==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! 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 --- PASS 4 test-authz-listfile /auth/list/explicit/deny PASS 5 test-authz-listfile /auth/list/explicit/allow MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-io-task -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-task" ==8847==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-io-task /crypto/task/complete PASS 2 test-io-task /crypto/task/datafree PASS 3 test-io-task /crypto/task/failure --- PASS 4 test-io-channel-file /io/channel/pipe/sync 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" ==8917==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 PASS 62 ahci-test /x86_64/ahci/flush/retry 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 3 test-io-channel-command /io/channel/command/echo/sync PASS 4 test-io-channel-command /io/channel/command/echo/async 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" ==8932==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! 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" PASS 1 test-base64 /util/base64/good --- PASS 17 test-crypto-pbkdf /crypto/pbkdf/nonrfc/sha384/iter1200 PASS 18 test-crypto-pbkdf /crypto/pbkdf/nonrfc/ripemd160/iter1200 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-crypto-ivgen -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-ivgen" ==8951==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-crypto-ivgen /crypto/ivgen/plain/1 PASS 2 test-crypto-ivgen /crypto/ivgen/plain/1f2e3d4c PASS 3 test-crypto-ivgen /crypto/ivgen/plain/1f2e3d4c5b6a7988 --- 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" ==8989==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 63 ahci-test /x86_64/ahci/flush/migrate PASS 2 test-replication /replication/primary/write ==8994==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 ==8999==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 64 ahci-test /x86_64/ahci/migrate/sanity ==9008==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9013==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==8989==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdcfe03000; bottom 0x7f11f97fc000; size: 0x00ebd6607000 (1012913958912) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 9 test-replication /replication/secondary/start PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple ==9040==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9045==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 66 ahci-test /x86_64/ahci/migrate/dma/halted ==9054==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 ==9059==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! 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 67 ahci-test /x86_64/ahci/migrate/ncq/simple ==9073==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9078==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted ==9087==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 ==9092==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 ==9098==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 ==9104==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 ==9110==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9110==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdb6875000; bottom 0x7f578fb8a000; size: 0x00a626ceb000 (713615650816) 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 ==9116==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 ==9130==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 ==9136==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 ==9142==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 ==9148==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 ==9154==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 ==9160==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 ==9166==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 ==9172==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 ==9177==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 test-bufferiszero /cutils/bufferiszero --- 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 ==9262==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 bios-tables-test /x86_64/acpi/piix4 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 ==9268==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 bios-tables-test /x86_64/acpi/q35 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 ==9274==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 bios-tables-test /x86_64/acpi/piix4/bridge 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 ==9280==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 bios-tables-test /x86_64/acpi/piix4/ipmi 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 ==9286==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 bios-tables-test /x86_64/acpi/piix4/cpuhp 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 ==9293==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 bios-tables-test /x86_64/acpi/piix4/memhp 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 ==9299==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 bios-tables-test /x86_64/acpi/piix4/numamem 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 ==9305==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 bios-tables-test /x86_64/acpi/piix4/dimmpxm 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 ==9314==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 bios-tables-test /x86_64/acpi/q35/bridge 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 ==9320==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 10 bios-tables-test /x86_64/acpi/q35/mmio64 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 ==9326==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 11 bios-tables-test /x86_64/acpi/q35/ipmi 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 ==9332==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 12 bios-tables-test /x86_64/acpi/q35/cpuhp 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 ==9339==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 13 bios-tables-test /x86_64/acpi/q35/memhp 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 ==9345==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 14 bios-tables-test /x86_64/acpi/q35/numamem 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 ==9351==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 15 bios-tables-test /x86_64/acpi/q35/dimmpxm 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-serial-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="boot-serial-test" PASS 1 boot-serial-test /x86_64/boot-serial/isapc --- 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 ==9435==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 ==9523==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 ==9718==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 ==9727==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 ==9833==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 ==9839==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 ==9845==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 ==9950==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 ==9955==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 ==9963==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 ==9968==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 ==9998==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 ==10003==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 ==10012==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 ==10017==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 ==10026==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 ==10031==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 ==10360==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 5 device-introspect-test /x86_64/device/introspect/abstract-interfaces ================================================================= ==10608==ERROR: LeakSanitizer: detected memory leaks Direct leak of 32 byte(s) in 1 object(s) allocated from: #0 0x55f0069a3b6e in calloc (/tmp/qemu-test/build/x86_64-softmmu/qemu-system-x86_64+0x19f9b6e) --- SUMMARY: AddressSanitizer: 64 byte(s) leaked in 2 allocation(s). /tmp/qemu-test/src/tests/libqtest.c:137: kill_qemu() tried to terminate QEMU process but encountered exit status 1 ERROR - too few tests run (expected 6, got 5) make: *** [/tmp/qemu-test/src/tests/Makefile.include:896: 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/156217621200.562209.8968691631915806468.stgit@bahia.lan/testing.asan/?type=message. --- Email generated automatically by Patchew [https://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
On Wed, Jul 03, 2019 at 07:50:12PM +0200, Greg Kurz wrote: > ics_set_kvm_state_one() is called either during reset, in which case > both 'saved priority' and 'current priority' are equal to 0xff, or > during migration. In the latter case, 'saved priority' may differ > from 'current priority' only if the interrupt had been masked with > the ibm,int-off RTAS call. Instead of aborting QEMU, print out an > error and exit. What's the rationale for this? Doesn't hitting this indicate an error in the qemu code, for which an abort is the usual response? > > Based-on: <156217454083.559957.7359208229523652842.stgit@bahia.lan> > Signed-off-by: Greg Kurz <groug@kaod.org> > --- > > This isn't a bugfix, hence targetting 4.2, but it depends on an actual > fix for 4.1, as mentionned in the Based-on tag. > --- > hw/intc/xics_kvm.c | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c > index 2df1f3e92c7e..f8758b928250 100644 > --- a/hw/intc/xics_kvm.c > +++ b/hw/intc/xics_kvm.c > @@ -255,8 +255,21 @@ int ics_set_kvm_state_one(ICSState *ics, int srcno, Error **errp) > state = irq->server; > state |= (uint64_t)(irq->saved_priority & KVM_XICS_PRIORITY_MASK) > << KVM_XICS_PRIORITY_SHIFT; > - if (irq->priority != irq->saved_priority) { > - assert(irq->priority == 0xff); > + > + /* > + * An interrupt can be masked either because the ICS is resetting, in > + * which case we expect 'current priority' and 'saved priority' to be > + * equal to 0xff, or because the guest has called the ibm,int-off RTAS > + * call, in which case we we have recorded the priority the interrupt > + * had before it was masked in 'saved priority'. If the interrupt isn't > + * masked, 'saved priority' and 'current priority' are equal (see > + * ics_get_kvm_state()). Make sure we restore a sane state, otherwise > + * fail migration. > + */ > + if (irq->priority != irq->saved_priority && irq->priority != 0xff) { > + error_setg(errp, "Corrupted state detected for interrupt source %d", > + srcno); > + return -EINVAL; > } > > if (irq->priority == 0xff) { > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
On Thu, 4 Jul 2019 10:23:57 +1000 David Gibson <david@gibson.dropbear.id.au> wrote: > On Wed, Jul 03, 2019 at 07:50:12PM +0200, Greg Kurz wrote: > > ics_set_kvm_state_one() is called either during reset, in which case > > both 'saved priority' and 'current priority' are equal to 0xff, or > > during migration. In the latter case, 'saved priority' may differ > > from 'current priority' only if the interrupt had been masked with > > the ibm,int-off RTAS call. Instead of aborting QEMU, print out an > > error and exit. > > What's the rationale for this? Doesn't hitting this indicate an error > in the qemu code, for which an abort is the usual response? > This error can be hit by the destination during migration if the incoming stream is corrupted. Aborting in this case would mislead the user into suspecting a bug in the destination QEMU, which isn't the case. Appart from that, when the in-kernel XICS is in use, only two functions manipulate the ICS state: ics_set_kvm_state_one() and ics_get_kvm_state(). The code is trivial enough that I don't see a great value in the assert in the first place... BTW, it comes from the commit: commit 11ad93f68195f68cc94d988f2aa50b4d190ee52a Author: David Gibson <david@gibson.dropbear.id.au> Date: Thu Sep 26 16:18:44 2013 +1000 xics-kvm: Support for in-kernel XICS interrupt controller Maybe you remember some context that justified the assert at the time ? > > > > Based-on: <156217454083.559957.7359208229523652842.stgit@bahia.lan> > > Signed-off-by: Greg Kurz <groug@kaod.org> > > --- > > > > This isn't a bugfix, hence targetting 4.2, but it depends on an actual > > fix for 4.1, as mentionned in the Based-on tag. > > --- > > hw/intc/xics_kvm.c | 17 +++++++++++++++-- > > 1 file changed, 15 insertions(+), 2 deletions(-) > > > > diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c > > index 2df1f3e92c7e..f8758b928250 100644 > > --- a/hw/intc/xics_kvm.c > > +++ b/hw/intc/xics_kvm.c > > @@ -255,8 +255,21 @@ int ics_set_kvm_state_one(ICSState *ics, int srcno, Error **errp) > > state = irq->server; > > state |= (uint64_t)(irq->saved_priority & KVM_XICS_PRIORITY_MASK) > > << KVM_XICS_PRIORITY_SHIFT; > > - if (irq->priority != irq->saved_priority) { > > - assert(irq->priority == 0xff); > > + > > + /* > > + * An interrupt can be masked either because the ICS is resetting, in > > + * which case we expect 'current priority' and 'saved priority' to be > > + * equal to 0xff, or because the guest has called the ibm,int-off RTAS > > + * call, in which case we we have recorded the priority the interrupt > > + * had before it was masked in 'saved priority'. If the interrupt isn't > > + * masked, 'saved priority' and 'current priority' are equal (see > > + * ics_get_kvm_state()). Make sure we restore a sane state, otherwise > > + * fail migration. > > + */ > > + if (irq->priority != irq->saved_priority && irq->priority != 0xff) { > > + error_setg(errp, "Corrupted state detected for interrupt source %d", > > + srcno); > > + return -EINVAL; > > } > > > > if (irq->priority == 0xff) { > > >
On Thu, Jul 04, 2019 at 10:12:04AM +0200, Greg Kurz wrote: > On Thu, 4 Jul 2019 10:23:57 +1000 > David Gibson <david@gibson.dropbear.id.au> wrote: > > > On Wed, Jul 03, 2019 at 07:50:12PM +0200, Greg Kurz wrote: > > > ics_set_kvm_state_one() is called either during reset, in which case > > > both 'saved priority' and 'current priority' are equal to 0xff, or > > > during migration. In the latter case, 'saved priority' may differ > > > from 'current priority' only if the interrupt had been masked with > > > the ibm,int-off RTAS call. Instead of aborting QEMU, print out an > > > error and exit. > > > > What's the rationale for this? Doesn't hitting this indicate an error > > in the qemu code, for which an abort is the usual response? > > > > This error can be hit by the destination during migration if the > incoming stream is corrupted. Aborting in this case would mislead > the user into suspecting a bug in the destination QEMU, which isn't > the case. Rather than a bug in the source qemu? I guess so. > Appart from that, when the in-kernel XICS is in use, only two functions > manipulate the ICS state: ics_set_kvm_state_one() and ics_get_kvm_state(). > The code is trivial enough that I don't see a great value in the assert > in the first place... BTW, it comes from the commit: > > commit 11ad93f68195f68cc94d988f2aa50b4d190ee52a > Author: David Gibson <david@gibson.dropbear.id.au> > Date: Thu Sep 26 16:18:44 2013 +1000 > > xics-kvm: Support for in-kernel XICS interrupt controller > > Maybe you remember some context that justified the assert at the > time ? It was probably mostly about documenting the invariants that are supposed to apply here. > > > > > > > Based-on: <156217454083.559957.7359208229523652842.stgit@bahia.lan> > > > Signed-off-by: Greg Kurz <groug@kaod.org> > > > --- > > > > > > This isn't a bugfix, hence targetting 4.2, but it depends on an actual > > > fix for 4.1, as mentionned in the Based-on tag. > > > --- > > > hw/intc/xics_kvm.c | 17 +++++++++++++++-- > > > 1 file changed, 15 insertions(+), 2 deletions(-) > > > > > > diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c > > > index 2df1f3e92c7e..f8758b928250 100644 > > > --- a/hw/intc/xics_kvm.c > > > +++ b/hw/intc/xics_kvm.c > > > @@ -255,8 +255,21 @@ int ics_set_kvm_state_one(ICSState *ics, int srcno, Error **errp) > > > state = irq->server; > > > state |= (uint64_t)(irq->saved_priority & KVM_XICS_PRIORITY_MASK) > > > << KVM_XICS_PRIORITY_SHIFT; > > > - if (irq->priority != irq->saved_priority) { > > > - assert(irq->priority == 0xff); > > > + > > > + /* > > > + * An interrupt can be masked either because the ICS is resetting, in > > > + * which case we expect 'current priority' and 'saved priority' to be > > > + * equal to 0xff, or because the guest has called the ibm,int-off RTAS > > > + * call, in which case we we have recorded the priority the interrupt > > > + * had before it was masked in 'saved priority'. If the interrupt isn't > > > + * masked, 'saved priority' and 'current priority' are equal (see > > > + * ics_get_kvm_state()). Make sure we restore a sane state, otherwise > > > + * fail migration. > > > + */ > > > + if (irq->priority != irq->saved_priority && irq->priority != 0xff) { > > > + error_setg(errp, "Corrupted state detected for interrupt source %d", > > > + srcno); > > > + return -EINVAL; > > > } > > > > > > if (irq->priority == 0xff) { > > > > > > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
On Fri, 5 Jul 2019 14:56:23 +1000 David Gibson <david@gibson.dropbear.id.au> wrote: > On Thu, Jul 04, 2019 at 10:12:04AM +0200, Greg Kurz wrote: > > On Thu, 4 Jul 2019 10:23:57 +1000 > > David Gibson <david@gibson.dropbear.id.au> wrote: > > > > > On Wed, Jul 03, 2019 at 07:50:12PM +0200, Greg Kurz wrote: > > > > ics_set_kvm_state_one() is called either during reset, in which case > > > > both 'saved priority' and 'current priority' are equal to 0xff, or > > > > during migration. In the latter case, 'saved priority' may differ > > > > from 'current priority' only if the interrupt had been masked with > > > > the ibm,int-off RTAS call. Instead of aborting QEMU, print out an > > > > error and exit. > > > > > > What's the rationale for this? Doesn't hitting this indicate an error > > > in the qemu code, for which an abort is the usual response? > > > > > > > This error can be hit by the destination during migration if the > > incoming stream is corrupted. Aborting in this case would mislead > > the user into suspecting a bug in the destination QEMU, which isn't > > the case. > > Rather than a bug in the source qemu? I guess so. > A bug in the source QEMU for live migration or a corrupted snapshot for load_vm, which could result from a qcow2 file corruption for example. > > Appart from that, when the in-kernel XICS is in use, only two functions > > manipulate the ICS state: ics_set_kvm_state_one() and ics_get_kvm_state(). > > The code is trivial enough that I don't see a great value in the assert > > in the first place... BTW, it comes from the commit: > > > > commit 11ad93f68195f68cc94d988f2aa50b4d190ee52a > > Author: David Gibson <david@gibson.dropbear.id.au> > > Date: Thu Sep 26 16:18:44 2013 +1000 > > > > xics-kvm: Support for in-kernel XICS interrupt controller > > > > Maybe you remember some context that justified the assert at the > > time ? > > It was probably mostly about documenting the invariants that are > supposed to apply here. > Indeed this error on the reset path is very likely a bug in QEMU, and the assert() makes sense in this case. I'm convinced by the documenting argument. Please forget this patch :) > > > > > > > > > > Based-on: <156217454083.559957.7359208229523652842.stgit@bahia.lan> > > > > Signed-off-by: Greg Kurz <groug@kaod.org> > > > > --- > > > > > > > > This isn't a bugfix, hence targetting 4.2, but it depends on an actual > > > > fix for 4.1, as mentionned in the Based-on tag. > > > > --- > > > > hw/intc/xics_kvm.c | 17 +++++++++++++++-- > > > > 1 file changed, 15 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c > > > > index 2df1f3e92c7e..f8758b928250 100644 > > > > --- a/hw/intc/xics_kvm.c > > > > +++ b/hw/intc/xics_kvm.c > > > > @@ -255,8 +255,21 @@ int ics_set_kvm_state_one(ICSState *ics, int srcno, Error **errp) > > > > state = irq->server; > > > > state |= (uint64_t)(irq->saved_priority & KVM_XICS_PRIORITY_MASK) > > > > << KVM_XICS_PRIORITY_SHIFT; > > > > - if (irq->priority != irq->saved_priority) { > > > > - assert(irq->priority == 0xff); > > > > + > > > > + /* > > > > + * An interrupt can be masked either because the ICS is resetting, in > > > > + * which case we expect 'current priority' and 'saved priority' to be > > > > + * equal to 0xff, or because the guest has called the ibm,int-off RTAS > > > > + * call, in which case we we have recorded the priority the interrupt > > > > + * had before it was masked in 'saved priority'. If the interrupt isn't > > > > + * masked, 'saved priority' and 'current priority' are equal (see > > > > + * ics_get_kvm_state()). Make sure we restore a sane state, otherwise > > > > + * fail migration. > > > > + */ > > > > + if (irq->priority != irq->saved_priority && irq->priority != 0xff) { > > > > + error_setg(errp, "Corrupted state detected for interrupt source %d", > > > > + srcno); > > > > + return -EINVAL; > > > > } > > > > > > > > if (irq->priority == 0xff) { > > > > > > > > > >
© 2016 - 2024 Red Hat, Inc.