On 8/8/2015 1:21 AM, Jan Kiszka wrote: > On VHOST_*_RESET_OWNER, we reinitialize the device but without telling > the application. That will cause crashes when it continues to invoke > vhost services on the device. Fix it by calling the destruction hook if > the device is still in use. > > Signed-off-by: Jan Kiszka <jan.kiszka at siemens.com> > --- > > This is the surprisingly simple answer to my questions in > http://thread.gmane.org/gmane.comp.networking.dpdk.devel/22661. > > lib/librte_vhost/virtio-net.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/lib/librte_vhost/virtio-net.c b/lib/librte_vhost/virtio-net.c > index b520ec5..3c5b5b2 100644 > --- a/lib/librte_vhost/virtio-net.c > +++ b/lib/librte_vhost/virtio-net.c > @@ -402,6 +402,9 @@ reset_owner(struct vhost_device_ctx ctx) > > ll_dev = get_config_ll_entry(ctx); > > + if ((ll_dev->dev.flags & VIRTIO_DEV_RUNNING)) > + notify_ops->destroy_device(&ll_dev->dev);
To me this patch makes sense here. Whether RESET_OWNER is really needed is another question. Whenever the vhost itself needs to process the vhost device, we need to notify the switch application to remove it from data plane. > + > cleanup_device(&ll_dev->dev); > init_device(&ll_dev->dev); >