Received: by 2002:ac8:4f8f:0:b0:429:955e:b7c6 with SMTP id j15csp2729qtw; Tue, 16 Jan 2024 12:57:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IG6kQgWZHmy+pwThm8AzSX+mj2qGf0qw1AHl2qfz86j11gAOe4D92n81251lpQCaDcI/eYn X-Received: by 2002:a05:6a00:f8c:b0:6d9:eb21:fed0 with SMTP id ct12-20020a056a000f8c00b006d9eb21fed0mr10831679pfb.52.1705438646415; Tue, 16 Jan 2024 12:57:26 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705438646; cv=pass; d=google.com; s=arc-20160816; b=HJ9pvuCgOD3hNmiumJIpSHqvVjDqPgpejuI4EDC89D3oIHfngd4LayUgXyip4f7sl3 VAsXF1JqMQYSp3LrV4rBlHMulDjGMQ3KBl69HGPeVT1NLK4v/aL8BajcXb5hJokcY2vq IJfGC9zrN59GzDSKHrFuLJObI6zKnNSi/8ME/mjFYEN3oW1luCAvZkRonhf20WztgaBg Ni/YI28cwVYX8cpequHghQGiKDaTP9L7dfrriIhWhvuMNSuX1CSg1Tsro/7juP0YmsW6 95eMY+SAYGInkgUK8VFHrHYUaXqNGxyMTB4r8wWRYCHGtA2aCHOrwFiY5ebNU4c9ficN Iolg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=QLqlSnP972JkE3SOl9fKBsm9MGtTdW0UKiUUwGhKUFI=; fh=z/kqshmo4Qw+gV4yWFPDfKU8jhvFM5ZoSJd1Fm+qpCU=; b=mBxpM8KvQsk6bL6KDNdjw4EWHmv+QrHLY4skuwmfKTkl6kOhIYZYlhLl9I87GjEFhP hnsOALj/s7dpK6e7IZ0uUauryEFP6/Px9LRz6uzAiJMv8rZfeoZTIGOWoB7et0TBHRKz nd5hWC/DNmKVkXOjnn7UVVOJRmE1l1+qqiUvMHG4sVTQGcqjNQ9qfAlNIoRQfvdKY+n4 eSLkXsO3++bH2K6840y1yOw/z6NFGFptYOdd2fq+1mWgvtN0zbJqJyj4tnOqqVq8qOob KiZrl2ActRxLh6Tvidk9fL45HlHY/i1vi6dtNjQbCTdFH1T8O960R+CcLcTO7Ej/Aoq3 FZdg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ta+9qciu; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-27972-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27972-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id cm20-20020a056a00339400b006dabae16930si43762pfb.102.2024.01.16.12.57.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jan 2024 12:57:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-27972-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ta+9qciu; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-27972-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27972-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 99BE528BA24 for ; Tue, 16 Jan 2024 20:47:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3AD751339B0; Tue, 16 Jan 2024 19:52:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ta+9qciu" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6063E7F7D7; Tue, 16 Jan 2024 19:52:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705434723; cv=none; b=KzBK0JTkuNYfBHULwt453dHmqdOmmSvHuI9c+fM71K77Xr/cofiwEZB1woZJGmjwFjQ75PEjVtbYNEp1H7zs24L7Cq67oeYCB0+e7t6e99JbNoVwlkKtE/JUEjPbHFDaJGfuljMrGj9Udnr7QE2X1jVclXZxtvwfve2olFvGrL0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705434723; c=relaxed/simple; bh=Vvuo0RRwGPRhxFg6ZiGdSeCAD4+2FBPo3UoMM8YF+nk=; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID: X-Mailer:In-Reply-To:References:MIME-Version:X-stable: X-Patchwork-Hint:X-stable-base:Content-Transfer-Encoding; b=m8pO6XFo+7IHqJ7CPuX7PQa33i38ezrv7qqk+YGPrR6cCfyiesCeSi4CubzSKJXb6OhCRc3g3R6c7jzxTV15+naHvCx1mlc1s38gsfkHsb4AJC/z60EXxlhpGEA+8f2qfILfaMyspcU9D/yRLO2LxyK8QQ/hu/gxM1PhEw0w5es= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ta+9qciu; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 31F7EC433C7; Tue, 16 Jan 2024 19:52:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1705434723; bh=Vvuo0RRwGPRhxFg6ZiGdSeCAD4+2FBPo3UoMM8YF+nk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ta+9qciuMEFv7fZeY+eumBUiLln+IXw4ZiKIPi+DIaCRfkXwhCZAbMjJC9ERp2A9W 38ln+RxSfwP8zWNs7f8gkxyZ8Gi3q7YrVY6hlQuJ9G8NalsNEB2uepF9MTi0oETYVm p8MSGgpsZ0n88hfP4f8+nGAgnhhakXrfzriBqMKOfBmGbBDl/tRbp0fPFovfohrUE+ nYpaDNAe0K2HfZQHUmJa19LPXQYRllW0o2CP9Wz+RJsK7ALYQkNXulKT3s5RKS/8cI 7dAp5tF7s+xPDUh0z4hvsMxAFgdIsn72kTAjlaJdJfO6Oc5a8lAB+3iTJ8ehlaebF7 quIv9e1oOJnWw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Shannon Nelson , Brett Creeley , "David S . Miller" , Sasha Levin , drivers@pensando.io, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, cai.huoqing@linux.dev, leon@kernel.org, florian.fainelli@broadcom.com, nitya.sunkad@amd.com, neel.patel@amd.com, Julia.Lawall@inria.fr, allen.hubbe@amd.com, keescook@chromium.org, justinstitt@google.com, netdev@vger.kernel.org Subject: [PATCH AUTOSEL 6.6 061/104] ionic: bypass firmware cmds when stuck in reset Date: Tue, 16 Jan 2024 14:46:27 -0500 Message-ID: <20240116194908.253437-61-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240116194908.253437-1-sashal@kernel.org> References: <20240116194908.253437-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.6.12 Content-Transfer-Encoding: 8bit From: Shannon Nelson [ Upstream commit ca5fdf9a7c5b65968c718f2be159cda4c13556a1 ] If the driver or firmware is stuck in reset state, don't bother trying to use adminq commands. This speeds up shutdown and prevents unnecessary timeouts and error messages. This includes a bit of rework on ionic_adminq_post_wait() and ionic_adminq_post_wait_nomsg() to both use __ionic_adminq_post_wait() which can do the checks needed in both cases. Signed-off-by: Shannon Nelson Reviewed-by: Brett Creeley Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- .../ethernet/pensando/ionic/ionic_bus_pci.c | 4 ++++ .../net/ethernet/pensando/ionic/ionic_lif.c | 3 +++ .../net/ethernet/pensando/ionic/ionic_main.c | 20 ++++++++++++------- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c b/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c index d6ce113a4210..fa4237c27e06 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c @@ -392,6 +392,10 @@ static void ionic_remove(struct pci_dev *pdev) del_timer_sync(&ionic->watchdog_timer); if (ionic->lif) { + /* prevent adminq cmds if already known as down */ + if (test_and_clear_bit(IONIC_LIF_F_FW_RESET, ionic->lif->state)) + set_bit(IONIC_LIF_F_FW_STOPPING, ionic->lif->state); + ionic_lif_unregister(ionic->lif); ionic_devlink_unregister(ionic); ionic_lif_deinit(ionic->lif); diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c index c9bd2c57a37d..adb0f9b01bb1 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c @@ -3238,6 +3238,9 @@ static void ionic_lif_reset(struct ionic_lif *lif) { struct ionic_dev *idev = &lif->ionic->idev; + if (!ionic_is_fw_running(idev)) + return; + mutex_lock(&lif->ionic->dev_cmd_lock); ionic_dev_cmd_lif_reset(idev, lif->index); ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); diff --git a/drivers/net/ethernet/pensando/ionic/ionic_main.c b/drivers/net/ethernet/pensando/ionic/ionic_main.c index baa865af49ad..f019277fec57 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_main.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_main.c @@ -410,22 +410,28 @@ int ionic_adminq_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx, do_msg); } -int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) +static int __ionic_adminq_post_wait(struct ionic_lif *lif, + struct ionic_admin_ctx *ctx, + const bool do_msg) { int err; + if (!ionic_is_fw_running(&lif->ionic->idev)) + return 0; + err = ionic_adminq_post(lif, ctx); - return ionic_adminq_wait(lif, ctx, err, true); + return ionic_adminq_wait(lif, ctx, err, do_msg); } -int ionic_adminq_post_wait_nomsg(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) +int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) { - int err; - - err = ionic_adminq_post(lif, ctx); + return __ionic_adminq_post_wait(lif, ctx, true); +} - return ionic_adminq_wait(lif, ctx, err, false); +int ionic_adminq_post_wait_nomsg(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) +{ + return __ionic_adminq_post_wait(lif, ctx, false); } static void ionic_dev_cmd_clean(struct ionic *ionic) -- 2.43.0