From patchwork Tue Aug 22 01:19:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 804220 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="H2aK1s1j"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xbt4s6Xhdz9t2R for ; Tue, 22 Aug 2017 11:19:25 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754466AbdHVBTX (ORCPT ); Mon, 21 Aug 2017 21:19:23 -0400 Received: from mail-bl2nam02on0077.outbound.protection.outlook.com ([104.47.38.77]:37088 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754252AbdHVBTV (ORCPT ); Mon, 21 Aug 2017 21:19:21 -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=PQ0dwy/YvrijoMWbAXBGFX+nvSL1/Y0HSLicfvMeiv8=; b=H2aK1s1jOpHr2uGsRy4WXHsqQIYa3ZYBC/Z4dyAfBKYZu7Co7VG4LKIhFnks2j1bSJHlL/llcvaG8uzPTmNxGsf77Sl2T+0RldVjG4SYWv6pUmAQRmqCUCkh4rd8drKNDJjqwcP8Xn2CHknZaoQSThDWHYQJLBz9m/TRvQAQJFE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by CY4PR07MB3173.namprd07.prod.outlook.com (10.172.115.139) 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 01:19:18 +0000 Date: Mon, 21 Aug 2017 18:19:44 -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, weilin.chang@cavium.com Subject: [PATCH net-next] liquidio: show NIC's U-Boot version in a dev_info() message Message-ID: <20170822011944.GA6393@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: MWHPR04CA0105.namprd04.prod.outlook.com (10.174.173.46) To CY4PR07MB3173.namprd07.prod.outlook.com (10.172.115.139) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ebdd0d32-8df9-4235-6bb9-08d4e8fbcfc1 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:CY4PR07MB3173; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3173; 3:L1CEs71pETwi9ojSXHDwqj9B5+HZIozEMso5eYwOYaYoakVsbQ5j/cQum7Sq0SeOUQAmHYyyVwouQelAaCast22Q55TlhRu0nGxnJRPujGkZPA0mqRO2vDo4lnxYaJQjBCcil0Kq+b1pVTXDFrVq7ZyqhwkCqUCXjZE/gUUuX69aI6qKAZ/o8vc5BF9OSxanEYa4gZ6c9AKYdSu/ajte1VOxRAhsA1ws9w54KDP7VeyeQJct5dwbttoz4ia3BXdz; 25:SQn+QFYZfCnCUJDjNrWWIClkk+Joe2R/LMP/cKOLTnjLJhXbh5Tf85k6HRgMenJSY/fA+nyaJaqFtJEfBsZF2N2RBDW27svs0t4iegpB6et6oXfyHi/XJEZqUJr6fo/+aBEdm8c7JWugaOC/cmGOCwbTeH6lbSHPVrdYBhCOkgb0wDDkt95jhR/lkxS5xhkWCvDQzhcXzX2L+1mtNmXqLeLdv0itj/fvIk2tIozNZACkdbdujLpdWLu7UsQP9HQb1go4Fp3tbvS3V+L0Vf0ZyrfF8NoW1b1ipJnFmBceca4QC2JbR1IgZrD2H4iXntlEDX5X7ZMsoLKfp6+TaO2Vog==; 31:zREY7J7G3IoQQmGTQ2wp2nxwCRohea72+HvjruB4WyIxI0ed3zRzp4qzo750Eu5QKZJw6YkSu5AsocWzGddw2p/kQ+YMxZej2CBc/8xbFEaGQ5xXliks+HFBHMZCPx+9/bl1FvrJQl1obkXKZX6mmo9YYmgEzaV3/H7eDyMT5J9vm5632oEJ2ZaeUUp30CDjwnlcZ2ejAelhL0W53vEYAuez5Cg3Xb4KtFxi0zCkiAU= X-MS-TrafficTypeDiagnostic: CY4PR07MB3173: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3173; 20:Jgy6Zptrp5JykIBNt6zM6qHhR/moPn7fMQ0dyC1L9oXQdpxLs+kzcHb+yYmt7XvWluPlGLD8WFSL+Inqirpb1xpLlgg0yPAlvq2OUDr1yjt6fOdA/UUplbwD7Q98nBKg07rwRPDnzb2KmhjJHpdZRGYjmIyJ4YYbXn8IyRAVdICeJSbB8Yi5jQagqSLJLlPvOfNCRKBRlMl93RfA41/YIl9NOOYt3xd/Q6gCTRKO7G2srx58t8j3H5B9wDrwdE4SkwiZ63OSBR4nJnXC3/DoJu6xLomzHqL1XqQU++s4+cVhDdV8xc0gvSOJzNIvzM+feqBUp9tuOOaG7KiFTRRZ78poMrvyXBjzE4cwKTl/Rr00XTtzFdOStKMJlhD3h/HjByutjckxT0TUc1DSeifoQWQDU9JljWYRhK8rPYaajXreCweWTeYQHwG0cURr+lRDoAz6UgqORtUnLkyuMwyPdAtVUdM4Npa+MOqe2Z1nkivCYOzC9NpwNsnOWW2XJvux; 4:bYs2Ex8UZEcUpyZ7JOAc3DqUDrVudoQAeStVVu+5abb3b2VV17SRP4xRDJkxITCPrSJh21kh3fKqU+6HAFgf/Wbke6opt1dQMM/BZNQz5kgjJuu1O0tIu31FrCIqoxsoHbjMR2u/80gdOjo25eNmqc/aTzk57AAmmt1vi3wMx4iDEV8S/6RCRPf8kxdVlvBnSK0wRywa/mMuxZHaIj0wunZVWqopr8QqiM2wHozjj0yUrIUVnCp0GfoNfUm5BdQ2 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)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR07MB3173; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR07MB3173; X-Forefront-PRVS: 04073E895A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(7370300001)(6069001)(6009001)(199003)(189002)(110136004)(83506001)(68736007)(107886003)(2906002)(6116002)(1076002)(53936002)(33656002)(6496005)(47776003)(478600001)(5660300001)(72206003)(3846002)(4326008)(23726003)(66066001)(189998001)(25786009)(86362001)(50986999)(2361001)(7736002)(97736004)(4001350100001)(305945005)(6916009)(54356999)(81166006)(7350300001)(81156014)(2351001)(101416001)(8676002)(105586002)(6486002)(50466002)(106356001)(76506005)(42186005)(6666003)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3173; 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; CY4PR07MB3173; 23:E7RdT9ZHaNFjuK0bJsAX4J9wlcu4UrRl7A4mRDjjV?= =?us-ascii?Q?E8E9KT76QZQ5nE629mrbMO80ykvc8K+8oxNNYNlNRxb5vfR8VCmIn8f++U9r?= =?us-ascii?Q?UxhqVW6PudMtewyzEJLXBLzmqw/lhgIL739SxJy6zEm6sAhzukZgZGuX1DL2?= =?us-ascii?Q?Fvj9Di5FEsjvttZv9tU13aB/TY+k/UUtrOzHqrTX9pGvwNovSxZcyTSvSUyW?= =?us-ascii?Q?VWcxkBuypR5arIMCOTq6NnM/dg/FI0KqmQyQY2SGShm7JPpBqJXx+YNVugdt?= =?us-ascii?Q?jUj6EVK48LdmZwZUH3XMHiFjU/7/k01PAN26hYOiG4j+7NAo/kgcae3cR3qx?= =?us-ascii?Q?APh/OSczEajY8wD5qz30CzwCoh1Yi9kYEwMEXqobIkN6/ODefWSNOxOnqm0k?= =?us-ascii?Q?ttF9Stn76+AJ+VThiAFYiuxk3xx/87zvoqqRB+2vOlR7jYNtuRaeg0FPdjTF?= =?us-ascii?Q?JUZ3sGxDNz0iYpIVEOj6GM9Fxqn7GY1Zg94na+WlVgST8A8INWr5NGUIJtiQ?= =?us-ascii?Q?qbT/eKigZeM+xTTVmN9QI61eFpU2XvqwiDdf37GMaATgZs1jZBifIPxWyVML?= =?us-ascii?Q?9ZRb7ujduMJbR4l0F+jV1aK2v8AMYjmid9nIQQZJCAKyo5DD+lrLPpd4stfC?= =?us-ascii?Q?H2t90xhbJb0taat+VQxPt8/1StlfzrDQ/FgnDD8k3oGKg9KUVZPQDfpfnGcY?= =?us-ascii?Q?gI3Gb3Wqk3agi072U3sfEtfpeG1bIzZj5xdbcVNtBjPg3EHvdzhr0vLLh/2x?= =?us-ascii?Q?4QeHq+kcvJM3pPBTSAD38r/8jNccYahBIRQwqLwSqL3/PCVIGVE22CgGu557?= =?us-ascii?Q?E3TKdL5QB85KvVpS50s0Png+rexFcTMTAzIZA/acEz0B5T6a7Dl12PpaIx1U?= =?us-ascii?Q?PrOJu+FzFKpbJ/agIYBbpiCs4StpYDcRahtMpYLadX8JuMBjhtqYlSxM03Ji?= =?us-ascii?Q?FEFcGY7ohuE0MXd17hlqMWMT6mBND4Spt2UK/u7VIHd7IqhPqQG9a1X7JOZa?= =?us-ascii?Q?XV3D3aYhRtxJEAqYGK+q4tpwO15tJGerxjFKYdZ4eFmn/Xj9FE5yolnS0FZH?= =?us-ascii?Q?isSmjg+NqgBQkyQglONLTkguYcFhrt5h5+wWjDZoJ2O3en54k9CjMQJj9DlC?= =?us-ascii?Q?D5FsEjRrst3TK3yq3U3SCM2/8acOCcKjpIPVNTW/9KYpG3KYPBymZX5xDk+e?= =?us-ascii?Q?yWl95v1P4vxXBw=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3173; 6:tvT/Cf8fjox6xL0DDPvnUM8j8E37xNmVWG4rP2RASakKdYpnbbXWLgPAwtiptbFrLIS8L8zFKXwp42rh5ViOUwfEumCzsVuwsDXvY+8+k95Na0zzx7WBdlgsDT2SRMbsEd/S5S+RierxHqMZQ6B+v7HXddrYxAcFxMcW+11pEXwLXkD2EtRGzM3+CtNcoeX5WDPm3u9yoSAYliRvt15zzwZf9+5RM5xGRYztZHp/vEHct6pVzmlTUrlpvoJJMq5NnLfWQi2yvBALZ61b3kywqJtcg4P7/rK4UZETxOD7PODMZ8WikhZyRHJQ5RSVOG1jYppb+l+tuDlHIcex5MyQIQ==; 5:VULSU9zEV8xF9Wp2kSAQMefK48rYd/Y5h6sEpjkUfj4HRYcl7gxZeFV8tPyBgHJA4DCmOyO0aag9vT22Qy7m3Tq1WhWj+MHHNmPDEnFvdyVTrz22/4Q6MIyhJPnQ5NDLdwh1JXzrgVYc6iOhLSopRA==; 24:CZGgv+QaXKDADewzUnvv53HM91o/6AAi3S2wAcUe+VcQH4LuGqBNC4zzhRYoTENu8onbfmIUQHkdmNOnsaqP+Fw+g6YITrugrSTxx8s20ZU=; 7:0nLPtflbuJuiqiGnVJ12arW+rbDEuccfWOCm6TYypeuQ4czmH/O/MVPvN1cp29sqfrp4YKbG4X792b+RRGU1gZSlVLk44KTt9r0mlllrPj9W23ARk+U8zuLnjrZNixkNMHkRokgT1rCoWWBvCwJhqWrU51HRcZis3VSfdz/6XpPLa/6m4kCpemAJQMA3u5RcL8cEZUJOhk1Diwp/bw8QAZ22ckNYwInj2FUle0zTSvo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2017 01:19:18.4827 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3173 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Weilin Chang Signed-off-by: Weilin Chang Signed-off-by: Felix Manlunas --- .../net/ethernet/cavium/liquidio/octeon_console.c | 85 ++++++++++++++++++++++ .../net/ethernet/cavium/liquidio/octeon_device.h | 5 ++ 2 files changed, 90 insertions(+) diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_console.c b/drivers/net/ethernet/cavium/liquidio/octeon_console.c index 19e5212..88ef12b 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_console.c +++ b/drivers/net/ethernet/cavium/liquidio/octeon_console.c @@ -30,6 +30,7 @@ #include "liquidio_image.h" #include "octeon_mem_ops.h" +static void octeon_get_uboot_version(struct octeon_device *oct); static void octeon_remote_lock(void); static void octeon_remote_unlock(void); static u64 cvmx_bootmem_phy_named_block_find(struct octeon_device *oct, @@ -611,6 +612,9 @@ int octeon_add_console(struct octeon_device *oct, u32 console_num, work = &oct->console_poll_work[console_num].work; + if (oct->uboot_len == 0) + octeon_get_uboot_version(oct); + INIT_DELAYED_WORK(work, check_console); oct->console_poll_work[console_num].ctxptr = (void *)oct; oct->console_poll_work[console_num].ctxul = console_num; @@ -724,6 +728,87 @@ static int octeon_console_read(struct octeon_device *oct, u32 console_num, return bytes_to_read; } +static void octeon_get_uboot_version(struct octeon_device *oct) +{ + s32 bytes_read, tries, total_read; + struct octeon_console *console; + u32 console_num = 0; + int i; + + if (octeon_console_send_cmd(oct, "setenv stdout pci\n", 50)) + return; + + console = &oct->console[console_num]; + tries = 0; + total_read = 0; + + if (octeon_console_send_cmd(oct, "version\n", 1)) + return; + + do { + /* Take console output regardless of whether it will + * be logged + */ + bytes_read = + octeon_console_read(oct, + console_num, oct->uboot_version + + total_read, + OCTEON_UBOOT_BUFFER_SIZE - 1 - + total_read); + if (bytes_read > 0) { + oct->uboot_version[bytes_read] = 0x0; + + total_read += bytes_read; + if (console->waiting) + octeon_console_handle_result(oct, console_num); + } else if (bytes_read < 0) { + dev_err(&oct->pci_dev->dev, "Error reading console %u, ret=%d\n", + console_num, bytes_read); + } + + tries++; + } while ((bytes_read > 0) && (tries < 16)); + + /* If nothing is read after polling the console, + * output any leftovers if any + */ + if ((total_read == 0) && (console->leftover[0])) { + dev_dbg(&oct->pci_dev->dev, "%u: %s\n", + console_num, console->leftover); + console->leftover[0] = '\0'; + } + + if (octeon_console_send_cmd(oct, "setenv stdout serial\n", 50)) + return; + + /* U-Boot */ + for (i = 0; i < (OCTEON_UBOOT_BUFFER_SIZE - 9); i++) { + if (oct->uboot_version[i] == 'U' && + oct->uboot_version[i + 2] == 'B' && + oct->uboot_version[i + 3] == 'o' && + oct->uboot_version[i + 4] == 'o' && + oct->uboot_version[i + 5] == 't') { + oct->uboot_sidx = i; + i++; + for (; oct->uboot_version[i] != 0x0; i++) { + if (oct->uboot_version[i] == 'm' && + oct->uboot_version[i + 1] == 'i' && + oct->uboot_version[i + 2] == 'p' && + oct->uboot_version[i + 3] == 's') { + oct->uboot_eidx = i - 1; + oct->uboot_version[i - 1] = 0x0; + oct->uboot_len = oct->uboot_eidx - + oct->uboot_sidx + 1; + dev_info(&oct->pci_dev->dev, "%s\n", + &oct->uboot_version + [oct->uboot_sidx]); + return; + } + } + } + } +} + #define FBUF_SIZE (4 * 1024 * 1024) int octeon_download_firmware(struct octeon_device *oct, const u8 *data, diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_device.h b/drivers/net/ethernet/cavium/liquidio/octeon_device.h index 894af19..8dbd133 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_device.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_device.h @@ -550,6 +550,11 @@ struct octeon_device { bool cores_crashed; +#define OCTEON_UBOOT_BUFFER_SIZE 512 + char uboot_version[OCTEON_UBOOT_BUFFER_SIZE]; + int uboot_len; + int uboot_sidx, uboot_eidx; + struct { int bus; int dev;