From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vitaly Kuznetsov Subject: Re: [PATCH net 2/4] hv_netvsc: reset vf_inject on VF removal Date: Thu, 11 Aug 2016 14:09:53 +0200 Message-ID: <87lh038q26.fsf@vitty.brq.redhat.com> References: <1470913137-29167-1-git-send-email-vkuznets@redhat.com> <1470913137-29167-3-git-send-email-vkuznets@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: netdev , Haiyang Zhang , linux-kernel , "devel@linuxdriverproject.org" To: Yuval Mintz Return-path: In-Reply-To: (Yuval Mintz's message of "Thu, 11 Aug 2016 11:46:18 +0000") List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" List-Id: netdev.vger.kernel.org Yuval Mintz writes: >> +static void netvsc_inject_enable(struct net_device_context >> +*net_device_ctx) { >> + net_device_ctx->vf_inject = true; >> +} >> + >> +static void netvsc_inject_disable(struct net_device_context >> +*net_device_ctx) { >> + net_device_ctx->vf_inject = false; >> + >> + /* Wait for currently active users to drain out. */ >> + while (atomic_read(&net_device_ctx->vf_use_cnt) != 0) >> + udelay(50); >> +} > > That was already the behavior before, but are you certain you > want to unconditionally block without any possible timeout? Yes, this is OK. After PATCH4 of this series there is only one place which takes the vf_use_cnt (netvsc_recv_callback()) and it is an interrupt handler, there are no sleepable operations there. -- Vitaly