From patchwork Thu Nov 17 22:25:01 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Daney X-Patchwork-Id: 9435385 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 6549660469 for ; Thu, 17 Nov 2016 22:25:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5448C29701 for ; Thu, 17 Nov 2016 22:25:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4617229703; Thu, 17 Nov 2016 22:25:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CF9AE29701 for ; Thu, 17 Nov 2016 22:25:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752617AbcKQWZ2 (ORCPT ); Thu, 17 Nov 2016 17:25:28 -0500 Received: from mail-qk0-f195.google.com ([209.85.220.195]:35481 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752591AbcKQWZ1 (ORCPT ); Thu, 17 Nov 2016 17:25:27 -0500 Received: by mail-qk0-f195.google.com with SMTP id n204so28626696qke.2; Thu, 17 Nov 2016 14:25:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=dhEbRBYLBrWNMsa1YvGOK8OFCWReb3xQsFkq8fc/rRU=; b=XnICsF+dvqo5waxnpmnAu6xdNxHDDqn15T/QVdu5f+zdFw1sUcaVBg9Si4XZd1YKd1 4vBCI6Amuem4ifGE5cCSI96CE8Z6himqgWcx5m9EU2ZduNJ2HhCdoaTGyaT15e5HEjwO bPWWzpd0lx71TMuL82btnAcEMlycJOVM57Eg+D0BsMC/y4XC4eQ3rmUIY7q2t8nPicr4 3wCAErL7wDb7PQ6MyylOxX3oHs16+iSpOUTzNH6mqL8cviUB13cAixTKyZis1pDBuwFf Gf3awgm35xdZzSXrTwyixM5aYyKK5VPapJNxwxZGZIx/EBN1J1ny8QkxegLDwfPW2YzA wMQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=dhEbRBYLBrWNMsa1YvGOK8OFCWReb3xQsFkq8fc/rRU=; b=dZ20HXUr80ksv5FWCXznq2WX6oVuVcsQyOXvYbDsjVx9msDgDxlvJ3JMBs+8Vpn7ER PCMcB4uTDRLgPjlaA4tyPVJUhNtnjrrY01ZTLqBdqAeYR8ADq8dtlO1sTh6KALoTYCRq 6Y7jt3LAQkZv+ph1aJB7NCCZ0aIFCnE5o5BO6S7smGI9Zy9PtiiOtBD5vHljFTBD80GJ Ev18YSrVGPKXVQA9BeOUDoOrsmN27QL5uBzE346BROMAro4isbycriBJoiuNeToywd52 NOprwgCOumHTUhesYZMeeBvCUQh0zOWBgn5PXi8YDipSM/lMxv5XSexEoj7k2CX/n3OT 3aaQ== X-Gm-Message-State: AKaTC03FiIex1btQgQxArxcpR8tv89yAHk1/akqI8enTrG6g4Q0DGueh8WnTBJtUKilXuA== X-Received: by 10.55.12.2 with SMTP id 2mr6524569qkm.68.1479421526656; Thu, 17 Nov 2016 14:25:26 -0800 (PST) Received: from dl.caveonetworks.com (50-233-148-156-static.hfc.comcastbusiness.net. [50.233.148.156]) by smtp.gmail.com with ESMTPSA id n188sm2527097qkc.30.2016.11.17.14.25.24 (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 17 Nov 2016 14:25:25 -0800 (PST) Received: from dl.caveonetworks.com (localhost.localdomain [127.0.0.1]) by dl.caveonetworks.com (8.14.5/8.14.5) with ESMTP id uAHMPJPs031064; Thu, 17 Nov 2016 14:25:19 -0800 Received: (from ddaney@localhost) by dl.caveonetworks.com (8.14.5/8.14.5/Submit) id uAHMP81j031063; Thu, 17 Nov 2016 14:25:08 -0800 From: David Daney To: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, Bjorn Helgaas Cc: Andy Lutomirski , Shawn Lin , David Daney Subject: [PATCH] PCI/ASPM: Don't retrain link if ASPM not possible. Date: Thu, 17 Nov 2016 14:25:01 -0800 Message-Id: <1479421501-31029-1-git-send-email-ddaney.cavm@gmail.com> X-Mailer: git-send-email 1.7.11.7 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: David Daney Some (defective) PCIe devices are not able to reliably do link retraining. Check to see if ASPM is possible between link partners before configuring common clocking, and doing the resulting link retraining. If ASPM is not possible, there is no reason to risk losing access to a device due to an unnecessary link retraining. Signed-off-by: David Daney --- drivers/pci/pcie/aspm.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index 0ec649d..d6667db 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -351,12 +351,26 @@ static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist) return; } + /* Get upstream/downstream components' register state */ + pcie_get_aspm_reg(parent, &upreg); + child = list_entry(linkbus->devices.next, struct pci_dev, bus_list); + pcie_get_aspm_reg(child, &dwreg); + + /* + * If ASPM not supported, don't mess with the clocks and link, + * bail out now. + */ + if (!(upreg.support & dwreg.support)) + return; + /* Configure common clock before checking latencies */ pcie_aspm_configure_common_clock(link); - /* Get upstream/downstream components' register state */ + /* + * Re-read upstream/downstream components' register state + * after clock configuration + */ pcie_get_aspm_reg(parent, &upreg); - child = list_entry(linkbus->devices.next, struct pci_dev, bus_list); pcie_get_aspm_reg(child, &dwreg); /*