Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp2339643ybz; Thu, 23 Apr 2020 16:19:23 -0700 (PDT) X-Google-Smtp-Source: APiQypKeC41F/q3HQG6zNegi5gETI6xn3M6yavV+1O/XqKh0GVCUmAJ3UmR74Zt2v6atbSGW9qCY X-Received: by 2002:a17:906:1292:: with SMTP id k18mr4766890ejb.132.1587683963612; Thu, 23 Apr 2020 16:19:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587683963; cv=none; d=google.com; s=arc-20160816; b=LUJhOdzz0kVkQUQc+W5ckLtR5qtoxv28hBqG2fuj2g/7PU5ILBOz0l9jh/vn5F2aeo C4hhlFsOuvUqUeJD2BEhNgm0iPjK3HkOUORP/O8U3y5Teyx8T0LKZhumki2xUcxf8xeH oNC9jAePzk7uVF3qlN046KS3/FNWU/zi7Ilq2yiMPW8/szhrsHLBP3LVeC24/Sd9KA5d cVajj7l+n41OkpjG7wlpgUDSlVFU9U+aPlGGD9ejEbXTtTNYTlvC25wXWZcpLfYbfZu4 rbJHzOOaGwNK7XVoMdkktETdNngRl5LwiPixETgunPO4U9PV89PQTw4uE6ns6RVmCGo7 GACA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition; bh=3DTgvspf9PwNccLhLz9lwBcWk4bZjF+7PYVpr4tRPT0=; b=EIi9m6DzOTk8C9/GzAHKsdifCNarWmWlFlqB0syds52FTWmJRY0SElwCUugNigYEwz uLYEL8zkKlb6mdvEJ7Mp0+vwEc7FarMZmlsuTr+c48Opcjh0h/OfwIYcOnSlcySN3Dzx 0BsrcuG//rPFnuLBlks3mvPmexRrLRmylMh9JZ2YiWVF2m6XgAzmDtU4ytywWDqUwc9z a74MY4iQFDLhQw1ExoP+Ha4mdxW7k2Bs9DIyPU/uzlUc8dfbAYoHxoP2fJreHk2FSzkE tE+D5fpMm2IdDRUHCpCYszDIDoC5ZPRVKh8BBGbsWVf/tv2XXaiQbUCNbg3ESYk0xLVe Niaw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y24si2182721ejr.132.2020.04.23.16.18.59; Thu, 23 Apr 2020 16:19:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729128AbgDWXRF (ORCPT + 99 others); Thu, 23 Apr 2020 19:17:05 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:49344 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728337AbgDWXGn (ORCPT ); Thu, 23 Apr 2020 19:06:43 -0400 Received: from [192.168.4.242] (helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1jRkvS-0004hK-Cg; Fri, 24 Apr 2020 00:06:34 +0100 Received: from ben by deadeye with local (Exim 4.93) (envelope-from ) id 1jRkvP-00E6nr-MS; Fri, 24 Apr 2020 00:06:31 +0100 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, Denis Kirjanov , "Or Gerlitz" , "Moni Shoua" , "Roland Dreier" Date: Fri, 24 Apr 2020 00:05:37 +0100 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) X-Patchwork-Hint: ignore Subject: [PATCH 3.16 110/245] IB/mlx4: Avoid executing gid task when device is being removed In-Reply-To: X-SA-Exim-Connect-IP: 192.168.4.242 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.83-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Moni Shoua commit 4bf9715f184969dc703bde7be94919995024a6a9 upstream. When device is being removed (e.g during VPI port link type change from ETH to IB), tasks for gid table changes should not be executed. Flush the current queue of tasks and block further tasks from entering the queue. Signed-off-by: Moni Shoua Signed-off-by: Or Gerlitz Signed-off-by: Roland Dreier Signed-off-by: Ben Hutchings --- drivers/infiniband/hw/mlx4/main.c | 9 +++++++++ 1 file changed, 9 insertions(+) --- a/drivers/infiniband/hw/mlx4/main.c +++ b/drivers/infiniband/hw/mlx4/main.c @@ -1395,6 +1395,9 @@ static void update_gids_task(struct work int err; struct mlx4_dev *dev = gw->dev->dev; + if (!gw->dev->ib_active) + return; + mailbox = mlx4_alloc_cmd_mailbox(dev); if (IS_ERR(mailbox)) { pr_warn("update gid table failed %ld\n", PTR_ERR(mailbox)); @@ -1425,6 +1428,9 @@ static void reset_gids_task(struct work_ int err; struct mlx4_dev *dev = gw->dev->dev; + if (!gw->dev->ib_active) + return; + mailbox = mlx4_alloc_cmd_mailbox(dev); if (IS_ERR(mailbox)) { pr_warn("reset gid table failed\n"); @@ -2363,6 +2369,9 @@ static void mlx4_ib_remove(struct mlx4_d struct mlx4_ib_dev *ibdev = ibdev_ptr; int p; + ibdev->ib_active = false; + flush_workqueue(wq); + mlx4_ib_close_sriov(ibdev); mlx4_ib_mad_cleanup(ibdev); ib_unregister_device(&ibdev->ib_dev);