From patchwork Fri Mar 13 12:31:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Selvin Xavier X-Patchwork-Id: 11436835 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 59BAE92A for ; Fri, 13 Mar 2020 12:31:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 353BF20749 for ; Fri, 13 Mar 2020 12:31:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="DXQJ6N8Q" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726667AbgCMMbz (ORCPT ); Fri, 13 Mar 2020 08:31:55 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:41471 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726216AbgCMMbz (ORCPT ); Fri, 13 Mar 2020 08:31:55 -0400 Received: by mail-wr1-f68.google.com with SMTP id s14so11872691wrt.8 for ; Fri, 13 Mar 2020 05:31:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=bgz2DihxvsOAX8tiSY4fxk2uMcXFREsDYCuDlOPhGkc=; b=DXQJ6N8QF5WbHhYRfGChPIcLY7Ns09sLuOZdWXhMJQlkimejGIv7XQIbiXEdy3qn58 3hXHwE4hjivRH/Uv0GjtXvWoCnQGrbkVOFW26JHJCFzZH1qYmphgerR9tEkEWWUQXnNC f6nHptuu5EOyZ5MNqCd78hOExg8rJZAq4Xn7M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=bgz2DihxvsOAX8tiSY4fxk2uMcXFREsDYCuDlOPhGkc=; b=dl61o09uYvu5r9jTxiwaLMIzsSebJy3nU7xnNHBG6IARUyiHRO6CX7FiiPBDaKSvd2 8mUdc4s3RIUske7lkliAxeH0iZG+WTOT6oshwDYbJaTIhwpwYSgZxNmcTuLxT8Rexbtx fvUAjcPC3IOkA7hngzvjK8B6sTbJO/5JiepskAZT85IQv32a6aL+b5I2emhgcj526Nc9 wyDaigRMFBcEJGs6qqVkjEnSkoNabcyvQ8StWQ9EIrGVZq1URRP3lh8cALMQ6Pr/JQcu k77hCupJIX+5m9ohG8uK2edmoggaKyhqfNzixlSnhNGmU3TP1M3vdDGnSxzYRR3L16R9 Vi3w== X-Gm-Message-State: ANhLgQ3IcFZYFFS1ne91/oI4D20CS3+u+a60QWaR2cI1F5qZRQ6Daxu8 GRNQltWgMMuckBm4yn8tL3UFpw== X-Google-Smtp-Source: ADFU+vt5ZLYfV98RSFWUGPP7Br9EFkBlWBG7dKAWRuXO3zMTmMfSV9r7j4PseHLeTGCJyjNYzQnERg== X-Received: by 2002:adf:e804:: with SMTP id o4mr17327398wrm.24.1584102713301; Fri, 13 Mar 2020 05:31:53 -0700 (PDT) Received: from dhcp-10-192-206-197.iig.avagotech.net.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id g129sm18015910wmg.12.2020.03.13.05.31.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Mar 2020 05:31:52 -0700 (PDT) From: Selvin Xavier To: dledford@redhat.com, jgg@mellanox.com Cc: linux-rdma@vger.kernel.org, Selvin Xavier Subject: [PATCH for-next 1/3] RDMA/bnxt_re: Use ib_device_try_get() Date: Fri, 13 Mar 2020 05:31:32 -0700 Message-Id: <1584102694-32544-2-git-send-email-selvin.xavier@broadcom.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1584102694-32544-1-git-send-email-selvin.xavier@broadcom.com> References: <1584102694-32544-1-git-send-email-selvin.xavier@broadcom.com> Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org From: Jason Gunthorpe There are a couple places in this driver running from a work queue that need the ib_device to be registered. Instead of using a broken internal bit rely on the new core code to guarantee device registration. Signed-off-by: Jason Gunthorpe Signed-off-by: Selvin Xavier --- drivers/infiniband/hw/bnxt_re/main.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c index 415693f..d5019b3 100644 --- a/drivers/infiniband/hw/bnxt_re/main.c +++ b/drivers/infiniband/hw/bnxt_re/main.c @@ -1171,12 +1171,13 @@ static int bnxt_re_update_gid(struct bnxt_re_dev *rdev) u16 gid_idx, index; int rc = 0; - if (!test_bit(BNXT_RE_FLAG_IBDEV_REGISTERED, &rdev->flags)) + if (!ib_device_try_get(&rdev->ibdev)) return 0; if (!sgid_tbl) { ibdev_err(&rdev->ibdev, "QPLIB: SGID table not allocated"); - return -EINVAL; + rc = -EINVAL; + goto out; } for (index = 0; index < sgid_tbl->active; index++) { @@ -1196,7 +1197,8 @@ static int bnxt_re_update_gid(struct bnxt_re_dev *rdev) rc = bnxt_qplib_update_sgid(sgid_tbl, &gid, gid_idx, rdev->qplib_res.netdev->dev_addr); } - +out: + ib_device_put(&rdev->ibdev); return rc; } @@ -1630,12 +1632,7 @@ static void bnxt_re_task(struct work_struct *work) re_work = container_of(work, struct bnxt_re_work, work); rdev = re_work->rdev; - if (re_work->event != NETDEV_REGISTER && - !test_bit(BNXT_RE_FLAG_IBDEV_REGISTERED, &rdev->flags)) - goto done; - - switch (re_work->event) { - case NETDEV_REGISTER: + if (re_work->event == NETDEV_REGISTER) { rc = bnxt_re_ib_init(rdev); if (rc) { ibdev_err(&rdev->ibdev, @@ -1645,7 +1642,13 @@ static void bnxt_re_task(struct work_struct *work) rtnl_unlock(); goto exit; } - break; + goto exit; + } + + if (!ib_device_try_get(&rdev->ibdev)) + goto exit; + + switch (re_work->event) { case NETDEV_UP: bnxt_re_dispatch_event(&rdev->ibdev, NULL, 1, IB_EVENT_PORT_ACTIVE); @@ -1665,7 +1668,7 @@ static void bnxt_re_task(struct work_struct *work) default: break; } -done: + ib_device_put(&rdev->ibdev); smp_mb__before_atomic(); atomic_dec(&rdev->sched_count); exit: From patchwork Fri Mar 13 12:31:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Selvin Xavier X-Patchwork-Id: 11436837 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BD46D92C for ; Fri, 13 Mar 2020 12:31:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9C39120749 for ; Fri, 13 Mar 2020 12:31:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="WYuLlkuI" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726646AbgCMMb6 (ORCPT ); Fri, 13 Mar 2020 08:31:58 -0400 Received: from mail-wm1-f65.google.com ([209.85.128.65]:35055 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726216AbgCMMb6 (ORCPT ); Fri, 13 Mar 2020 08:31:58 -0400 Received: by mail-wm1-f65.google.com with SMTP id m3so10101308wmi.0 for ; Fri, 13 Mar 2020 05:31:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fZ06S74IYkYkRjrkuuFKendcHkbTRbvoDuSHTPbfnHE=; b=WYuLlkuI3IIxiGJKUeac/HUXInGwcuM36GCf45iCKeI43No31JWpqeZdcN8A3JvPOp eopHIvxrw0RUEtZy0Z6EFll5yJX5a8wHwyhxrz704K14PldCAW/KbMMnE4C2Q/NHt4MO u9zeoyK+H6x+AogwYjf+LRYehPAX8DP3/Wm4c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=fZ06S74IYkYkRjrkuuFKendcHkbTRbvoDuSHTPbfnHE=; b=OAVkB5w788Po7PboCn2WjwZce48iUxOKsDLYpLaKFIOxLkIduojCEaMHTLwfOwNs8C iG7kAW7aOvoeBTW/3TJbzMQ/FBOs1HcmPSK0AemQ9XD0OcPxAmzy5Y2jOp6vEUQv3GOz BEMsJfL4n/abM87dM6kIove8j+YmLNTI6K/vqDGWiqmzWAwz9N/kPQ6x1DfNJc0JkvYz bmgfaEp1SytgDmM10ysF1ydbI0nVJt7nouxb3BL0/XxTJ/ZCvtCXsMi8rOjDaH7R6s+J RwYTaq9Kn1WBD07sjS3EB4btspTPDx05m8utoulP+D7S7D490GMtAtmW6gSeIVj0tPuQ rjJw== X-Gm-Message-State: ANhLgQ0J6LEyYVUNkRHkA5bbUw5gNLin1jGLP0gsuJlQT6LXnL2wkSGA nCvUQ+Yf9/wwbiBAwKRW/8MJcA== X-Google-Smtp-Source: ADFU+vuT//SaJE53odHcCmi79PDGqsSJf4n9/swPjqxcuvAsoszHVXkzp84JUrdVsgo+rQRlbqX/MA== X-Received: by 2002:a1c:2d4f:: with SMTP id t76mr10542312wmt.60.1584102716103; Fri, 13 Mar 2020 05:31:56 -0700 (PDT) Received: from dhcp-10-192-206-197.iig.avagotech.net.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id g129sm18015910wmg.12.2020.03.13.05.31.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Mar 2020 05:31:55 -0700 (PDT) From: Selvin Xavier To: dledford@redhat.com, jgg@mellanox.com Cc: linux-rdma@vger.kernel.org, Selvin Xavier Subject: [PATCH for-next 2/3] RDMA/bnxt_re: Fix lifetimes in bnxt_re_task Date: Fri, 13 Mar 2020 05:31:33 -0700 Message-Id: <1584102694-32544-3-git-send-email-selvin.xavier@broadcom.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1584102694-32544-1-git-send-email-selvin.xavier@broadcom.com> References: <1584102694-32544-1-git-send-email-selvin.xavier@broadcom.com> Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org From: Jason Gunthorpe A work queue cannot just rely on the ib_device not being freed, it must hold a kref on the memory so that the BNXT_RE_FLAG_IBDEV_REGISTERED check works. Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver") Signed-off-by: Jason Gunthorpe Signed-off-by: Selvin Xavier --- drivers/infiniband/hw/bnxt_re/main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c index d5019b3..82062d8 100644 --- a/drivers/infiniband/hw/bnxt_re/main.c +++ b/drivers/infiniband/hw/bnxt_re/main.c @@ -1672,6 +1672,7 @@ static void bnxt_re_task(struct work_struct *work) smp_mb__before_atomic(); atomic_dec(&rdev->sched_count); exit: + put_device(&rdev->ibdev.dev); kfree(re_work); } @@ -1737,6 +1738,7 @@ static int bnxt_re_netdev_event(struct notifier_block *notifier, /* Allocate for the deferred task */ re_work = kzalloc(sizeof(*re_work), GFP_ATOMIC); if (re_work) { + get_device(&rdev->ibdev.dev); re_work->rdev = rdev; re_work->event = event; re_work->vlan_dev = (real_dev == netdev ? From patchwork Fri Mar 13 12:31:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Selvin Xavier X-Patchwork-Id: 11436839 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C253D92A for ; Fri, 13 Mar 2020 12:32:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A24262074A for ; Fri, 13 Mar 2020 12:32:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="YQdEiVQC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726216AbgCMMcB (ORCPT ); Fri, 13 Mar 2020 08:32:01 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:50792 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726674AbgCMMcB (ORCPT ); Fri, 13 Mar 2020 08:32:01 -0400 Received: by mail-wm1-f66.google.com with SMTP id a5so9738873wmb.0 for ; Fri, 13 Mar 2020 05:31:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=CX0R/ZzCkv41Xb0fuIeFH0zC/H0pc2ea5hZtg9No/Xo=; b=YQdEiVQCkjqN4qAnFmyzgtZVSdJuwxbZOMFDy6KowreYmy2PaWAx0uFpFo5ue6GzUv ElfRlvgbRRhCj47n6mv6Mzq72scIxND+fb87Xy/fjRkyMTeTWzyCASyLYg0vEbnr6PRd wAFCGddgAljtmQEdpUTge6PEI4YCt8hheobNY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=CX0R/ZzCkv41Xb0fuIeFH0zC/H0pc2ea5hZtg9No/Xo=; b=TuSiAnMo4sXdZWGGU/HkKh3yD19njI4ry6HpXhPkOqbgMsV1t6kGWifr8IUn953QEZ DYPefTBeJP9DJrMF+w2sYVSWATTEVnSMX+FoknPAu/ZiLczyUOcLE2mKP1NDxFFlyfkw ySbPtvqtNIZMFunpBYgljMWT+blAfc/ufCMjfkb8mhP32g/eE3EsXzZs4gBK9C8hT1ve gKUakFe/9aKkpp2DYiZp4ygoXSVIx/SooP4GY7zeHcQ8uvZR1jrw5qe0N56ZrwtTxY1N GNJN9Adj0vxn3vWVm5SlX7/zPg3aXx3ml3axZzKB0aabqMz4Eu30B1j+ajVsO4zacLPm RqNA== X-Gm-Message-State: ANhLgQ3hArFLmoGYTykIRrI3yKj0rRlLLDi/P6sKDBYd0b0HDwxfjUu5 YVXpUOfbsUGHeJrkBM1jALemQQ== X-Google-Smtp-Source: ADFU+vvp/Dgjh/qXMXr21k+7thtyhI4uNClrGd5TgC/uI3hrxAR1h9gCsUvuEtv+iAihWuwLLpKWxw== X-Received: by 2002:a1c:a50d:: with SMTP id o13mr10435210wme.128.1584102719196; Fri, 13 Mar 2020 05:31:59 -0700 (PDT) Received: from dhcp-10-192-206-197.iig.avagotech.net.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id g129sm18015910wmg.12.2020.03.13.05.31.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Mar 2020 05:31:58 -0700 (PDT) From: Selvin Xavier To: dledford@redhat.com, jgg@mellanox.com Cc: linux-rdma@vger.kernel.org, Selvin Xavier Subject: [PATCH for-next 3/3] RDMA/bnxt_re: Remove unnecessary sched count Date: Fri, 13 Mar 2020 05:31:34 -0700 Message-Id: <1584102694-32544-4-git-send-email-selvin.xavier@broadcom.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1584102694-32544-1-git-send-email-selvin.xavier@broadcom.com> References: <1584102694-32544-1-git-send-email-selvin.xavier@broadcom.com> Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org Since the lifetime of bnxt_re_task is controlled by the kref of device, sched_count is no longer required. Remove it. Signed-off-by: Selvin Xavier --- drivers/infiniband/hw/bnxt_re/bnxt_re.h | 1 - drivers/infiniband/hw/bnxt_re/main.c | 7 ------- 2 files changed, 8 deletions(-) diff --git a/drivers/infiniband/hw/bnxt_re/bnxt_re.h b/drivers/infiniband/hw/bnxt_re/bnxt_re.h index c736e82..e35cc6c 100644 --- a/drivers/infiniband/hw/bnxt_re/bnxt_re.h +++ b/drivers/infiniband/hw/bnxt_re/bnxt_re.h @@ -177,7 +177,6 @@ struct bnxt_re_dev { atomic_t srq_count; atomic_t mr_count; atomic_t mw_count; - atomic_t sched_count; /* Max of 2 lossless traffic class supported per port */ u16 cosq[2]; diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c index 82062d8..4df0f8e 100644 --- a/drivers/infiniband/hw/bnxt_re/main.c +++ b/drivers/infiniband/hw/bnxt_re/main.c @@ -1670,7 +1670,6 @@ static void bnxt_re_task(struct work_struct *work) } ib_device_put(&rdev->ibdev); smp_mb__before_atomic(); - atomic_dec(&rdev->sched_count); exit: put_device(&rdev->ibdev.dev); kfree(re_work); @@ -1722,11 +1721,6 @@ static int bnxt_re_netdev_event(struct notifier_block *notifier, break; case NETDEV_UNREGISTER: - /* netdev notifier will call NETDEV_UNREGISTER again later since - * we are still holding the reference to the netdev - */ - if (atomic_read(&rdev->sched_count) > 0) - goto exit; ib_unregister_device_queued(&rdev->ibdev); break; @@ -1744,7 +1738,6 @@ static int bnxt_re_netdev_event(struct notifier_block *notifier, re_work->vlan_dev = (real_dev == netdev ? NULL : netdev); INIT_WORK(&re_work->work, bnxt_re_task); - atomic_inc(&rdev->sched_count); queue_work(bnxt_re_wq, &re_work->work); } }