Message ID | 20220726192150.2435175-1-alex.bennee@linaro.org |
---|---|
Headers | show |
Series | virtio-gpio and various virtio cleanups | expand |
On Tue, Jul 26, 2022 at 08:21:29PM +0100, Alex Bennée wrote: > Hi, > > After much slogging through the vhost-user code I've gotten the > virtio-gpio device working again. The core change in pushing the > responsibility for VHOST_USER_F_PROTOCOL_FEATURES down to the > vhost-user layer (which knows it needs it). We still need to account > for that in virtio-gpio because the result of the negotiating protocol > features is the vrings start disabled so the stub needs to explicitly > enable them. I did consider pushing this behaviour explicitly into > vhost_dev_start but that would have required un-picking it from > vhost-net (which is the only other device which uses protocol features > AFAICT - but is a measure more complex in it's setup). > > As last time there are a whole series of clean-ups and doc tweaks. I > don't know if any are trivial enough to sneak into later RCs but it > shouldn't be a problem to wait until the tree re-opens. Right. Still I think some are fixes we should merge now. I am thinking patches 5, 7,8,9 ? 6 if it makes backporting much easier. WDYT? If you agree pls separate bugfixes in series I can apply. Thanks! > There is a remaining issue that a --enable-sanitizers build fails for > qos-test due to leaks. It shows up as a leak from: > > Direct leak of 240 byte(s) in 1 object(s) allocated from: > #0 0x7fc5a3f2a037 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154 > #1 0x7fc5a2e5cda0 in g_malloc0 ../../../glib/gmem.c:136 > #2 0x55ce773cc728 in virtio_device_realize ../../hw/virtio/virtio.c:3691 > #3 0x55ce7784ed7e in device_set_realized ../../hw/core/qdev.c:553 > #4 0x55ce77862d0c in property_set_bool ../../qom/object.c:2273 > > I'm not entirely sure what the allocation is because it gets inlined > in the virtio_device_realize call. Perhaps it's the QOM object itself > which is never gracefully torn down at the end of the test? > > However when I attempted to bisect I found master was broken as well. > For example in my arm/aarch64-softmmu build we see 5 failures: > > Summary of Failures: > > 3/48 qemu:qtest+qtest-aarch64 / qtest-aarch64/migration-test ERROR 96.15s killed by signal 6 SIGABRT > 9/48 qemu:qtest+qtest-aarch64 / qtest-aarch64/qos-test ERROR 32.50s killed by signal 6 SIGABRT > 11/48 qemu:qtest+qtest-arm / qtest-arm/qos-test ERROR 26.93s killed by signal 6 SIGABRT > 20/48 qemu:qtest+qtest-aarch64 / qtest-aarch64/device-introspect-test ERROR 5.17s killed by signal 6 SIGABRT > 45/48 qemu:qtest+qtest-arm / qtest-arm/device-introspect-test ERROR 4.97s killed by signal 6 SIGABRT > > Of which the qos-tests are the only new ones. I suspect something must > be preventing the other stuff being exercised in our CI system. > > Alex Bennée (19): > include/hw/virtio: more comment for VIRTIO_F_BAD_FEATURE > include/hw: document vhost_dev feature life-cycle > hw/virtio: fix some coding style issues > hw/virtio: log potentially buggy guest drivers > block/vhost-user-blk-server: don't expose > VHOST_USER_F_PROTOCOL_FEATURES > hw/virtio: incorporate backend features in features > hw/virtio: gracefully handle unset vhost_dev vdev > hw/virtio: handle un-configured shutdown in virtio-pci > hw/virtio: fix vhost_user_read tracepoint > hw/virtio: add some vhost-user trace events > tests/qtest: pass stdout/stderr down to subtests > tests/qtest: add a timeout for subprocess_run_one_test > tests/qtest: use qos_printf instead of g_test_message > tests/qtest: catch unhandled vhost-user messages > tests/qtest: plain g_assert for VHOST_USER_F_PROTOCOL_FEATURES > tests/qtest: add assert to catch bad features > tests/qtest: implement stub for VHOST_USER_GET_CONFIG > tests/qtest: add a get_features op to vhost-user-test > tests/qtest: enable tests for virtio-gpio > > Viresh Kumar (2): > hw/virtio: add boilerplate for vhost-user-gpio device > hw/virtio: add vhost-user-gpio-pci boilerplate > > include/hw/virtio/vhost-user-gpio.h | 35 +++ > include/hw/virtio/vhost.h | 3 + > include/hw/virtio/virtio.h | 7 +- > tests/qtest/libqos/virtio-gpio.h | 35 +++ > block/export/vhost-user-blk-server.c | 3 +- > hw/virtio/vhost-user-gpio-pci.c | 69 +++++ > hw/virtio/vhost-user-gpio.c | 414 +++++++++++++++++++++++++++ > hw/virtio/vhost-user.c | 20 +- > hw/virtio/vhost.c | 16 +- > hw/virtio/virtio-pci.c | 9 +- > hw/virtio/virtio.c | 7 + > tests/qtest/libqos/virtio-gpio.c | 171 +++++++++++ > tests/qtest/libqos/virtio.c | 4 +- > tests/qtest/qos-test.c | 8 +- > tests/qtest/vhost-user-test.c | 172 +++++++++-- > hw/virtio/Kconfig | 5 + > hw/virtio/meson.build | 2 + > hw/virtio/trace-events | 9 + > tests/qtest/libqos/meson.build | 1 + > 19 files changed, 956 insertions(+), 34 deletions(-) > create mode 100644 include/hw/virtio/vhost-user-gpio.h > create mode 100644 tests/qtest/libqos/virtio-gpio.h > create mode 100644 hw/virtio/vhost-user-gpio-pci.c > create mode 100644 hw/virtio/vhost-user-gpio.c > create mode 100644 tests/qtest/libqos/virtio-gpio.c > > -- > 2.30.2