Milan Zamazal <mzama...@redhat.com> writes:

> The QEMU CI fails in virtio-scmi test occasionally.  As reported by
> Thomas Huth, this happens most likely when the system is loaded and it
> fails with the following error:
>
>   qemu-system-aarch64: ../../devel/qemu/hw/pci/msix.c:659:
>   msix_unset_vector_notifiers: Assertion `dev->msix_vector_use_notifier && 
> dev->msix_vector_release_notifier' failed.
>   ../../devel/qemu/tests/qtest/libqtest.c:200: kill_qemu() detected QEMU 
> death from signal 6 (Aborted) (core dumped)
>
> As discovered by Fabiano Rosas, the cause is a duplicate invocation of
> msix_unset_vector_notifiers via duplicate vu_scmi_stop calls:
>
>   msix_unset_vector_notifiers
>   virtio_pci_set_guest_notifiers
>   vu_scmi_stop
>   vu_scmi_disconnect
>   ...
>   qemu_chr_write_buffer
>
>   msix_unset_vector_notifiers
>   virtio_pci_set_guest_notifiers
>   vu_scmi_stop
>   vu_scmi_set_status
>   ...
>   qemu_cleanup
>
> While vu_scmi_stop calls are protected by vhost_dev_is_started()
> check, it's apparently not enough.  vhost-user-blk and vhost-user-gpio
> use an extra protection, see f5b22d06fb (vhost: recheck dev state in
> the vhost_migration_log routine) for the motivation.  Let's use the
> same in vhost-user-scmi, which fixes the failure above.
>
> Fixes: a5dab090e142 ("hw/virtio: Add boilerplate for vhost-user-scmi device")
> Signed-off-by: Milan Zamazal <mzama...@redhat.com>

Reviewed-by: Fabiano Rosas <faro...@suse.de>

Reply via email to