From patchwork Fri Aug 26 15:25:43 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101929 Delivered-To: patch@linaro.org Received: by 10.140.29.52 with SMTP id a49csp412269qga; Fri, 26 Aug 2016 08:29:08 -0700 (PDT) X-Received: by 10.66.185.14 with SMTP id ey14mr7161143pac.71.1472225342333; Fri, 26 Aug 2016 08:29:02 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id yp6si21699224pac.253.2016.08.26.08.29.02; Fri, 26 Aug 2016 08:29:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753510AbcHZP26 (ORCPT + 27 others); Fri, 26 Aug 2016 11:28:58 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:51164 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750869AbcHZP2k (ORCPT ); Fri, 26 Aug 2016 11:28:40 -0400 Received: from wuerfel.lan. ([176.0.135.42]) by mrelayeu.kundenserver.de (mreue005) with ESMTPA (Nemesis) id 0Lr6Jj-1b9RvB2zZr-00ed0q; Fri, 26 Aug 2016 17:26:54 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Linus Torvalds , Arnd Bergmann , Linus Walleij , linux-fbdev@vger.kernel.org, Russell King , Tomi Valkeinen Subject: [PATCH 2/5] video: ARM CLCD: fix endpoint lookup logic Date: Fri, 26 Aug 2016 17:25:43 +0200 Message-Id: <20160826152546.604384-3-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160826152546.604384-1-arnd@arndb.de> References: <20160826152546.604384-1-arnd@arndb.de> X-Provags-ID: V03:K0:kpmxnr+U1b1J0EpZw0f63cBnxgbXb8cDykyo/Z7i7EC7d1CVaQP vfgNx3waXBckIEut6e44Jq4ykzFlORkn2PIzECj4BVRioExsvkoNJa3BFJSazTyPiTbYWCN X9K3GGtGRBK++vuAPth+HrVEIpQWskE3EgjgX0PZd2vIB/ViDD/XqUxUs2NroJKo/SgiN05 SGE794cgXYqnIAab1ko/A== X-UI-Out-Filterresults: notjunk:1; V01:K0:8BfoEhLG2r4=:ivtX9dccO45tsCeDgdMJxM T2ApZGM4UHnaZqPZwi7rnfkNwO7KWJW0wVKDnHgOttqd4LgAjTb43MC4wzZHrsj5JN+es3+ej 17o/78pxRErcKN+pKeI/pI4wghSWaLQSfHPHhcu5vdwvzuyTtHxDwx3ag4cNllVUCf6P0fuSH utMNtdKEtXI7MX7PtO8+uv8Cj33Ro9SKdeT9MkY4CfRbFe22LES6FVE7MW1iL7h46QPjvKuxV /wFjqmz1EdyEueM8lEVv2DJikqpy4osmQrw68TSt2r3mtkyFfS9+18EmDuml3C3BRXKQqYi49 pADkrPqZyUqFCXM7BSG6IRu9iUXje6UVS/Zct/7IIGq77PywZ8g5fSnHegubj4iDjNU/NzibN GmxwfnDZiGAaBusf2AM+GKZ7WGewHoElq3cOHO1pMuKIV7BZ+LBJpc70EDPJyfGWucqCGzQiS nicButPUIIS3mzqgoMc+JvOTqUiGTzscGgzrXejogQRC6hy00MAflmSsTh6yxoIEt6iaabSEh x2izUxHiwtiHbftA13XFSIedSqO+MKVhJASNIbgx8x91aXBeYzJXe0QxRWen2L7wnQDJSNG5X 6oTrjJA3tXjXJ7N57UP2zOcK9CffWaIu3Bf5qg4twNhHQTAoDXHcrV1OnRS/v7tl8nfdU5UI5 wiMOkWWNUhleSHHNwuqGvhnG4CIKyEEqHBJEiltLbrfT9NDvqGjmFgvbn8rWIl/fXPFQ= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The addition of the Nomadik support in this driver introduced a bug in clcdfb_of_init_display(), which now calls init_panel with an uninitialized 'endpoint' pointer, as "gcc -Wmaybe-uninitialized" warns: drivers/video/fbdev/amba-clcd.c: In function 'clcdfb_of_init_display': drivers/video/fbdev/amba-clcd.c:785:5: error: 'endpoint' may be used uninitialized in this function [-Werror=maybe-uninitialized] This reverts the broken part of the function to what it was before the patch, which is the best guess I have to what it should be. I assume this was left over from an attempted rework of the code that was partially backed out. Signed-off-by: Arnd Bergmann Fixes: 046ad6cdeb3f ("video: ARM CLCD: support Nomadik variant") Cc: Linus Walleij --- Cc: linux-fbdev@vger.kernel.org Cc: Russell King Cc: Tomi Valkeinen drivers/video/fbdev/amba-clcd.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) -- 2.9.0 diff --git a/drivers/video/fbdev/amba-clcd.c b/drivers/video/fbdev/amba-clcd.c index c342ff370108..ec2671d98abc 100644 --- a/drivers/video/fbdev/amba-clcd.c +++ b/drivers/video/fbdev/amba-clcd.c @@ -782,12 +782,9 @@ static int clcdfb_of_init_display(struct clcd_fb *fb) /* * Fetch the panel endpoint. */ - if (!endpoint) { - endpoint = of_graph_get_next_endpoint(fb->dev->dev.of_node, - NULL); - if (!endpoint) - return -ENODEV; - } + endpoint = of_graph_get_next_endpoint(fb->dev->dev.of_node, NULL); + if (!endpoint) + return -ENODEV; if (fb->vendor->init_panel) { err = fb->vendor->init_panel(fb, endpoint); From patchwork Fri Aug 26 15:25:46 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101932 Delivered-To: patch@linaro.org Received: by 10.140.29.52 with SMTP id a49csp412087qga; Fri, 26 Aug 2016 08:28:45 -0700 (PDT) X-Received: by 10.98.1.137 with SMTP id 131mr7014626pfb.165.1472225325641; Fri, 26 Aug 2016 08:28:45 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h70si21743548pfh.199.2016.08.26.08.28.45; Fri, 26 Aug 2016 08:28:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753029AbcHZP2n (ORCPT + 27 others); Fri, 26 Aug 2016 11:28:43 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:51553 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751139AbcHZP2k (ORCPT ); Fri, 26 Aug 2016 11:28:40 -0400 Received: from wuerfel.lan. ([176.0.135.42]) by mrelayeu.kundenserver.de (mreue005) with ESMTPA (Nemesis) id 0MIAjy-1bh8ms3UFC-003wsf; Fri, 26 Aug 2016 17:26:57 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Linus Torvalds , Arnd Bergmann , Fushen Chen , Iyappan Subramanian , Keyur Chudgar , "David S. Miller" , netdev@vger.kernel.org Subject: [PATCH 5/5] net/xgene: fix error handling during reset Date: Fri, 26 Aug 2016 17:25:46 +0200 Message-Id: <20160826152546.604384-6-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160826152546.604384-1-arnd@arndb.de> References: <20160826152546.604384-1-arnd@arndb.de> X-Provags-ID: V03:K0:1f1i6QSclAS/IaiwfXYVeXdjsL/JSbSg9WPTsZfma1G/CyHSKAN IvyQ1Vg6TdIoJPEKnyjUHtelVP5MmJK8L1CCDrJfHNOqsfxuQhH+iqSJkO/y+1icPiN4+qe 04jI/3gpDeh6Qg1TRtSjhia2FqSs93luoAyxpJ9JIkWS/hvwqpj1DmuMi/dgogxbXLuy+m3 ApoDQ9bu9fPY4LhDHAFgA== X-UI-Out-Filterresults: notjunk:1; V01:K0:9owz2pUcHMo=:41K1vDnGjeTYYVCoHJHgx7 O3xo23eDwCdKjxCPXZ3iDH20aCzLHWGCsGlb1+1mCNs5Ev4r3DQgCfqG2HiursmHHpMo31ui3 LuIVqFlpGVQbYf47PvHrwx0sg0ylUNYVdffKvOOF9CjTDa/U5gmIj/pc+oJVVAy8UwYYNO9ML UKtnXCyqQneid9lbtUiyf43o83j7vje0X8jgGx86NGcKw3TtjkklZp0V+WUWbLuutKeF9Njk7 SAYbvsTEcPQ018QbbHuL0EfEa+0WaUkcaQasIX9Wa6DGfRoHyCUt7o0xqtx4PZBXFIIVB/IeQ vLi5KMe0+Vrdd1PUFteyCw2y8wO9/PZEwnyt0oCkc1qwu7hgFw1i/uQ7nQ9IBP2GRLyYmlbjK 5sQLa4CN18t/6dbswsXvEWHgM+ukq2vucoGqsdBecPQd59GU0DhYi+w+eyAsZmRl4lHfQbAPc 6eCp7PR/mkGfghH4+LsGYpk5JcvO9r+dObk5rJbzIOIFCSF+e02B69IrIFGhLNL5K+FznRg5S s/uF2kj0taUPpF6TlqF6C9it1H7k3McIG6xXfmN3twZoeTOTd7JcdeZQhQhg9N5SEzim3qnZS j+eNeziIhvntUNSDyPPCTL5sssrmf79hNLVi0tazDiGK+ZPMaz3xEQWDQKPrZGS3Vj9NXB174 /enMKqdNMa+QJKVtAIxJYsKMBMIoMPTEtLyAjlruO4jHaEytRC2GK8FgsPRmA91Zxk4o= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The newly added reset logic uses helper functions for the MMIO that may fail. However, when the read operation fails, we end up writing back uninitialized data to the register, as gcc warns: drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c: In function 'xgene_enet_link_state': drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c:213:2: error: 'data' may be used uninitialized in this function [-Werror=maybe-uninitialized] drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c:209:6: note: 'data' was declared here u32 data; We already print a warning to the console log if that happens, the best alternative that I can see is skip the rest of the reset sequence if the register value cannot be read: Most likely the write would fail as well, and if it succeeded, worse things could happen. Signed-off-by: Arnd Bergmann Fixes: 3eb7cb9dc946 ("drivers: net: xgene: XFI PCS reset when link is down") Cc: Fushen Chen --- Cc: Iyappan Subramanian Cc: Keyur Chudgar Cc: "David S. Miller" Cc: netdev@vger.kernel.org drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) -- 2.9.0 diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c b/drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c index d672e71b5a50..279ee27004f7 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c @@ -155,19 +155,23 @@ static void xgene_enet_rd_mac(struct xgene_enet_pdata *pdata, rd_addr); } -static void xgene_enet_rd_pcs(struct xgene_enet_pdata *pdata, +static bool xgene_enet_rd_pcs(struct xgene_enet_pdata *pdata, u32 rd_addr, u32 *rd_data) { void __iomem *addr, *rd, *cmd, *cmd_done; + bool success; addr = pdata->pcs_addr + PCS_ADDR_REG_OFFSET; rd = pdata->pcs_addr + PCS_READ_REG_OFFSET; cmd = pdata->pcs_addr + PCS_COMMAND_REG_OFFSET; cmd_done = pdata->pcs_addr + PCS_COMMAND_DONE_REG_OFFSET; - if (!xgene_enet_rd_indirect(addr, rd, cmd, cmd_done, rd_addr, rd_data)) + success = xgene_enet_rd_indirect(addr, rd, cmd, cmd_done, rd_addr, rd_data); + if (!success) netdev_err(pdata->ndev, "PCS read failed, addr: %04x\n", rd_addr); + + return success; } static int xgene_enet_ecc_init(struct xgene_enet_pdata *pdata) @@ -208,7 +212,9 @@ static void xgene_pcs_reset(struct xgene_enet_pdata *pdata) { u32 data; - xgene_enet_rd_pcs(pdata, PCS_CONTROL_1, &data); + if (!xgene_enet_rd_pcs(pdata, PCS_CONTROL_1, &data)) + return; + xgene_enet_wr_pcs(pdata, PCS_CONTROL_1, data | PCS_CTRL_PCS_RST); xgene_enet_wr_pcs(pdata, PCS_CONTROL_1, data & ~PCS_CTRL_PCS_RST); }