Re: [PATCH] uio_hv_generic: set callbacks on open

2018-12-17 Thread Mohammed Gamal
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 
> Signed-off-by: Stephen Hemminger 
> ---
>  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(>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(>kobj,
> _buffer_bin_attr);
>   if (ret)
>   dev_notice(>device,

Tested-by: Mohammed Gamal 
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] uio_hv_generic: set callbacks on open

2018-12-10 Thread Stephen Hemminger
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 
Signed-off-by: Stephen Hemminger 
---
 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(>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(>kobj, _buffer_bin_attr);
if (ret)
dev_notice(>device,
-- 
2.19.2

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel