> +
>  static void virtio_balloon_device_unrealize(DeviceState *dev)
>  {
>      VirtIODevice *vdev = VIRTIO_DEVICE(dev);
> @@ -919,9 +928,17 @@ static void virtio_balloon_device_unrealize(DeviceState 
> *dev)
>  
>      qemu_unregister_resettable(OBJECT(dev));
>      if (s->free_page_bh) {
> +        AioContext *ctx = iothread_get_aio_context(s->iothread);
> +
>          qemu_bh_delete(s->free_page_bh);
> +
> +        qemu_mutex_lock(&s->free_page_lock);
> +        s->free_page_hint_status = FREE_PAGE_HINT_S_UNREALIZE;
> +        qemu_cond_signal(&s->free_page_cond);
> +        qemu_mutex_unlock(&s->free_page_lock);
> +        aio_wait_bh_oneshot(ctx, dummy_bh, NULL);
> +
>          object_unref(OBJECT(s->iothread));
> -        virtio_balloon_free_page_stop(s);
>          precopy_remove_notifier(&s->free_page_hint_notify);
>      }
>      balloon_stats_destroy_timer(s);

Not sure if this already went upsteam, but FWIW

Reviewed-by: David Hildenbrand <[email protected]>

-- 
Cheers,

David

Reply via email to