From patchwork Tue Sep 19 01:29:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 28892 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C882C1B217; Tue, 19 Sep 2017 03:31:37 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0082.outbound.protection.outlook.com [104.47.37.82]) by dpdk.org (Postfix) with ESMTP id 3CDEA1B19B for ; Tue, 19 Sep 2017 03:31:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=QUE9RGGK6G8KO2cd1J42DWAfiCoKBANRpy9Tbk0AYI4=; b=FVKkXsoyLgZML0QtRIxAXVuwGWvmeZv3xqADEKM2ydQYcuUduqfHqtcwdB5YUBuQoehD5cNU8NbvcW2xmL+RrOO64pRmb9Swg8rnoig7v4VNBGTHxlezMC57miVVi1vFDnCNcIpA2URMEtCR7zsi3WwqD0dgRhiBMBRro/jqSE4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by SN4PR0701MB3838.namprd07.prod.outlook.com (2603:10b6:803:4f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.11; Tue, 19 Sep 2017 01:31:18 +0000 From: Rasesh Mody To: dev@dpdk.org, ferruh.yigit@intel.com Cc: Rasesh Mody , Dept-EngDPDKDev@cavium.com Date: Mon, 18 Sep 2017 18:29:57 -0700 Message-Id: <1505784633-1171-18-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1505784633-1171-1-git-send-email-rasesh.mody@cavium.com> References: <1505784633-1171-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: SN4PR0501CA0015.namprd05.prod.outlook.com (2603:10b6:803:40::28) To SN4PR0701MB3838.namprd07.prod.outlook.com (2603:10b6:803:4f::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a5898193-c54c-4b7a-5efe-08d4fefe2079 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:SN4PR0701MB3838; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3838; 3:RmC9Bi+2rJ7TqYuJWXsKfIWxGvHyndlQG0nvfd9yVthXjGRmW3zkjyrbxV+X519hEq1GifAXWXA4+sB6ESyU+gyStH/CrN5ve/XMewwr4bObx+b7q/vfwRKezAaMINzrvNV1lkHWdRWMYDpKT2se5zpWcBAa81uVP3KbY4yIVZ7QMVc76rFbNF2i2fX5izeTM+zGz//ug3m5vw3OB5WxHtmBq7J0B4HdRW2T4XNgfjwi5Pl4aXP4szaIQzZGl8MY; 25:uN4MbM1jPAS/0PAJ046+JETchKHVmjDLS2R3CK9yK5squJKk+YHGb7Li2wO13gzxENs8RAvwnsFNsWj+iJP+votW1ddhQ+VD0iuMDHeMmjChrmBYjK6Li+frtQ711o6aczeoyL6D7DJmNgTuy4zyaaWmHxIniGWPaqduUokGK2p4fxPxjqJZTNdeepKcjdE40TXfxCVe5zmCCx66ZkxVOkO0zwbkA6gTSU5bomwPDQbuexezA9Qk+OKVQj5lFlCe+wET0KDwhdEsiYUbz1pk6tWSqjDa6lPkY9p2ZTt8Bi9F1HuSQwohTjeFwDBJ6AWeKiesOH+Fkx7MW59FdBP26Q==; 31:W1gbLBbq4StyZ/SeY3sTOGxcsjnzTdkkA6V2L0CIjjuvRtAqieQ/6yPcidUpCEg0jV+8Q8pBz753a7V5L9oKAy71+bxWAVwFTEmdY2O7I8DtNza9ZwpxDC4F3EIlpICFcJ2HUK9riEo1Le6u3aOBaH+XI4mWOxJWcCuwcA+FTqtWacpbvunTpzXML4JjJq5O3DDEgpUVOpXveVBN5i+GgKZpeARlIybExcY71zmkcKk= X-MS-TrafficTypeDiagnostic: SN4PR0701MB3838: X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3838; 20:cP7fcazuYqtFkaNxdCqv+DHofck30ilDiBrd0AaPkaA8Q4B0JeuzVEGihJZfh/JLiCEJlF/SyPfFcj/nz09cGzTGfB/jrfpx1i/oqTbvSQeU1IsmZChYniFJ4NLW/ssq5DTXlnL13vwWeter4LdC+1CiSe/bkG5saJb3gpYZjhTzhvZ43j4Egi+kmIQanicP0Rj9v15qx7L0K3ez/P5ZZm/7ikPpewPm0FR4523PpRZ0AH13CClUxcuPnITjYJC0jAzfxtbGGBDBKg8EieRiHDhu+9OodYq3Tj4tR8PxuODy1hb04EpqFtBTyrDZQVk0XJYtm2rz9cjIJrGiXXUGSgbf50XzEuFwKV+Kf6tp3xNYlo1Btsdmap3Cz9jiU247jh9rgisA1oFY179v1s3aeXBGxCA6gsHQbRxVlpLLr4H0VNJKUwuLWH7XY+rdArs8rMs0HYDOEUtuDR2eb5IKMOQARvykRRylfcRzeH+nhmtlIHcR3HkHGeuR4/nAkYt7; 4:w9bB7hUBBTc7T6S6uCsfbX50caH9bYJJS1b6Z8iT7GYXr0eAVoNrMubhHsBL8Yx2zmH3ohuilR6lxIP/gPjiLd4y7KwVit2A2x6N+Q1p7SOivQ6nV+uZ0M7LCkEnqlNglMdXP9Ghs3rcyX8E2QN3I9iIo36WqXEaCTWauvdjp3HzWajbqGDqtN5QomkAs+7kgT6hhcmOi5tmITUvMcCO4MhgLBrpsZDfwqNdxB9wAd1MrjSpO6PJKSo0rvlyUXs+ X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6041248)(20161123555025)(20161123562025)(20161123558100)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:SN4PR0701MB3838; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN4PR0701MB3838; X-Forefront-PRVS: 04359FAD81 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(199003)(189002)(48376002)(33646002)(68736007)(316002)(21086003)(16526017)(16586007)(72206003)(36756003)(478600001)(97736004)(86362001)(66066001)(25786009)(69596002)(47776003)(50986999)(81166006)(8936002)(50226002)(8676002)(5660300001)(7736002)(53936002)(305945005)(81156014)(55016002)(50466002)(76176999)(6116002)(3846002)(2950100002)(101416001)(4326008)(4720700003)(2906002)(107886003)(6666003)(189998001)(106356001)(5003940100001)(105586002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN4PR0701MB3838; H:cavium.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN4PR0701MB3838; 23:nbcBfaI/uDoMKyUT0VAEqec+VCdOPnwHDV0wxbg?= hE7MBVJG310B9TeyBvmhNd8RcDp0ktgBfyi4BSOQzi1/lzoqN7uSZUYXnupwpuIaX6SSHk2/h7MhYe0WdLRyTmiFn8o0TnSbrYNpvXqe2Wk9fiG4yYt7i37lDy+aT0wNn4tMuUgcQEFuGzdQR8icX7gSbPCBxyq2weMZ25tVcfV3OgLdqQvVrS84gsqQba8mrt1ECVhhTvq2M6pg+B+cZtlsSZAhs314Ik6ZHq0QURvij0WlZHVxlQqJ728DyQ8Z2m6/yzt7JUAc2e/XbFyoxbt29ug9geW7//VLrUgXkOqPHCzfF3MCBc3/tFkQLa7A2r9jUytLA65oTt79bRLmtkLXVRWPD2t//mPiUmWfQkkFv0FEnw6f/kxeBmsJ1swaCtwOw19Im+E1qoBkvcN/8j1TEjrad68NW/zWLjYrcV0J19N01vltqsjozZw7fTz12Z54RTJAuUG/BMZ4auB4OMtwjAnqL0nVsgPtKK7O789SeMnILWSdAK1Fn/+TlofmlYrSB7e52aq+gFd42upOqeq06NRHivkZzFEKOig6ZzfjZepkwaoFY9MeW6GRigmSm0CmYQf0ybPVKCNr915E3Ft9EOQELlol2nflhD6qpNnt9SeZTI+RZHa+tP/1sq6wd3RxZt9cjVZJovTCdZ/wk85P7mkiI6TQz7/u3I669A2Yj00DrpzPPiCD5W6KeVmMAdmjlmKLie1pNCYrJWienzZxPNSIXlDUuTlATibos7Q3VnySxHo/TQI2qt6NuUj0/xDop39PW4e6a6dTL3Dt659jzo9XQCBAzUy9NAES1wDolK4Yy5AlfY1XeKttkopJNsdH7vO/nzv8bfS+i+aM2eH2hYHsVIXish0hUWwElRDs5jTJPIWqy0fNthryZjLyTXQkoaQ458KSGT0jlIsdU2RKAm9WCzjXtBC1Nj1zQUqD1h9wBvQPqDmhtr/YD665O+RpmA0HDlnP7N0FdNyur8YKbtRcLG33gCaA5OXn28GqC5GrkSBfImIWh4S22AjehmMzUhKyfNDwe3r3pK45lLhPVW+PKIPeKuN3o2iDWS4bVi4wuvCo8WIWscsGmioaack0= X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3838; 6:YSmIjWoRaKWyaZCxf2peJU09bkwxCvI0utjzWN9vMtNe+akQC6kW7zke4k2yMTivqLYrnI3Mpx+fp+fm7Zi3ZJLu42rnlZD583kg6hIzIEjB0sXDBCdHcm4W0GU69w/tnK4d5HHPdThxMPAfipeaatiQ0y/qyGR0sNKD0Cl8Yd+sUse1ytd8zb9g4Woo1JGKZ3oI+y5MJmf0/k8BlZWL87VqpgpJJpM48oADsId0mG6hRVGAPX1o7p+yP6exqaCtDgv9kcyhnFu/7UqTtlnFhZmYclIvqTm2VAEBnC69DoI7JiuGgyky9RMTIB1FVWe3QOOEoJUSI7zrxBTJQETVww==; 5:iWHpg/Qn5QOUAHpPfNsQaGzaUtVx9gc3AMG7bC2JoJcyDaGNqk1bQZfIV78+Lcqeuwn25AaxYpdn4G0JH+TC7e4LngW2ErU0d1O4INWPMSSzZutjguMOtFBktVR0LNb5wdAINJoNGn83Jhqhm5kBYw==; 24:D5HXM2eC8Go9cnRJtHaKMAY4KhmKmLDe7nF8zS/h+nV7mKqW2hHn+SrA/Qz3+vLORsz7RIjf24aIXzvHxAlUw2PwWD/VklsPSQ1VK9+GCZw=; 7:aXp673CMEJpAAUtQeTpNRSCK23v4C+eZPbix2/QQGkF83haMRBg1v/3FXyx04pjMBTnkW7MR0Eevo0UITtAip1RAom6lucLN3RACSZmt6Bq3S/jiX6B2qayOLEgqAwWu2UiyBiICdMJXb9s1Hq9dsXpvp1vqZ4OMuhSQpcpIcNwOMdK3sqXtyJc75OidklvHVMr662TEMQnLbasSn+wiElynnFpAJNLID1r4ZYmBxlc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2017 01:31:18.3243 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR0701MB3838 Subject: [dpdk-dev] [PATCH 17/53] net/qede/base: prevent re-assertions of parity errors X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Prevent parity errors from being re-asserted. Mask any parity error, even if it is not associated with a HW block. Signed-off-by: Rasesh Mody --- drivers/net/qede/base/ecore_int.c | 72 ++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/drivers/net/qede/base/ecore_int.c b/drivers/net/qede/base/ecore_int.c index e7dfe04..acf8759 100644 --- a/drivers/net/qede/base/ecore_int.c +++ b/drivers/net/qede/base/ecore_int.c @@ -851,32 +851,38 @@ static void ecore_int_attn_print(struct ecore_hwfn *p_hwfn, * @brief ecore_int_deassertion_parity - handle a single parity AEU source * * @param p_hwfn - * @param p_aeu - descriptor of an AEU bit which caused the - * parity + * @param p_aeu - descriptor of an AEU bit which caused the parity + * @param aeu_en_reg - address of the AEU enable register * @param bit_index */ static void ecore_int_deassertion_parity(struct ecore_hwfn *p_hwfn, struct aeu_invert_reg_bit *p_aeu, - u8 bit_index) + u32 aeu_en_reg, u8 bit_index) { - u32 block_id = p_aeu->block_index; + u32 block_id = p_aeu->block_index, mask, val; - DP_INFO(p_hwfn->p_dev, "%s[%d] parity attention is set\n", - p_aeu->bit_name, bit_index); - - if (block_id == MAX_BLOCK_ID) - return; - - ecore_int_attn_print(p_hwfn, block_id, - ATTN_TYPE_PARITY, false); - - /* In A0, there's a single parity bit for several blocks */ - if (block_id == BLOCK_BTB) { - ecore_int_attn_print(p_hwfn, BLOCK_OPTE, - ATTN_TYPE_PARITY, false); - ecore_int_attn_print(p_hwfn, BLOCK_MCP, - ATTN_TYPE_PARITY, false); + DP_NOTICE(p_hwfn->p_dev, false, + "%s parity attention is set [address 0x%08x, bit %d]\n", + p_aeu->bit_name, aeu_en_reg, bit_index); + + if (block_id != MAX_BLOCK_ID) { + ecore_int_attn_print(p_hwfn, block_id, ATTN_TYPE_PARITY, false); + + /* In A0, there's a single parity bit for several blocks */ + if (block_id == BLOCK_BTB) { + ecore_int_attn_print(p_hwfn, BLOCK_OPTE, + ATTN_TYPE_PARITY, false); + ecore_int_attn_print(p_hwfn, BLOCK_MCP, + ATTN_TYPE_PARITY, false); + } } + + /* Prevent this parity error from being re-asserted */ + mask = ~(0x1 << bit_index); + val = ecore_rd(p_hwfn, p_hwfn->p_dpc_ptt, aeu_en_reg); + ecore_wr(p_hwfn, p_hwfn->p_dpc_ptt, aeu_en_reg, val & mask); + DP_INFO(p_hwfn, "`%s' - Disabled future parity errors\n", + p_aeu->bit_name); } /** @@ -891,8 +897,7 @@ static enum _ecore_status_t ecore_int_deassertion(struct ecore_hwfn *p_hwfn, u16 deasserted_bits) { struct ecore_sb_attn_info *sb_attn_sw = p_hwfn->p_sb_attn; - u32 aeu_inv_arr[NUM_ATTN_REGS], aeu_mask; - bool b_parity = false; + u32 aeu_inv_arr[NUM_ATTN_REGS], aeu_mask, aeu_en, en; u8 i, j, k, bit_idx; enum _ecore_status_t rc = ECORE_SUCCESS; @@ -908,11 +913,11 @@ static enum _ecore_status_t ecore_int_deassertion(struct ecore_hwfn *p_hwfn, /* Handle parity attentions first */ for (i = 0; i < NUM_ATTN_REGS; i++) { struct aeu_invert_reg *p_aeu = &sb_attn_sw->p_aeu_desc[i]; - u32 en = ecore_rd(p_hwfn, p_hwfn->p_dpc_ptt, - MISC_REG_AEU_ENABLE1_IGU_OUT_0 + - i * sizeof(u32)); + u32 parities; - u32 parities = sb_attn_sw->parity_mask[i] & aeu_inv_arr[i] & en; + aeu_en = MISC_REG_AEU_ENABLE1_IGU_OUT_0 + i * sizeof(u32); + en = ecore_rd(p_hwfn, p_hwfn->p_dpc_ptt, aeu_en); + parities = sb_attn_sw->parity_mask[i] & aeu_inv_arr[i] & en; /* Skip register in which no parity bit is currently set */ if (!parities) @@ -922,11 +927,9 @@ static enum _ecore_status_t ecore_int_deassertion(struct ecore_hwfn *p_hwfn, struct aeu_invert_reg_bit *p_bit = &p_aeu->bits[j]; if (ecore_int_is_parity_flag(p_hwfn, p_bit) && - !!(parities & (1 << bit_idx))) { + !!(parities & (1 << bit_idx))) ecore_int_deassertion_parity(p_hwfn, p_bit, - bit_idx); - b_parity = true; - } + aeu_en, bit_idx); bit_idx += ATTENTION_LENGTH(p_bit->flags); } @@ -941,10 +944,13 @@ static enum _ecore_status_t ecore_int_deassertion(struct ecore_hwfn *p_hwfn, continue; for (i = 0; i < NUM_ATTN_REGS; i++) { - u32 aeu_en = MISC_REG_AEU_ENABLE1_IGU_OUT_0 + - i * sizeof(u32) + k * sizeof(u32) * NUM_ATTN_REGS; - u32 en = ecore_rd(p_hwfn, p_hwfn->p_dpc_ptt, aeu_en); - u32 bits = aeu_inv_arr[i] & en; + u32 bits; + + aeu_en = MISC_REG_AEU_ENABLE1_IGU_OUT_0 + + i * sizeof(u32) + + k * sizeof(u32) * NUM_ATTN_REGS; + en = ecore_rd(p_hwfn, p_hwfn->p_dpc_ptt, aeu_en); + bits = aeu_inv_arr[i] & en; /* Skip if no bit from this group is currently set */ if (!bits)