On Mon, 2018-12-10 at 10:18 -0800, Stephen Hemminger wrote: > This fixes the problem where uio application was unable to > use multple queues on restart. The root cause is that the callbacks > are cleared on disconnect. Change to setting up callbacks > everytime in open. > > Fixes: cdfa835c6e5e ("uio_hv_generic: defer opening vmbus until first > use") > Reported-by: Mohammed Gamal <mgamal@xxxxxxxxxx> > Signed-off-by: Stephen Hemminger <stephen@xxxxxxxxxxxxxxxxxx> > --- > drivers/uio/uio_hv_generic.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/uio/uio_hv_generic.c > b/drivers/uio/uio_hv_generic.c > index c2493d011225..3c5169eb23f5 100644 > --- a/drivers/uio/uio_hv_generic.c > +++ b/drivers/uio/uio_hv_generic.c > @@ -204,9 +204,11 @@ hv_uio_open(struct uio_info *info, struct inode > *inode) > if (atomic_inc_return(&pdata->refcnt) != 1) > return 0; > > + vmbus_set_chn_rescind_callback(dev->channel, > hv_uio_rescind); > + vmbus_set_sc_create_callback(dev->channel, > hv_uio_new_channel); > + > ret = vmbus_connect_ring(dev->channel, > hv_uio_channel_cb, dev->channel); > - > if (ret == 0) > dev->channel->inbound.ring_buffer->interrupt_mask = > 1; > else > @@ -334,9 +336,6 @@ hv_uio_probe(struct hv_device *dev, > goto fail_close; > } > > - vmbus_set_chn_rescind_callback(channel, hv_uio_rescind); > - vmbus_set_sc_create_callback(channel, hv_uio_new_channel); > - > ret = sysfs_create_bin_file(&channel->kobj, > &ring_buffer_bin_attr); > if (ret) > dev_notice(&dev->device, Tested-by: Mohammed Gamal <mgamal@xxxxxxxxxx> _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel