From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40051.outbound.protection.outlook.com [40.107.4.51]) by dpdk.org (Postfix) with ESMTP id AC95D1C01 for ; Fri, 27 Jul 2018 04:31:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yeKrZXxPCTT1hxKHnbahXQncLK9kN93RKM7GEcT6Lyg=; b=CXQm82xpZuj8KVbkiFHrnl36YpySQ048OfJqF/Aug4ohp5Clac2rhuelIZYqXg5hvb31eI19xxWjr812IEAhxeX9XVhAqOSB35uSMALRvlckdU8MyVo3Iv3A2pma2b56I24trDrY72/W5yxGR2s/pO9X9Nf6aE9PhHPNyOafrZQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (209.116.155.178) by VI1PR0501MB2046.eurprd05.prod.outlook.com (2603:10a6:800:36::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.20; Fri, 27 Jul 2018 02:31:23 +0000 From: Yongseok Koh To: Rahul Lakkireddy Cc: dpdk stable Date: Thu, 26 Jul 2018 19:30:59 -0700 Message-Id: <20180727023108.38699-1-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: BL0PR02CA0084.namprd02.prod.outlook.com (2603:10b6:208:51::25) To VI1PR0501MB2046.eurprd05.prod.outlook.com (2603:10a6:800:36::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 57be4a4c-14df-4372-9700-08d5f3690c61 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600074)(711020)(4618075)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:VI1PR0501MB2046; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2046; 3:4ipm0lO7zU+V8+MPOiIcGl6EVRS0y862SKqByrjZEJbHDqnTT8EheUzqHlKMQ0Geq0poAb2xiwYE/ZwUeo4EpY2TNJ1ATd/DmQPU0AwfOIEwYL6dcXqUozKPNHnjGkI42DmrUkRaXjcv12S81u6QO2wvqL1AA1nlnPaWeeWYkiEYvb6+cI1qssMEpg3av3ur1NxTyet51F1ywz0o30tByaCLyOxhZAHZYUqtR7HqfrYTOdX6IaxOzi3S3I/IXMS6; 25:1P/U+z3ojmLcAMBqlFdhgCC5KtcUogfA+9xx4j7/52AeIBq3nWbplUzfUcZADTh1Dq4dgsNbpCkA2TeXRe6ULo+5SJE5jR0FgklpX1140SU1fSfEeX3UjQa+1It4Zb3prTXF6POJCuJ2AHkwXFR9CNkyglRasqf+p39c0hsX6P1L4MqkgCu85bZe/FfXZgqXXqFYX9lFOmeqgYoQmm1n/8y/aZ36S0f5CCoDosdHsmLy5zKR58RnhnQG30qtTHV9vSZIjZ8mpRds4EUoyKPiZA+ek3vzrQn0KPezdIpoDlPpSnmfgTuF1ncUzvfW6pG36sTCWwNywSqSF6FqlnIncw==; 31:TYKBJI8MLQVbxxuO8wZqRtdiqWF55B0iPNPW6348g853VCDtJBw1jp4TugTMKnxC89PE2zJbpJpX1ham1HwxQKO8ZEs1ROHa82JYXg9cBwPf1CjibJx2XEGqvGRs7wZYvYU3T8NVqLGKcqQUmVO1A9HAAs5K9Chmi9iUq9Y7U2QoLJBHHxJuw9xZJZbi0fiZaGNaOlihSzqPR+DLLf74FiBNcacADwsNk/xqt37NVqQ= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2046: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2046; 20:eHbhVxWTTjvIjS4dMpd5N9ll1LQxqMbGlr0ZPu5gdnmIKb3j83MHhE9o0jocAGHyi8EwTRiYRfKYnGIrrfbz3OcQqcJxif7JM20H7HYefRCdexNY+1MluCe0JGFO7b968s+U24lpCkChhUKHJhyb4dr31/5G5EcODlSw6bA+m8xwHz/CfovH+yTrA3+URiVpwCw0XSL2vs6PbxiBWGRw+FtOiQyYLhyL6w7dZVT0SGq6z7XCHUVK/59UX5NvzN2GENWCx2QlMbivm3w3dqPMU2qAl1o8YdLRBMbJPB0nYIRUIKTybZhGDW21COCZexzmXuwNdUYyhL1eKkTsUNmijtwNTfXHTvnX9v+Daa21iWQ6VIE+7LvWzN8FvgKMtmgbdLcdw6QQKoYmcWDfJ9TVy/MZPl+1IIiXyfwZYArYj0DKai7dByOB8mmEyrslz7ApJuiC/qWMspKrDcgV62ADGY0F6d3T8OXwO5MtrIHBQxo2Ir4vYAv/ERsBCmZRLucP; 4:RNXsjmUDMzjn4utBYs1MOdPNe8KPAbbQ9LxDtAs+zjJyB7qMjMYdQYdOsj22f8DcMBVod8fp5jpWeO06FXeCL5qqXUFFMn82D5QejH/Vt+Eyjo1nhduk8uAg6ASxDEBpWcNKLr8AqM5Y1FPJmMWihJqHVDt5BNpuagF3L7qa0OLlSbQY8Weaacu9gjGD+apTIhyfbgc8a2FP5cRdtWzc9sl2TCx4HmVZilJ7anMYdXZ+q0zOpfMhy9RRjPkkkJqqLFGlfDDn94FIc6RsGJ7sqQ== 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)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231311)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:VI1PR0501MB2046; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2046; X-Forefront-PRVS: 07467C4D33 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(376002)(366004)(136003)(346002)(396003)(189003)(199004)(69234005)(28163001)(186003)(53546011)(26005)(86362001)(51416003)(16526019)(3846002)(6666003)(8936002)(36756003)(386003)(7696005)(25786009)(52116002)(97736004)(486006)(53376002)(4326008)(6916009)(14444005)(2616005)(476003)(5660300001)(69596002)(956004)(966005)(81166006)(81156014)(55016002)(7736002)(16586007)(47776003)(106356001)(2906002)(305945005)(48376002)(66066001)(105586002)(53936002)(68736007)(6116002)(21086003)(1076002)(50226002)(6306002)(478600001)(50466002)(8676002)(316002)(1720100001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2046; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0501MB2046; 23:XU9jkFHa/8/vCCKpdQZByh8c7y5GcHp8//R6rQ1?= =?us-ascii?Q?wwRjRcwUzZRgblVTCnVaBqBpx2hSCkm7DABLaYZmZ2HYXVtaM7X2mKdBqsE5?= =?us-ascii?Q?wg5rxsWve/oJrs4UMh+IwMk1QeklVSwT6upaOSSgNPqUT7THYgDJnqR2VcIH?= =?us-ascii?Q?LeuR57p5BNsjw2YI+ScwOpRVkmKhH+SQUybZtx53gmQhhZDQxCAY4EXX1DRw?= =?us-ascii?Q?h2fZvdG3vDlTs+v4osSM6NfDjiAtrbrRqr8xItkHVzsZqWW0G4Up/vQiMYg9?= =?us-ascii?Q?x7F006bz8tesCVeDk/VaJKziHzDwCoMlEN8t7TbSXXeDZgs8uzTl/iNDmIR8?= =?us-ascii?Q?0R0cM+NICbe9B7y2C1+LQl7PwiXAVgj5ZQoESl82z1VGeXQgBJx7j1DozT2E?= =?us-ascii?Q?SVCxh+dHJHwB4nGtva2yL6MYThhGrIhU8s7mxo2gxF6wWABfIhhLgkT4tsi3?= =?us-ascii?Q?qCh5f9ux6N2cxTGc3wTQAd89Z2sd0jwXxn6jAgC2fPGLNQTA0i4utjtcRBpe?= =?us-ascii?Q?dvES8s6GHwNy2+7zyLWri7kMR81cZznUHAf30J7GKM3SNJcNOIDH2VBI5mTK?= =?us-ascii?Q?ksA6rzDj8jQE0Mwgu89fl0jfuydiJHcO1DKL+8YGgrBz2068nAtWJZkhj1XN?= =?us-ascii?Q?+OSoO5xyjfnILv2xWOQYEB5YABORAsxkQAtBXtQ4RdS+fDSfjKTSJY5BzR/e?= =?us-ascii?Q?D+9ywj5Zv9OqCYnht4Ngl72cref3ES0NhNn/wvVdXx3pEh5AYBOyY4NL3uFd?= =?us-ascii?Q?DRZxsFatCpb205IMJlxH3vnzJ6dAiWpQoRRKh/0EaHY/wdlrAmJ0YhJpzLU1?= =?us-ascii?Q?IJVKYvU6T2dEpO/v+VuAj3iGiuF4uquWslEwhcOosuZW+L+MmZh8/p34bkt7?= =?us-ascii?Q?5IoXQVz19cWXmeV6msYQ9Db77XJJg+Y8fG6X0fzTtLDco9PHl+CQ84CbfgMt?= =?us-ascii?Q?DQ2rBATsY0yHDG9lVSVkLGxt+yIv7xCg1sO0aN7DEfdpL4cXIACSrnH5HYk3?= =?us-ascii?Q?wa+jYkRD+nWFGLvDe+49V6hmoYiDEpUDBjI8vE8GJ5vd3/FNbH71DXkDB4qY?= =?us-ascii?Q?VgZzG5ooH28lahC0QPSR409Kxbr+ouXWQsXkkchMZpwXhBZy2eXbpl/g/R56?= =?us-ascii?Q?xkrEPa+Rck6pO2Q4Z3RVuSZTXkwiDv4tzldHsUwXj0pWPyrNwyABML3xTVM5?= =?us-ascii?Q?kc2u/LmTUpM9BehqDAdj13MK1ciPkcxT625k+ddrmu0B1uV+SHpZtvj54IJy?= =?us-ascii?Q?XktNvCg38PAwlwaCEhdigOsZb31tDmNVAXB+iRKQm1g5wbEBo+VX2HqISzNq?= =?us-ascii?Q?LG/CCztxaRGd5qKobNN0NAfeeJvY58HenGYUwc5KzFnVg?= X-Microsoft-Antispam-Message-Info: LUQqP7T5LLvJcrdsRcfwExQXgvtXnQrdJbjs0ceZcnrN3mUltJmi4cEYUtMocptZfJAE8dJFJDLLw0ONcXmkjXUzEgS90M7e0+B+vWTrhTW+BNQDzQoVcJuGyfd39VpHV87thkU+n7M8GDZvXqC/gjrngsrV+jVnc3TvJ9+jjTQYM64yTDlVoi30GnCIDXNRFpLNAxq5Xsw1xtWxo9ygLvw2+KyqfKcT/dDFTeyHdvmQsa5+4OXrXfpLmibJ5n+j8jXxuOnFRHYPwAzd5HTMjFgZjYHnpW0/sXzZ5AGjRpRKVWp//r1dyXNjsroIJnChQXFWzbGAZur3JOdfK803pP/VUQMKXpCKGtbt30qf67w= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2046; 6:iNoTw7bmSzPMzxa2VbjLlRyo3AbRcKkt67CVZsnFTqaeOEow8hJxpnRsciLeBKDHKgrf2n6WlXEdH19IjGMYRJ/p/BWOofKGaW9WiuLZ2eweTpRS37h++/r3gQxzy08/mTROgcCrvCcAm/qT+aF/hKSUZVdKjKewv+1WcZJsz5BVOW28g1T3tiRz0G37q6zfkNQOBjuwhVbOvvX3AMh1Trq/TociulDhPLOlJTnbBxpV7yru/CywtgNrkQ8SUiH5RXNDZ5CtXyzTQsPJ1FsWWenplVdPQH7ZKMVlqdtN9YJdmgiyNNPPM6Q92bJ6TvYhVYYB2GJDGsSs7Bi/ke7mSxoz/LPcFzrv8r3LpIG4uyowaABzABx2Lbpav7ubv8KVhr7Uxktc1ahZrZXPrrn+bpunZ/cBuOjl4dlspRChaJRa4ACtniRv0+LwFeR7ATFuwyTv/Ifi16PQPzA6c6hFZg==; 5:i9oxM86MC1/eoRzbz2jazQTOS1PYkHRFIqNtJItRqOqkzrq75aQG2AbuKRZuLrNPs/xP93cBwanYOMfCmikwUF61idzuZd3eevgTdDIm8YWVZzxG2evZ6j5YdVXSmky98YwN6Uj3v9e1xf5ddMSYME1PtRjA/nTCe0HdF4dHChk=; 7:S3W7W6bZFtADg15eR0+1Kz4yINY8HFdTFI9uiGaE7GbhJgInzT+NpLkCFjo6SDpI09tuElSNmLXPQeG1XG4jDr7yXkfDqAKJuu11Aw2TxKQNw0WIA5XfQ8xMIhaWTC94KdthqNxa35KPfv7mbALtE4v3zVZFkyRsqMExdP6nV1K72q9IDx0KVphgdjjvxFSvItqQYEN/ApEf1by/lo5tKaQZuU4GBhwy3k+adf8I9i5qFO99pYXxnWDypHLV+0VQ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2018 02:31:23.9036 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 57be4a4c-14df-4372-9700-08d5f3690c61 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2046 Subject: [dpdk-stable] patch 'net/cxgbe: fix init failure due to new flash parts' has been queued to LTS release 17.11.4 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jul 2018 02:31:27 -0000 Hi, FYI, your patch has been queued to LTS release 17.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/28/18. So please shout if anyone has objections. Thanks. Yongseok --- >>From bcca14b169feeda4d6dd750084afafd5a263838f Mon Sep 17 00:00:00 2001 From: Rahul Lakkireddy Date: Mon, 9 Jul 2018 21:13:23 +0530 Subject: [PATCH] net/cxgbe: fix init failure due to new flash parts [ upstream commit 9726c51df05037e505ffcb4aa2e6d4f0385c3ef1 ] Add decode logic for new flash parts shipped with new Chelsio NICs to fix initialization failure on these NICs. Signed-off-by: Rahul Lakkireddy --- drivers/net/cxgbe/base/t4_hw.c | 97 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 84 insertions(+), 13 deletions(-) diff --git a/drivers/net/cxgbe/base/t4_hw.c b/drivers/net/cxgbe/base/t4_hw.c index 282e2e625..c3d46e021 100644 --- a/drivers/net/cxgbe/base/t4_hw.c +++ b/drivers/net/cxgbe/base/t4_hw.c @@ -4242,9 +4242,8 @@ struct flash_desc { int t4_get_flash_params(struct adapter *adapter) { /* - * Table for non-Numonix supported flash parts. Numonix parts are left - * to the preexisting well-tested code. All flash parts have 64KB - * sectors. + * Table for non-standard supported Flash parts. Note, all Flash + * parts must have 64KB sectors. */ static struct flash_desc supported_flash[] = { { 0x00150201, 4 << 20 }, /* Spansion 4MB S25FL032P */ @@ -4253,7 +4252,7 @@ int t4_get_flash_params(struct adapter *adapter) int ret; u32 flashid = 0; unsigned int part, manufacturer; - unsigned int density, size; + unsigned int density, size = 0; /** * Issue a Read ID Command to the Flash part. We decode supported @@ -4268,6 +4267,9 @@ int t4_get_flash_params(struct adapter *adapter) if (ret < 0) return ret; + /** + * Check to see if it's one of our non-standard supported Flash parts. + */ for (part = 0; part < ARRAY_SIZE(supported_flash); part++) { if (supported_flash[part].vendor_and_model_id == flashid) { adapter->params.sf_size = @@ -4278,6 +4280,15 @@ int t4_get_flash_params(struct adapter *adapter) } } + /** + * Decode Flash part size. The code below looks repetative with + * common encodings, but that's not guaranteed in the JEDEC + * specification for the Read JADEC ID command. The only thing that + * we're guaranteed by the JADEC specification is where the + * Manufacturer ID is in the returned result. After that each + * Manufacturer ~could~ encode things completely differently. + * Note, all Flash parts must have 64KB sectors. + */ manufacturer = flashid & 0xff; switch (manufacturer) { case 0x20: { /* Micron/Numonix */ @@ -4314,20 +4325,80 @@ int t4_get_flash_params(struct adapter *adapter) case 0x22: size = 1 << 28; /* 256MB */ break; - default: - dev_err(adapter, "Micron Flash Part has bad size, ID = %#x, Density code = %#x\n", - flashid, density); - return -EINVAL; } + break; + } - adapter->params.sf_size = size; - adapter->params.sf_nsec = size / SF_SEC_SIZE; + case 0x9d: { /* ISSI -- Integrated Silicon Solution, Inc. */ + /** + * This Density -> Size decoding table is taken from ISSI + * Data Sheets. + */ + density = (flashid >> 16) & 0xff; + switch (density) { + case 0x16: + size = 1 << 25; /* 32MB */ + break; + case 0x17: + size = 1 << 26; /* 64MB */ + break; + } break; } - default: - dev_err(adapter, "Unsupported Flash Part, ID = %#x\n", flashid); - return -EINVAL; + + case 0xc2: { /* Macronix */ + /** + * This Density -> Size decoding table is taken from Macronix + * Data Sheets. + */ + density = (flashid >> 16) & 0xff; + switch (density) { + case 0x17: + size = 1 << 23; /* 8MB */ + break; + case 0x18: + size = 1 << 24; /* 16MB */ + break; + } + break; + } + + case 0xef: { /* Winbond */ + /** + * This Density -> Size decoding table is taken from Winbond + * Data Sheets. + */ + density = (flashid >> 16) & 0xff; + switch (density) { + case 0x17: + size = 1 << 23; /* 8MB */ + break; + case 0x18: + size = 1 << 24; /* 16MB */ + break; + } + break; } + } + + /* If we didn't recognize the FLASH part, that's no real issue: the + * Hardware/Software contract says that Hardware will _*ALWAYS*_ + * use a FLASH part which is at least 4MB in size and has 64KB + * sectors. The unrecognized FLASH part is likely to be much larger + * than 4MB, but that's all we really need. + */ + if (size == 0) { + dev_warn(adapter, + "Unknown Flash Part, ID = %#x, assuming 4MB\n", + flashid); + size = 1 << 22; + } + + /** + * Store decoded Flash size and fall through into vetting code. + */ + adapter->params.sf_size = size; + adapter->params.sf_nsec = size / SF_SEC_SIZE; found: /* -- 2.11.0