Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759318AbcJYPsO (ORCPT ); Tue, 25 Oct 2016 11:48:14 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:37180 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759256AbcJYPsL (ORCPT ); Tue, 25 Oct 2016 11:48:11 -0400 MIME-Version: 1.0 In-Reply-To: References: <1477396919-27669-1-git-send-email-binoy.jayan@linaro.org> <1477396919-27669-3-git-send-email-binoy.jayan@linaro.org> From: Jack Wang Date: Tue, 25 Oct 2016 17:48:09 +0200 Message-ID: Subject: Re: [PATCH v2 2/8] IB/core: Replace semaphore sm_sem with completion To: Binoy Jayan Cc: Doug Ledford , Sean Hefty , Hal Rosenstock , Arnd Bergmann , "linux-rdma@vger.kernel.org" , Linux kernel mailing list Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1332 Lines: 46 Hi Binoy, 2016-10-25 17:08 GMT+02:00 Binoy Jayan : > On 25 October 2016 at 18:13, Jack Wang wrote: >> Hi Binoy, >> >> snip >>> >>> port->ib_dev = device; >>> port->port_num = port_num; >>> - sema_init(&port->sm_sem, 1); >>> + init_completion(&port->sm_comp); >>> + complete(&port->sm_comp); >> >> Why complete here? >> >>> mutex_init(&port->file_mutex); >>> INIT_LIST_HEAD(&port->file_list); >>> >>> -- >> KR, >> Jinpu > > > Hi Jack, > > ib_umad_sm_open() calls wait_for_completion_interruptible() which comes before > ib_umad_sm_close() that calls complete(). In the initial open() there > will not be > anybody to signal the completion, so the complete is called to mark > the initial state. > I am not sure if this is the right way to do it, though. > > -Binoy >From Documentation/scheduler/completion.txt , " 117 This is not implying any temporal order on wait_for_completion() and the 118 call to complete() - if the call to complete() happened before the call 119 to wait_for_completion() then the waiting side simply will continue 120 immediately as all dependencies are satisfied if not it will block until 121 completion is signaled by complete(). " In this case here, if sm_open/sm_close are paired, it should work. KR Jack