[PATCH] uio_hv_generic: set callbacks on open
Mohammed Gamal
mgamal at redhat.com
Mon Dec 17 09:00:24 UTC 2018
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 at redhat.com>
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> ---
> 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 at redhat.com>
More information about the devel
mailing list