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


Reply via email to