Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1769619ybl; Sat, 11 Jan 2020 02:27:26 -0800 (PST) X-Google-Smtp-Source: APXvYqyoQUSpOMVBZDDVCGBu69nFPiP87EcAqM7lNBtTLTRpk11lSKJsHO9aQEV7YdnK9sXpoKnb X-Received: by 2002:aca:a949:: with SMTP id s70mr6063646oie.80.1578738446317; Sat, 11 Jan 2020 02:27:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578738446; cv=none; d=google.com; s=arc-20160816; b=P0nw/HBKtLIVIYzNBP5b4XafTv2x5pTXLcOsPx7v7ilhXri4WX4JzhC/oyt90hxWPR pKS7BSvK3uLrplJUDXtJQAlDBFibsR5G4OPJUz1oiBbFaXexLDnLqeVHwz2wNV9n2LgI yk3tQPAXLY66YLYrXawMuFF/Ax9DhBwYiOudwcMSEfWHMxv+UXoJDkol/zxH9bA2qhVa EYUf2FYhqxscUqCw+Mh4YbFdqd/i/Z0ZjNbyDe7SBoZ09KkQqvthAAXeq2vJdmdQIj2v YVQ54MTGAL0T2XK8oMvLiY0YNZfUdTxC4CMdoxyXXXgqEM/CfQM5SzuJ5NyOFkvNPha5 ShcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=aSKVahf3hnqxCgVCQmwRU4ABIXnWvyrzLdc5bqLHC5U=; b=udW0BwqB/1EhxgP8VEzie2mwyVv6r46S85nxZNefeHbMfm2SiJJzcD5CY6wmfsQxDH fverzazacVsvbHp+A7DeKoZaeEuFUjCvghcTNZH139ySU+FHh3B/P6LTckw610prKG8q 9IZdx0tnhVs/hDi6Zf9EeyXHu2+ZX1E52WCakVeNAoTWR9Dy5nHnXVu4oEPM9jN8fthr ee/6eQYsxI1GmOrp2bTYEEFu5sKMr1aurOPinyg4MilRyiffNQyPH/eUtv+I95RBVGT2 GFHTFLrB3gV0ktLJN9ZQ4rLuAvNZJ8lxviW+x1DzjXx0nk9qR//Y+pz2Ch2lFnyDPWZw TwJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ueqULBpJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p22si3187816ota.43.2020.01.11.02.27.15; Sat, 11 Jan 2020 02:27:26 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ueqULBpJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731050AbgAKK0Z (ORCPT + 99 others); Sat, 11 Jan 2020 05:26:25 -0500 Received: from mail.kernel.org ([198.145.29.99]:58920 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729047AbgAKK0Y (ORCPT ); Sat, 11 Jan 2020 05:26:24 -0500 Received: from localhost (unknown [62.119.166.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1E7F920842; Sat, 11 Jan 2020 10:26:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578738383; bh=KXFzMoosRGn71pIzVBaVLYYeBw7GeuvaqQZzxBF8k0k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ueqULBpJ1i6vZ924o7jD9YWE4OSTtvsHO3kY2EMUPVwHS+DEP/sTUsbfNCWqeLurs 7PmjEj8LvxgB3ITEfjpuou2+bVOqSxD4YfQmHof5H6cP59nwGoeR0hnluVZ8OzZEVw BP0zGrQ8S4S5NzRyQPmqsN9pF9xs9ZYViX6PTBdU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Manish Chopra , Ariel Elior , Jakub Kicinski , Sasha Levin Subject: [PATCH 5.4 083/165] bnx2x: Do not handle requests from VFs after parity Date: Sat, 11 Jan 2020 10:50:02 +0100 Message-Id: <20200111094928.109784836@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200111094921.347491861@linuxfoundation.org> References: <20200111094921.347491861@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Manish Chopra [ Upstream commit 7113f796bbbced2470cd6d7379d50d7a7a78bf34 ] Parity error from the hardware will cause PF to lose the state of their VFs due to PF's internal reload and hardware reset following the parity error. Restrict any configuration request from the VFs after the parity as it could cause unexpected hardware behavior, only way for VFs to recover would be to trigger FLR on VFs and reload them. Signed-off-by: Manish Chopra Signed-off-by: Ariel Elior Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 12 ++++++++++-- drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h | 1 + drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c | 12 ++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index 192ff8d5da32..cff64e43bdd8 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -9976,10 +9976,18 @@ static void bnx2x_recovery_failed(struct bnx2x *bp) */ static void bnx2x_parity_recover(struct bnx2x *bp) { - bool global = false; u32 error_recovered, error_unrecovered; - bool is_parity; + bool is_parity, global = false; +#ifdef CONFIG_BNX2X_SRIOV + int vf_idx; + + for (vf_idx = 0; vf_idx < bp->requested_nr_virtfn; vf_idx++) { + struct bnx2x_virtf *vf = BP_VF(bp, vf_idx); + if (vf) + vf->state = VF_LOST; + } +#endif DP(NETIF_MSG_HW, "Handling parity\n"); while (1) { switch (bp->recovery_state) { diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h index b6ebd92ec565..3a716c015415 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h @@ -139,6 +139,7 @@ struct bnx2x_virtf { #define VF_ACQUIRED 1 /* VF acquired, but not initialized */ #define VF_ENABLED 2 /* VF Enabled */ #define VF_RESET 3 /* VF FLR'd, pending cleanup */ +#define VF_LOST 4 /* Recovery while VFs are loaded */ bool flr_clnup_stage; /* true during flr cleanup */ bool malicious; /* true if FW indicated so, until FLR */ diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c index 0752b7fa4d9c..ea0e9394f898 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c @@ -2107,6 +2107,18 @@ static void bnx2x_vf_mbx_request(struct bnx2x *bp, struct bnx2x_virtf *vf, { int i; + if (vf->state == VF_LOST) { + /* Just ack the FW and return if VFs are lost + * in case of parity error. VFs are supposed to be timedout + * on waiting for PF response. + */ + DP(BNX2X_MSG_IOV, + "VF 0x%x lost, not handling the request\n", vf->abs_vfid); + + storm_memset_vf_mbx_ack(bp, vf->abs_vfid); + return; + } + /* check if tlv type is known */ if (bnx2x_tlv_supported(mbx->first_tlv.tl.type)) { /* Lock the per vf op mutex and note the locker's identity. -- 2.20.1