From patchwork Sat Sep 8 20:31:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 44459 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 67DD37D52; Sat, 8 Sep 2018 22:32:14 +0200 (CEST) Received: from NAM04-BN3-obe.outbound.protection.outlook.com (mail-eopbgr680066.outbound.protection.outlook.com [40.107.68.66]) by dpdk.org (Postfix) with ESMTP id 9F2E64CC5; Sat, 8 Sep 2018 22:31:58 +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:X-MS-Exchange-SenderADCheck; bh=sxTc2pB+5F11fzI3PSNC/EbMeVK811PuWgpe8REaJek=; b=IznMtWgzvDAbXm/S2gK4lMoRprQ8NYH9EH9KLruepgUb5w+Korus1dQ4fgl90sizQT0jWQdP8LwFOaRmHeH+TVrG7SWDdBYyFfh8SCM9mgyXRkaNSKyJ4R/clHGB3aohNMPlgOXOnxpsTF8YVf56NiDcd5mzKwk+q7g0oHmvmiI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.1.5) by DM6PR07MB5372.namprd07.prod.outlook.com (2603:10b6:5:44::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.18; Sat, 8 Sep 2018 20:31:56 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Shahed Shaikh , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com, stable@dpdk.org Date: Sat, 8 Sep 2018 13:31:05 -0700 Message-Id: <1536438666-22184-17-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1536438666-22184-1-git-send-email-rasesh.mody@cavium.com> References: <1536438666-22184-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 X-Originating-IP: [198.186.1.5] X-ClientProxiedBy: BYAPR02CA0031.namprd02.prod.outlook.com (2603:10b6:a02:ee::44) To DM6PR07MB5372.namprd07.prod.outlook.com (2603:10b6:5:44::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6c62bd1c-6d44-4364-ba4a-08d615ca1f56 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:DM6PR07MB5372; X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB5372; 3:3KJ3DEhLfZBkQRGLa5pc4pCUaTFQ0HaQnXa6BHct3pxXSVKhOXUP1KwgxmZhK8YgJZdXwUiebMXQ6WcG1jdewIvp9lit19SuYF0YvBJK3gTNLttDyPK4bUCKCc0l/1VqVjEnQsdVV/brU0WBs8G54U9aT8UUdVcInOriEnvSgZW4a8Q+FgaolyqnKYp81IR1/hbM0436llhQp55tcto+Mm3bLgDDOKrO7NqvECaSz/nr8+lMrdF4VLQXqQ5p7oah; 25:XeqhyqHcYX7H50Z2Nt4hrWwEbz/XtMUFHDZndgVyADfKPCn7qBk9XSTYeA5L5aabovQ0IkLoHQH927VGXrgN7e92r7wgfkQrCiJLeBrv3mk2kO931ylHMqL9BvQbfAiSwYqoRwhnuObA4GefWe/vFSeHbfeNZ9+vTNBbshxcfTVCPc9/vECVQ3EFLA2Y60WW5+Q8naAHUak/pirfsbuEjVa52L1EITEOxJHLM0FNS97RUj+NY3edDRWl4l5HiQy7PuD0S8s81FPMLopOfB+2k+04yufPeKqJCDVC6qqb1W1QdQ76HrseHA2yvDMB0srhV57miVDgY9LlFFjIMPqJvw==; 31:gin6xR7/VdfsmCqRH81l4kg19R+l5EF0Sh5CPaAZ1pdZih/G/VnWLOSfdxblHKF+PmgI3w/s+YS+V4iWCklHuIw/q43qzGs78mMSXTHGxO1VjI+FNXiuXvw6HfjP7cy/aAQjHd1WZzFOE7mKhH+aQIMsPgnye+I60uk7ThU6wlXykAE540ru0zcZ4h64FbKalli5UgqtQFxJOerfJRnN/vOCHDj5RRlYBIsEF6AjZR4= X-MS-TrafficTypeDiagnostic: DM6PR07MB5372: X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB5372; 20:uP8KC4Mw8kSSEL4Nl5lVAvJ9Eu+KluG6Bz+/DgGZlitJ4b0zwlnxJ3svhKnpPKuKLB4r/V1v1R5YmMFagamjUaJ3uFj96Reh9ZsiK5qBv5NSdO8fzGE2E3ue/MIsJKu9flvfqdZKlVKsytqAk9sewwSbLax8SvzZSNy4CpHSnf1DU2f/Vm85U+DvUz8y3g3+qYaqHIhm2PR4P3I6VrFbMmcf0WHjZLXy/qAEjrdF1YDbTcdb/AEO6FdS1RZAv5rAkm3FeXUiIrqWpBC3j+VYspTohbdxc8GeCDYC6dhKYsAmCXPHhGFaUvjgKHqlE1zIFCWlG/xWoaaEO6F8rMJycDaRljZ61wGkUli/UIN+UazLUrLPtMf7Y+8w9Mv3zxLj6eDubRriaVi0Qge0l6DK9n37l7mMedvqV7tUrFonsFfPrx5zcqGdw5A++oJIjR9CY1bmAupT04yJe4clRdMp/PYW+y8/5KPHKtP3UUjszmT818oLHOQudMp48o6kFuyA; 4:A+iicYOYXZ5rFz3qj+wiJvnt6DtOJTLdqijYPcjmRqHiZbVgxqcJOgXy7hJalh1bluEW1TjOB+aXNNMqJPxt9DnZdHD1KW6g+niptDtn7/Mb4KvW3aRvtKJODAl1ssOgAPrvBiH7EuvmcISwjca8g1QYWtGtUVVHjoBYJ12OTtLMuNcItAkXEuH6pZk95pGVeL7pAJHgQLI5TYYT909oJFJ3bT0D3wPAv+pUMvCfM6XDrRHiMwog0+6TMI15oRn9bSGCxTAQTY188Hkj0SZCyw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301075)(3002001)(10201501046)(3231311)(944501410)(52105095)(93006095)(93001095)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699050); SRVR:DM6PR07MB5372; BCL:0; PCL:0; RULEID:; SRVR:DM6PR07MB5372; X-Forefront-PRVS: 07891BF289 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(136003)(346002)(376002)(39860400002)(199004)(189003)(4720700003)(97736004)(2351001)(106356001)(105586002)(72206003)(66066001)(47776003)(4326008)(50466002)(48376002)(25786009)(305945005)(7736002)(2361001)(8676002)(478600001)(316002)(52116002)(69596002)(186003)(50226002)(44832011)(16526019)(486006)(21086003)(2906002)(55016002)(26005)(8936002)(476003)(956004)(81156014)(81166006)(86362001)(5660300001)(6666003)(36756003)(16586007)(11346002)(446003)(217873002)(2616005)(76176011)(3846002)(6116002)(6916009)(68736007)(14444005)(386003)(51416003)(53936002)(7696005); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR07MB5372; H:cavium.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM6PR07MB5372; 23:zEsADr/xbuvpI27cHd9ZSw+mzDbLojEZialVjYU+v?= u/gSPm4u+Q528gFj8kCg5HQKrHp6EHva6RbKAnf2Lja7bLf7Qygb4eMUSpsLXzFPjxDd+742fnQyK9310Hw0YGdiy+TmvIqRbiImTrziElpqyz4ZY23IvJPuT0CY6kF0N1G6FJpHkao3MkAuSj+z6mD0kWdDrNJBQ54EdJJ/2EQgLDblx4pOeSzCgROEdmPcKXFEjDWR4BmZdOpx2zYhq89MoOhicqC9gWtm9mGtZ/jeAtB3px6d4KHP7dcr3QPpPlC3FBQYuy4El92qjabYO3C2rsWvcVjbq4v0aExRmZSRalayO2H25hIUeCg0PVmwxBP3Z8z/qfVv4rDbG3GnAQwzLUVVgkxKiM+D9aeGmT27A7ER7dzbFNa9yZJRs+/lDqG9IYJQYw0mhrBMIZEmOv9/Nlsq+bOKbJKbbzeWH8t6VIDN/XcLfm68CeGTEC/Ny1R32PDql8eBdCqpd8pZr8/PDIfuLVfsnizXZZGj8BYToo+k3RtZcIo9SQ6ll8si5t5bojWGbWHXhPE+vmCRhx/txspI+/DQ1hSzzmK3VHmg4OuHiRUoednwG5r1aobx6bVTxATth35/fsX6FBwBimF+v6KfKgcEIEeSpmI8sLD75UNV1HS5kY/hCNnBKTdQi3h3vnFKSK+nzrbQ3/X+P1yTcsHbDVVvPNfQ53LkjjkLMLB3Ko5oohB9q8QS8UuStB7PIAd3Lv3+kQjsMjnqHI/CZpWTw6fDOq7Yt+yEKFzYfdHT7c2IcAv23YeumI+cSIFt9T57Ygap29Uey2D6YVP1Jxv203ZU0bVV/jFJneLT6Nv1hdP5Yq2QDWePq0cOXspkaEIq81NZBeXP7EFFx7mrpdwoACvps8dUe8Z1bvjOhMJCkf++7W4vHmGbgU6atIxVJ7U1RPMSDK9+6TC1WIrBRocESld1TQOja1oyv5d1XYQ/8SV6xyw3RqIXEum2W+n4oNofmFxVPWjLhMrJMvVZ7kjMuw9JAVhDlrBXOAGCa3tEVhXb/mYGj9Wez5vpFaslc1lOcCuWErXk3zky/4keAJhs9GchlwxfkJ+oF/zwBrKd868fO/dXzScKxdsh8bZ5hSlW0MfLz/oRphgKujBR0Evfpeuqy0cGwSNwqKtM0V2i8DWfuzL1vd2LAySDyRp0/Wsto7k5awnQgp8s7WuyzsQFcWwaw3yUmFECzjgC7DUS0+/xBron2O6v2yA0QuKNEozqCJe0f47ojdUGkMvupw9P5ZdKLfGOvwxn8wIKtXgOV3YhMFZsKfqaz1BpDQvAs6te4dY0zq+1T11cTeZ X-Microsoft-Antispam-Message-Info: E6PRy0YBkVwl/4fj6Bw1zWsA3HsO8/DAyyj0SyU1FhOcg5vvAmudjeSP0nNJV4+03sddhR1GiEDLnWCY5Abew4fC5Jep/ZP2M07C47RnOXD9lFSNzkxtGQpavJ7Socif1JLRFm7OFtD3hczEZjGY5HRkeSNzS3qpJLhQ/Zn+Stbd8vyOTPw11G9bIL03toyA/FbOx2OM1H4s2mZpzRMMVXMUaOS/q1CAeA30OZpguFoiPk+1bifg62CNOFQZcIwPPD2wIFbiPhOieWczGAMW/qWmJersGrMw9jUcukYC0unVH7aUvLHnqy4rW/cfmHKf6g1KArRTQYhs6YiBxmzxCAxVC3fLGOHLuFsvOI8ju8g= X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB5372; 6:oUi5qeoFuP6eHv/Z6flEe2lIMgsKDaO4/I//3PasM5tFnwb41sdN/L+Y7JekelXNExST7q3B9mYDuGHqqWaEjzZZYiIYvLFc/MoLFeOPBoIH8nGurVxM+Hc2mRhKST/lmCh6mJSMz86722urQbrYNVOWjqIBEL9WNzllnVcSK+lxA7VVjwmfHOa/2hGKivJoOKcTmh3fdAFsYLO1+DGPqlk7/q1cOjfUFJxwL/Agx/TC/uZvR0EOp6qVUzxig1tmT8ptg1LpVCT9gPfRL6a+qjFWRrswFwif1uwFAkY7Y1Ec3oNOtYtI9CX140RwL8RBpzoURsTGhR4ehPG3Z/x1cVP/qyvcMoGdG1e7o3IiWSxRiQy7OVbu7wKfX1zxcqaJIf1o+z3vpIn6w+zW0Mlb8OaRPwtLBK+skCltG64EPta/9xt7FnswhJDSG/pikGXPnBRJlK/E4QounQmygdIVMQ==; 5:VHwmA52tlNPIGqKlUQ8lPa1sq5pPlklDlL+BQs04gD0UX5hW2VCmP4i8Q2GILypPjTp79y5DmNUldHNZAf2ZEayMo14UAug6SnIEuIYHp8sg08rnMj4Q+FmulBrnZeAba/4mcn+MsWZpRY5H/Utd2duTzkasOVa6VwOAIm3U7Rw=; 7:c0Hy3fKseXswGF8Su+p3/j4ffXqzvIQOxB4gkq+gcmMcXNta4/eqV/CBQH1KgIn8VVwp3D4uhXB8mPzdrwXYhodsyxxjsm+1jiwn/mKPg3M2aKXwUyTzeA/h+Kl07Nd1O9Bc043RZd6tWwFoKUWhKuhqd1HLOLuS90h9aXCd74cQzGyHaE59uTGTBp0j/1tLck2NjhRHbYfl0Yl/tZlsEvDidw6EFmSJqG75eb07m5OhGIdqhgXS5RkKV3+x3ZMl SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Sep 2018 20:31:56.9108 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6c62bd1c-6d44-4364-ba4a-08d615ca1f56 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR07MB5372 Subject: [dpdk-dev] [PATCH 16/17] net/qede/base: fix MFW FLR flow bug 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" From: Shahed Shaikh Management firmware does not properly clean IGU block in PF FLR flow which may result in undelivered attentions for link events from default status block. Add a workaround in PMD to execute extra IGU cleanup right after PF FLR is done. Fixes: 9e2f08a4ad5f ("net/qede/base: add request for PF FLR before load request") Cc: stable@dpdk.org Signed-off-by: Shahed Shaikh --- drivers/net/qede/base/ecore_dev.c | 7 +++++++ drivers/net/qede/base/ecore_int.c | 32 ++++++++++++++++++++++++++++++++ drivers/net/qede/base/ecore_int.h | 1 + drivers/net/qede/base/mcp_public.h | 2 ++ drivers/net/qede/base/reg_addr.h | 15 +++++++++++++++ 5 files changed, 57 insertions(+) diff --git a/drivers/net/qede/base/ecore_dev.c b/drivers/net/qede/base/ecore_dev.c index fdb62f2..d91fe27 100644 --- a/drivers/net/qede/base/ecore_dev.c +++ b/drivers/net/qede/base/ecore_dev.c @@ -4272,6 +4272,13 @@ void ecore_prepare_hibernate(struct ecore_dev *p_dev) rc = ecore_mcp_initiate_pf_flr(p_hwfn, p_hwfn->p_main_ptt); if (rc != ECORE_SUCCESS) DP_NOTICE(p_hwfn, false, "Failed to initiate PF FLR\n"); + + /* Workaround for MFW issue where PF FLR does not cleanup + * IGU block + */ + if (!(p_hwfn->mcp_info->capabilities & + FW_MB_PARAM_FEATURE_SUPPORT_IGU_CLEANUP)) + ecore_pf_flr_igu_cleanup(p_hwfn); } /* Check if mdump logs/data are present and update the epoch value */ diff --git a/drivers/net/qede/base/ecore_int.c b/drivers/net/qede/base/ecore_int.c index 4c271d3..d41107d 100644 --- a/drivers/net/qede/base/ecore_int.c +++ b/drivers/net/qede/base/ecore_int.c @@ -2681,3 +2681,35 @@ enum _ecore_status_t ecore_int_get_sb_dbg(struct ecore_hwfn *p_hwfn, return ECORE_SUCCESS; } + +void ecore_pf_flr_igu_cleanup(struct ecore_hwfn *p_hwfn) +{ + struct ecore_ptt *p_ptt = p_hwfn->p_main_ptt; + struct ecore_ptt *p_dpc_ptt = ecore_get_reserved_ptt(p_hwfn, + RESERVED_PTT_DPC); + int i; + + /* Do not reorder the following cleanup sequence */ + /* Ack all attentions */ + ecore_wr(p_hwfn, p_ptt, IGU_REG_ATTENTION_ACK_BITS, 0xfff); + + /* Clear driver attention */ + ecore_wr(p_hwfn, p_dpc_ptt, + ((p_hwfn->rel_pf_id << 3) + MISC_REG_AEU_GENERAL_ATTN_0), 0); + + /* Clear per-PF IGU registers to restore them as if the IGU + * was reset for this PF + */ + ecore_wr(p_hwfn, p_ptt, IGU_REG_LEADING_EDGE_LATCH, 0); + ecore_wr(p_hwfn, p_ptt, IGU_REG_TRAILING_EDGE_LATCH, 0); + ecore_wr(p_hwfn, p_ptt, IGU_REG_PF_CONFIGURATION, 0); + + /* Execute IGU clean up*/ + ecore_wr(p_hwfn, p_ptt, IGU_REG_PF_FUNCTIONAL_CLEANUP, 1); + + /* Clear Stats */ + ecore_wr(p_hwfn, p_ptt, IGU_REG_STATISTIC_NUM_OF_INTA_ASSERTED, 0); + + for (i = 0; i < IGU_REG_PBA_STS_PF_SIZE; i++) + ecore_wr(p_hwfn, p_ptt, IGU_REG_PBA_STS_PF + i * 4, 0); +} diff --git a/drivers/net/qede/base/ecore_int.h b/drivers/net/qede/base/ecore_int.h index 041240d..ff2310c 100644 --- a/drivers/net/qede/base/ecore_int.h +++ b/drivers/net/qede/base/ecore_int.h @@ -256,5 +256,6 @@ enum _ecore_status_t ecore_int_set_timer_res(struct ecore_hwfn *p_hwfn, enum _ecore_status_t ecore_pglueb_rbc_attn_handler(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, bool is_hw_init); +void ecore_pf_flr_igu_cleanup(struct ecore_hwfn *p_hwfn); #endif /* __ECORE_INT_H__ */ diff --git a/drivers/net/qede/base/mcp_public.h b/drivers/net/qede/base/mcp_public.h index e9f3350..2ee8ab5 100644 --- a/drivers/net/qede/base/mcp_public.h +++ b/drivers/net/qede/base/mcp_public.h @@ -1797,6 +1797,8 @@ struct public_drv_mb { #define FW_MB_PARAM_FEATURE_SUPPORT_EEE 0x00000002 /* MFW supports DRV_LOAD Timeout */ #define FW_MB_PARAM_FEATURE_SUPPORT_DRV_LOAD_TO 0x00000004 +/* MFW support complete IGU cleanup upon FLR */ +#define FW_MB_PARAM_FEATURE_SUPPORT_IGU_CLEANUP 0x00000080 /* MFW supports virtual link */ #define FW_MB_PARAM_FEATURE_SUPPORT_VLINK 0x00010000 diff --git a/drivers/net/qede/base/reg_addr.h b/drivers/net/qede/base/reg_addr.h index 7ed26fc..b82ccc1 100644 --- a/drivers/net/qede/base/reg_addr.h +++ b/drivers/net/qede/base/reg_addr.h @@ -322,6 +322,21 @@ 0x180820UL #define IGU_REG_ATTN_MSG_ADDR_H \ 0x180824UL +#define IGU_REG_LEADING_EDGE_LATCH \ + 0x18082cUL +#define IGU_REG_TRAILING_EDGE_LATCH \ + 0x180830UL +#define IGU_REG_ATTENTION_ACK_BITS \ + 0x180838UL +#define IGU_REG_PBA_STS_PF \ + 0x180d20UL +#define IGU_REG_PF_FUNCTIONAL_CLEANUP \ + 0x181210UL +#define IGU_REG_STATISTIC_NUM_OF_INTA_ASSERTED \ + 0x18042cUL +#define IGU_REG_PBA_STS_PF_SIZE 5 +#define IGU_REG_PBA_STS_PF \ + 0x180d20UL #define MISC_REG_AEU_GENERAL_ATTN_0 \ 0x008400UL #define CAU_REG_SB_ADDR_MEMORY \