Commit 5e3c420d authored by Stephen Hemminger's avatar Stephen Hemminger Committed by Greg Kroah-Hartman
Browse files

uio_hv_generic: set callbacks on open



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: cdfa835c ("uio_hv_generic: defer opening vmbus until first use")
Reported-by: default avatarMohammed Gamal <mgamal@redhat.com>
Signed-off-by: default avatarStephen Hemminger <stephen@networkplumber.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 40e020c1
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -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,