qemu/tests
Alex Bennée 5b4f72f5e8 tests/qtest: properly initialise the vring used idx
Eric noticed while attempting to enable the vhost-user-blk-test for
Aarch64 that that things didn't work unless he put in a dummy
guest_malloc() at the start of the test. Without it
qvirtio_wait_used_elem() would assert when it reads a junk value for
idx resulting in:

  qvirtqueue_get_buf: idx:2401 last_idx:0
  qvirtqueue_get_buf: 0x7ffcb6d3fe74, (nil)
  qvirtio_wait_used_elem: 3000000/0
  ERROR:../../tests/qtest/libqos/virtio.c:226:qvirtio_wait_used_elem: assertion failed (got_desc_idx == desc_idx): (50331648 == 0)
  Bail out! ERROR:../../tests/qtest/libqos/virtio.c:226:qvirtio_wait_used_elem: assertion failed (got_desc_idx == desc_idx): (50331648 == 0)

What was actually happening is the guest_malloc() effectively pushed
the allocation of the vring into the next page which just happened to
have clear memory. After much tedious tracing of the code I could see
that qvring_init() does attempt initialise a bunch of the vring
structures but skips the vring->used.idx value. It is probably not
wise to assume guest memory is zeroed anyway. Once the ring is
properly initialised the hack is no longer needed to get things
working.

Thanks-to: John Snow <jsnow@redhat.com> for helping debug
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20220406173356.1891500-1-alex.bennee@linaro.org>
Tested-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2022-04-20 09:01:21 +02:00
..
avocado tests/avocado: start PhoneServer upfront 2022-03-16 08:43:10 +01:00
bench osdep: Move memalign-related functions to their own header 2022-03-07 13:16:49 +00:00
data tests/acpi: update expected data files 2022-03-15 09:31:44 +01:00
decode decodetree: Extend argument set syntax to allow types 2021-05-01 11:45:35 -07:00
docker tests: Drop perl-Test-Harness from the CI containers / VMs 2022-04-20 08:54:16 +02:00
fp Replace config-time define HOST_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
guest-debug chardev: do not use short form boolean options in non-QemuOpts character device descriptions 2021-02-25 15:41:53 +01:00
image-fuzzer image-fuzzer: Use OSerror.strerror instead of tuple subscript 2019-11-05 16:36:11 +01:00
include tests: add missing generated sources to testqapi 2020-10-17 10:45:50 -04:00
keys tests/vm: Add Haiku test based on their vagrant images 2020-11-17 09:45:24 +01:00
lcitool tests: Drop perl-Test-Harness from the CI containers / VMs 2022-04-20 08:54:16 +02:00
migration tests/migration: fix unix socket migration 2021-07-14 14:15:52 +01:00
multiboot Remove superfluous .gitignore files 2020-10-13 12:48:17 +02:00
perf/block/qcow2 tests/perf: Test lseek influence on qcow2 block-status 2019-06-04 15:20:41 +02:00
plugin tests/plugins: add instruction matching to libinsn.so 2022-02-09 12:08:42 +00:00
qapi-schema meson: drop sphinx_extn_depends 2021-11-08 12:27:23 +04:00
qemu-iotests iotests: Fix status checks 2022-03-29 16:30:55 +02:00
qtest tests/qtest: properly initialise the vring used idx 2022-04-20 09:01:21 +02:00
rocker tests: Avoid non-portable 'echo -ARG' 2017-07-11 17:45:00 +02:00
tcg Replace TARGET_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
tsan tests/docker: Added docker build support for TSan. 2020-06-16 14:49:05 +01:00
uefi-test-tools Remove superfluous .gitignore files 2020-10-13 12:48:17 +02:00
unit Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
vm tests: Drop perl-Test-Harness from the CI containers / VMs 2022-04-20 08:54:16 +02:00
vmstate-static-checker-data hw: Replace anti-social QOM type names 2021-03-19 15:18:43 +01:00
check-block.sh tests/qemu-iotests: Rework the checks and spots using GNU sed 2022-03-04 18:18:26 +01:00
dbus-vmstate-daemon.sh tests: add dbus-vmstate-test 2020-01-06 18:41:32 +04:00
Makefile.include tests/Makefile.include: Let "make clean" remove the TCG tests, too 2022-03-23 10:25:22 +00:00
meson.build meson: remove unneeded py3 2022-04-06 10:50:37 +02:00
requirements.txt acceptance tests: bump Avocado version to 88.1 2021-06-01 16:21:21 -04:00
test-qht-par.c clean-includes: run it once more 2016-06-16 18:39:03 +02:00
vhost-user-bridge.c Replace qemu_real_host_page variables with inlined functions 2022-04-06 10:50:38 +02:00