Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp325386iob; Tue, 3 May 2022 18:50:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyAcpOqILPscOhRSuFzlAFqbOxp3qG0z9H5X9eXaQbgfSL9rjou8jt5y3U1gaHMw/O1YF9n X-Received: by 2002:a17:906:974e:b0:6bb:4f90:a6ae with SMTP id o14-20020a170906974e00b006bb4f90a6aemr18644259ejy.452.1651628999751; Tue, 03 May 2022 18:49:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651628999; cv=none; d=google.com; s=arc-20160816; b=kivjPhefa5eWkF1G+PbRmuiqlTA4VSqsCfNZ6HDiJPqQ8uPLb4SOEEgUWWjxsDc7Dm ui3PVOmtw+MSyAh0xRKVB3ihxcePgAda9epfQcFpzJ9X4KcgGjyEffPnZfgN2ql2TM/9 bPSnjbaVg5mGyFQj6I9BP5mJTrd/z2MQzvnEW0I3TCk5+G4N2t3nx62edysFB4mK+6Rd Gw4ziB8aSlLmQGvh/J9wdH5dzY+wD+P78HvgX5YyLWAcIYiPRcYpgf+Hvzb4+OBtg5zi aiLt9QZpyZpU93pw85TIe2Ld6Gb7PLUvG7TvBIUr1I3ipe8j/KlKU+mkYH/407QucXux IWqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter; bh=WAWRREuBpnxzwPhyspvE7nalemSfsPDWPJynnF5ccvY=; b=dEwu7VvY7cxGaL0t79gQdHz8bZnvuaBvl+/9WVwveiJGh9EcV/IUKkgvTLeE3hy7ow ggjOBArzYC1zfHzchyK7gWphvM5AK5WD7tSF443qR7oihxVs/oy/TF2iOz0EHkRvX0Oj Jabz7vLJsFxWeKTyjXARCPg2EHGgglR+TQ/Cg4Hz2tzGYKwX2KnQDGMnuZXfqcLQK3ze jHAsIjMG0N1i8AdQKfKP6IfCVtLdEcTy2Y1k+4G+P4GP1tUWbuK3xErIMWnowWeKGOKw xDP2g2e04RLKGgqFiJAttaMkAl8mJh6iib/B/CQhvgEGE+RkE1n7tCgybsItgO6BGsDP jYxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baikalelectronics.ru header.s=mail header.b=abS7G0LP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p2-20020a170906140200b006f3a51cb4a7si15123576ejc.385.2022.05.03.18.49.36; Tue, 03 May 2022 18:49:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@baikalelectronics.ru header.s=mail header.b=abS7G0LP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243182AbiECVup (ORCPT + 99 others); Tue, 3 May 2022 17:50:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243086AbiECVug (ORCPT ); Tue, 3 May 2022 17:50:36 -0400 Received: from mail.baikalelectronics.ru (mail.baikalelectronics.com [87.245.175.226]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 03C1E205DE; Tue, 3 May 2022 14:47:02 -0700 (PDT) Received: from mail.baikalelectronics.ru (unknown [192.168.51.25]) by mail.baikalelectronics.ru (Postfix) with ESMTP id 0A27016D7; Wed, 4 May 2022 00:47:36 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.baikalelectronics.ru 0A27016D7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baikalelectronics.ru; s=mail; t=1651614456; bh=WAWRREuBpnxzwPhyspvE7nalemSfsPDWPJynnF5ccvY=; h=From:To:CC:Subject:Date:In-Reply-To:References:From; b=abS7G0LPiC870qVwy/aUM+jaAGLW/W7WTDGm/TVyf6EVFQOIBHkkN3k1XsHTXIvbm p/9DtajXElTg8CfK9dmBOW48isnNuMi308yZpRHVwHgcf22DWp6iVwfeqe8L961IGj wahiQ4jT18ev2PjU2lZjukBl5o+ilyB03j4iPuF8= Received: from localhost (192.168.53.207) by mail (192.168.51.25) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 4 May 2022 00:47:02 +0300 From: Serge Semin To: Jingoo Han , Gustavo Pimentel , Bjorn Helgaas , Lorenzo Pieralisi , Rob Herring , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= CC: Serge Semin , Serge Semin , Alexey Malahov , Pavel Parkhomenko , Frank Li , Manivannan Sadhasivam , Rob Herring , , , Subject: [PATCH v2 03/17] PCI: dwc: Add more verbose link-up message Date: Wed, 4 May 2022 00:46:24 +0300 Message-ID: <20220503214638.1895-4-Sergey.Semin@baikalelectronics.ru> In-Reply-To: <20220503214638.1895-1-Sergey.Semin@baikalelectronics.ru> References: <20220503214638.1895-1-Sergey.Semin@baikalelectronics.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MAIL.baikal.int (192.168.51.25) To mail (192.168.51.25) X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Printing just "link up" isn't that much informative especially when it comes to working with the PCI Express bus. Even if the link is up, due to multiple reasons the bus performance can degrade to slower speeds or to narrower width than both Root Port and its partner is capable of. In that case it would be handy to know the link specifications as early as possible. So let's add a more verbose message to the busy-wait link-state method, which will contain the link speed generation and the PCIe bus width in case if the link up state is discovered. Otherwise an error will be printed to the system log. Signed-off-by: Serge Semin --- Changelog v2: - Test the error condition first and return straight away if it comes true. The typical return is better to be unindented (@Joe). --- drivers/pci/controller/dwc/pcie-designware.c | 22 ++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index 6e81264fdfb4..1682f477bf20 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -524,20 +524,30 @@ void dw_pcie_disable_atu(struct dw_pcie *pci, int index, int dw_pcie_wait_for_link(struct dw_pcie *pci) { + u32 offset, val; int retries; /* Check if the link is up or not */ for (retries = 0; retries < LINK_WAIT_MAX_RETRIES; retries++) { - if (dw_pcie_link_up(pci)) { - dev_info(pci->dev, "Link up\n"); - return 0; - } + if (dw_pcie_link_up(pci)) + break; + usleep_range(LINK_WAIT_USLEEP_MIN, LINK_WAIT_USLEEP_MAX); } - dev_info(pci->dev, "Phy link never came up\n"); + if (retries >= LINK_WAIT_MAX_RETRIES) { + dev_err(pci->dev, "Phy link never came up\n"); + return -ETIMEDOUT; + } + + offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); + val = dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKSTA); - return -ETIMEDOUT; + dev_info(pci->dev, "PCIe Gen.%u x%u link up\n", + FIELD_GET(PCI_EXP_LNKSTA_CLS, val), + FIELD_GET(PCI_EXP_LNKSTA_NLW, val)); + + return 0; } EXPORT_SYMBOL_GPL(dw_pcie_wait_for_link); -- 2.35.1