From patchwork Tue Aug 22 19:46:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 804639 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="Wo0hV7Nb"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xcLf21Lvgz9s8J for ; Wed, 23 Aug 2017 05:46:17 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752578AbdHVTqP (ORCPT ); Tue, 22 Aug 2017 15:46:15 -0400 Received: from mail-cys01nam02on0089.outbound.protection.outlook.com ([104.47.37.89]:32713 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751739AbdHVTqO (ORCPT ); Tue, 22 Aug 2017 15:46:14 -0400 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=Y62Bhh6sy+Xi1CYrH1mqkCVA/IedohvS915fvjVI21Y=; b=Wo0hV7NbCYm/UrxBkupmrSmR1oLW9Dr3pM7bqYiTLSI/ReaZVuZjbNhvzBrqGw5vhfz0bJTqnDxdBfMdjQQGog6bn3FCUjzouMADNP3PDvvYqUyV7zgbp9roXMuvhcZYDb4jMB3ORWlfy8omXk7AI77JZ+6ssp4RZSO+fKQG/Vk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by BN6PR07MB3170.namprd07.prod.outlook.com (10.172.105.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1362.18; Tue, 22 Aug 2017 19:46:08 +0000 Date: Tue, 22 Aug 2017 12:46:37 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com Subject: [PATCH net-next] liquidio: change manner of detecting whether or not NIC firmware is loaded Message-ID: <20170822194637.GA6875@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: MWHPR04CA0026.namprd04.prod.outlook.com (10.172.163.12) To BN6PR07MB3170.namprd07.prod.outlook.com (10.172.105.140) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 27e34c12-3b04-4e9d-3928-08d4e9967120 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BN6PR07MB3170; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3170; 3:mNPcYP3EEeQ7HMeiTrAFinI+PDPrfNY+M7OwIp89xuQOspjlyEyTB0XSg3GTRN2Hco0pUu9n7r/GqQDoGg8TXLbiHRHdNLmrRTwEouPtuyLPBC0ewzlnpEdUzqvZWUIhzImDAnw5av9QKxJ92+XnfQYThfH4Net8HDo8in2Gu8EcdtVL7YtDr1vlLCo4Fb7r3JukHYZ1OSSUDon9uEM/jWfW1fSIhYKQrRTY7StaYujpU+IdOBAbUAA2U2dMMfD7; 25:WYKuYmB77swcJr2Yp7dA5j//XZSlvqhT+hroqWkmfertu6ozyMhqgyxlJgEBeMluUAIT70M31QYOOEOplpDwBksXdcSVL3iGUehM4s3xdRT/97s3YaX64b0GLk2dL3/U+Xa5ZYhLnZcRJXKk9rVVkuT/PtE1F7kRlcj4lX/5Kl5s22MMPyc101Kel2VYbop/6PnOVzK+dX49P9EnZz8DuaMtF/gh7jC1cLKHKP+kgewJQ5o3IXbUAuA55NY44DfX2XW34M8MuobHzWWXisUQd8BbMOzL3l9jInIcpUgI9E8/7WV7J/tp8TeRjRtRRGQEYnKpep4QpylzrmslSXKBUg==; 31:31lIEqQs9Zx4iyJfHUZsu/g/RFpLnwMIEFWuJ2DQQIOTgCOkRv8asF1APt619LXt/X5u0WqCE0cl72V2+F0BjrEZDAm+CHT2NPNQhjG8dZNB208AF+kK3jMeie5IQfBum6q3qbqt8JwaKtRuS0o8ViWZKtBG0YzlGlfpT4HfP5yM/vWXamwouYZd1ZzbpnGmg87D0oRnJSZE2XZXy5rgDDD9I9Jr05sh4lr/WLd2j3E= X-MS-TrafficTypeDiagnostic: BN6PR07MB3170: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3170; 20:ugBOUOHTUxpsU7qC+Oa+1Z2WfvEQwUCRNWDt4JelvElJgJka0K27UhmCVrTvtOZmCzrWIw2VK8Y7xxg9JAoSc+xMPFS8xachUbWdG9hNhMw8ujQwJhzFobqxKx16nJIeL7Z+EJbcFlF+iEHDb5hNPU/LDp6qo/9faF7xukiKq83lnYPsAhPF9vWo9xf3lErc3mpUoVe48quuyBhUL/HPZEuUPvDy67VbfYXKJA/qfgZbIEtHe5U71HkfDifQZEk0o2KCFgS8v+B5k+bHFX5NG/bLEKdw5i6HMMmHXi80nwFmHdtPTblgUmbzRbxPGkVW0Fd2e7Q0/kj0njeg4Ce/gtFJ6DZt2KGErnmn6qw+r3ngZrNQuKuRJzWbagx+jZV5sIZsrkVZDIYzFZgqm4kpTV0tz0zsasUc0Mfe/ijH84rNg48WhEybz/hJ2U6s7x1+OdO/mao2RSORieX9oitkcoDUrvWcptDcauYTLHT1kSLaCs+ERl+z3iFpWgl+FYUp; 4:WS0D2lspYT/Z4XhHvGVbprYjBFJnsEWrCli6IkRuqesKO+kRt36DY64SwN1AS6PAaBVybgnjv3+vYEDXzuYCFES5SSzx3zo3lxtISNw2I8QJHp3Cu6OOKRK2BsbW85R51TsperFFNj5PNohcfvbBYxP1pgtNqOxd63pjJLBic/Ete9u82pXtP0r8mbWTWV7YS3yS9ayb0p4dnKqx9sbgb+142aL2Il+/s/GIZSiLuqH6GmIC0pK5BM6eY4nQ2UHL 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)(601004)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(6041248)(20161123564025)(20161123560025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR07MB3170; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR07MB3170; X-Forefront-PRVS: 04073E895A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(7370300001)(6069001)(6009001)(199003)(189002)(7736002)(8676002)(76506005)(2361001)(4001350100001)(2906002)(101416001)(478600001)(2351001)(305945005)(6666003)(54356999)(97736004)(68736007)(72206003)(105586002)(50986999)(1076002)(107886003)(42186005)(110136004)(7350300001)(53936002)(23726003)(3846002)(33656002)(83506001)(66066001)(5660300001)(6496005)(50466002)(47776003)(81156014)(6486002)(6916009)(25786009)(86362001)(575784001)(6116002)(106356001)(4326008)(81166006)(189998001)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3170; H:localhost; 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; BN6PR07MB3170; 23:LlM+th3O/Fj8QDVlJ3u06LeH2MgtuWb1zYQ+5TCMm?= =?us-ascii?Q?qMTQOELsVzFqTkGXC3HOHW6jVH9VMAxRH2szouutUClNwlEPpxri3IptgZl8?= =?us-ascii?Q?FpQccLpTcoKVjbgayLzKp+bg3u+/0nBY6UtZhWvjFalxZkgqVAFqCjohUA2h?= =?us-ascii?Q?nrWvy6tbsdmT5b/LN8meHER3I6vES49etGoaCnsWNUA1F14tmOk164GV/jwr?= =?us-ascii?Q?/6NAt+LzjwyK293gxP1dY7TXjwUq7I5V7to2Fr03GmYB/1xpE2OMSY7In4HK?= =?us-ascii?Q?+r7tA4o1upAK0UqJo949yJWu3CPlD/YZgzosCVfD+ucAjaz5DBI2uQn3KUIM?= =?us-ascii?Q?fhQB0h5I5iguIvKIDbl+52f80kQHHn75+v3dUm6XaHUeZ39dufQlQzzlMNGZ?= =?us-ascii?Q?rnqCbbAck8LluNvOxajX7oL/ekRqQwsxRtP/dcc1YuiL89RSmXU8em5yVF1j?= =?us-ascii?Q?3lj43FEaIBV0gUE06mElKBihOScQOHhzrovdby0ONhnDiNOMm4GT+/gTSBNh?= =?us-ascii?Q?UD3tkVAsjTFcOVk5OmJKyBKrDV0PpBv/1obIdJlnmXR8RON0qTVPaPMKAyOv?= =?us-ascii?Q?qyBOBMI4SgoxQq4FkQhk5RS5T7e6847K8XqYk3RJS6QhUDPapZC7jDHuZet6?= =?us-ascii?Q?rAwXddfJEniE3Zs1cV6GLb4LXaR2HRTO7RaBD86B6sa5kbPwIsLfTMv7spIA?= =?us-ascii?Q?BFtZ8ult53nNrbUQXvfN508ZVK/X++nUDiIukTIascmOOLTQY+8PQ4RB+J9i?= =?us-ascii?Q?IgkJn03Sw4F9KXKdN053monTxsFiRbeqvGIUw8PNUsO5YbRG0Nkc8OUVXu50?= =?us-ascii?Q?Lj1TbmW+hwrsfRQQNJAK8hEgixJIk03pO0q4TwBvTMjKC6XdhrAi89GQDhSe?= =?us-ascii?Q?bdERRQZsY2PGJsGYCqQXJE/79V5aF4oHW2+Hm4biZkUekUNm5QzU4FVw7YuF?= =?us-ascii?Q?2FjUqqnFtsmPO7SXvfMwJ/N+eR0BDoOdrFM8DQFdTyK8hr8QdlkWR7MvUoMQ?= =?us-ascii?Q?WLxU+rP/x8fkcfjXFm6jVtKB7kmqKPVDRHCjTvXp470tkK+Isdj8pccEo2Dm?= =?us-ascii?Q?3HTYbLbqW6XuVgbYkP4/utVFo3zVQubjYrKSEJfA3sK0eXvugaKyXZrzkprZ?= =?us-ascii?Q?U9xnrKAaHmrOJd3D/gg6d46Y5TgBW54/jAd4kcQYzsiB6Ta9vJkFLdGXkfNK?= =?us-ascii?Q?jUAvxb6gQ2NIvhRnh446p7coLxzJWwtglnZ?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3170; 6:BIyitNZQ8vFLCnSWDtKsN4/UwvnWhLjfZLGRxGYB9havMhp7wVBV5fFflMhBD09gzhT+4Y6XSR16pnXL+PCEkrERtp2VflYrwzNE2Nmy3wH8hi1wOh/CKYMILrcDKKU5LerlESsR390NTE8aHaGiuCetWPe+o60v72+VTeC3g94Dk5PB+A40EE1LzPfVhgYyK65c7XtlkeYBhdYlAUg+jEBxum/8z0sX818At5w2AH9ULefpheIomH5I8+b+NOokzvwwPFA5OXlxz0V6XH0ZW/n689Gi1bEfdQ9tgwX36rI2yDQlR6ehdi9IpxOluEpkWbwuPgIPZaVWv2ShPqiuxQ==; 5:YdK3xihentpVrBgE9H7fMkLXH6Nxfa4SD5N46xmbaz1PCPgQbV/R1PlfCSo0g2cshmH1r6+fIZpzxJhyD8sEQcVRO3X4o5L9Uz95ckiI5xjd+vmarJYB3EutMke+HXioNgOf9WMRJ68kBnLuHGib8A==; 24:DaVxaYTZgRdtuBaaWXyjMFCQpLntGaEWpM1OtvcmGky0klud732mzmUrHPWv7ZlgoWdhssgcIX0BFmfW9mWLuy6GJ8ZDBRpJ9uvxK7+WEa0=; 7:KnnkpjbicqoMQ104QYBWlyk9DPka6w+vRXjgcVsdm3C7/osCUXZFKvbAHMbymZXu9CawLIYvE3uvpxNhf6bphvPJu989tbwHW/OJCkQhuh849whzR+jnBINw+GON+vstZgwfHolwnkbdzvV3VGdnvLp2KRCRAr1m0ft050Cmevok70Zlo5nOkoW7K7P76Bun5ahuq38nzWmx6zUE6l1Cc4WEFAPeNlWwC6zf2U2eZ9Y= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2017 19:46:08.8073 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3170 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In the NIC firmware, the 1-bit flag indicating "firmware is loaded" moved from SLI_SCRATCH_1 to SLI_SCRATCH_2 (these are Octeon general-purpose scratch registers). Make the PF driver conform to this change. Remove code that sets the "firmware is loaded" flag because it's now the firmware's job to do that. In the code that detects whether or not the firmware is loaded, don't just rely on checking the "firmware is loaded" flag because that may cause a rare false negative. Add code that deduces whether or not the firmware is loaded; that will never give a false negative. Also bump up driver version to match newer NIC firmware. Signed-off-by: Felix Manlunas Signed-off-by: Derek Chickles --- drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c | 15 +++++++++++++-- drivers/net/ethernet/cavium/liquidio/lio_main.c | 6 ------ drivers/net/ethernet/cavium/liquidio/liquidio_common.h | 3 ++- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c index 4b0ca9f..96171cb 100644 --- a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c +++ b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c @@ -1405,8 +1405,19 @@ int cn23xx_fw_loaded(struct octeon_device *oct) { u64 val; - val = octeon_read_csr64(oct, CN23XX_SLI_SCRATCH1); - return (val >> 1) & 1ULL; + /* If there's more than one active PF on this NIC, then that + * implies that the NIC firmware is loaded and running. This check + * prevents a rare false negative that might occur if we only relied + * on checking the SCR2_BIT_FW_LOADED flag. The false negative would + * happen if the PF driver sees SCR2_BIT_FW_LOADED as cleared even + * though the firmware was already loaded but still booting and has yet + * to set SCR2_BIT_FW_LOADED. + */ + if (atomic_read(oct->adapter_refcount) > 1) + return 1; + + val = octeon_read_csr64(oct, CN23XX_SLI_SCRATCH2); + return (val >> SCR2_BIT_FW_LOADED) & 1ULL; } void cn23xx_tell_vf_its_macaddr_changed(struct octeon_device *oct, int vfidx, diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index 0eea6a2..e786ac8 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -4098,12 +4098,6 @@ static int octeon_device_init(struct octeon_device *octeon_dev) dev_err(&octeon_dev->pci_dev->dev, "Could not load firmware to board\n"); return 1; } - /* set bit 1 of SLI_SCRATCH_1 to indicate that firmware is - * loaded - */ - if (OCTEON_CN23XX_PF(octeon_dev)) - octeon_write_csr64(octeon_dev, CN23XX_SLI_SCRATCH1, - 2ULL); } handshake[octeon_dev->octeon_id].init_ok = 1; diff --git a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h index 18d2955..1e5655c 100644 --- a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h +++ b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h @@ -28,7 +28,7 @@ #define LIQUIDIO_PACKAGE "" #define LIQUIDIO_BASE_MAJOR_VERSION 1 #define LIQUIDIO_BASE_MINOR_VERSION 6 -#define LIQUIDIO_BASE_MICRO_VERSION 0 +#define LIQUIDIO_BASE_MICRO_VERSION 1 #define LIQUIDIO_BASE_VERSION __stringify(LIQUIDIO_BASE_MAJOR_VERSION) "." \ __stringify(LIQUIDIO_BASE_MINOR_VERSION) #define LIQUIDIO_MICRO_VERSION "." __stringify(LIQUIDIO_BASE_MICRO_VERSION) @@ -106,6 +106,7 @@ enum octeon_tag_type { #define MAX_IOQ_INTERRUPTS_PER_PF (64 * 2) #define MAX_IOQ_INTERRUPTS_PER_VF (8 * 2) +#define SCR2_BIT_FW_LOADED 63 static inline u32 incr_index(u32 index, u32 count, u32 max) {