{"id":804739,"url":"http://patchwork.ozlabs.org/api/patches/804739/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-pci/patch/1503464171-6471-1-git-send-email-okaya@codeaurora.org/","project":{"id":28,"url":"http://patchwork.ozlabs.org/api/projects/28/?format=json","name":"Linux PCI development","link_name":"linux-pci","list_id":"linux-pci.vger.kernel.org","list_email":"linux-pci@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<1503464171-6471-1-git-send-email-okaya@codeaurora.org>","list_archive_url":null,"date":"2017-08-23T04:56:07","name":"[V12,1/5] PCI: Don't ignore valid response before CRS timeout","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"39def0aee3aded42a28ded926feae45b864808ac","submitter":{"id":67496,"url":"http://patchwork.ozlabs.org/api/people/67496/?format=json","name":"Sinan Kaya","email":"okaya@codeaurora.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-pci/patch/1503464171-6471-1-git-send-email-okaya@codeaurora.org/mbox/","series":[],"comments":"http://patchwork.ozlabs.org/api/patches/804739/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/804739/checks/","tags":{},"related":[],"headers":{"Return-Path":"<linux-pci-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-pci-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=codeaurora.org header.i=@codeaurora.org\n\theader.b=\"YXPSAJek\"; \n\tdkim=pass (1024-bit key) header.d=codeaurora.org\n\theader.i=@codeaurora.org header.b=\"YXPSAJek\"; \n\tdkim-atps=neutral","pdx-caf-mail.web.codeaurora.org;\n\tdmarc=none (p=none dis=none)\n\theader.from=codeaurora.org","pdx-caf-mail.web.codeaurora.org;\n\tspf=none smtp.mailfrom=okaya@codeaurora.org"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xcZsm51BFz9s8V\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 23 Aug 2017 14:57:16 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1753253AbdHWE4S (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 23 Aug 2017 00:56:18 -0400","from smtp.codeaurora.org ([198.145.29.96]:53142 \"EHLO\n\tsmtp.codeaurora.org\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751436AbdHWE4R (ORCPT\n\t<rfc822; linux-pci@vger.kernel.org>); Wed, 23 Aug 2017 00:56:17 -0400","by smtp.codeaurora.org (Postfix, from userid 1000)\n\tid A685D60415; Wed, 23 Aug 2017 04:56:16 +0000 (UTC)","from drakthul.qualcomm.com (global_nat1_iad_fw.qualcomm.com\n\t[129.46.232.65])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\t(Authenticated sender: okaya@smtp.codeaurora.org)\n\tby smtp.codeaurora.org (Postfix) with ESMTPSA id 42C1E603D2;\n\tWed, 23 Aug 2017 04:56:15 +0000 (UTC)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org;\n\ts=default; t=1503464176;\n\tbh=K70AuNQZATZbVji4X69+sUcnX7fd/Jf8kcDV5r57vwE=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=YXPSAJek/klWcnlbP+gS4x55wnVP5U81sad12b9GMFDUqgzBQ3WGbjnTJl7bFO/kK\n\tfubZbR0cJaspkN2Hyv1JDRwG4r3usPh2r2eRgP7vDLHrXSOSd+S+b/KFM6gKc4lsBI\n\tmCsmHko9menaTqLSbluXJ19uBtPSPVrc9p6jFmDg=","v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org;\n\ts=default; t=1503464176;\n\tbh=K70AuNQZATZbVji4X69+sUcnX7fd/Jf8kcDV5r57vwE=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=YXPSAJek/klWcnlbP+gS4x55wnVP5U81sad12b9GMFDUqgzBQ3WGbjnTJl7bFO/kK\n\tfubZbR0cJaspkN2Hyv1JDRwG4r3usPh2r2eRgP7vDLHrXSOSd+S+b/KFM6gKc4lsBI\n\tmCsmHko9menaTqLSbluXJ19uBtPSPVrc9p6jFmDg="],"X-Spam-Checker-Version":"SpamAssassin 3.4.0 (2014-02-07) on\n\tpdx-caf-mail.web.codeaurora.org","X-Spam-Level":"","X-Spam-Status":"No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00,\n\tDKIM_SIGNED,\n\tT_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0","DMARC-Filter":"OpenDMARC Filter v1.3.2 smtp.codeaurora.org 42C1E603D2","From":"Sinan Kaya <okaya@codeaurora.org>","To":"linux-pci@vger.kernel.org, timur@codeaurora.org,\n\talex.williamson@redhat.com","Cc":"linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,\n\tBjorn Helgaas <bhelgaas@google.com>,\n\tSinan Kaya <okaya@codeaurora.org>, linux-kernel@vger.kernel.org","Subject":"[PATCH V12 1/5] PCI: Don't ignore valid response before CRS timeout","Date":"Wed, 23 Aug 2017 00:56:07 -0400","Message-Id":"<1503464171-6471-1-git-send-email-okaya@codeaurora.org>","X-Mailer":"git-send-email 1.9.1","Sender":"linux-pci-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<linux-pci.vger.kernel.org>","X-Mailing-List":"linux-pci@vger.kernel.org"},"content":"From: Bjorn Helgaas <bhelgaas@google.com>\n\nWhile waiting for a device to become ready (i.e., to return a non-CRS\ncompletion to a read of its Vendor ID), if we got a valid response to the\nvery last read before timing out, we printed a warning and gave up on the\ndevice even though it was actually ready.\n\nFor a typical 60s timeout, we wait about 65s (it's not exact because of the\nexponential backoff), but we treated devices that became ready between 33s\nand 65s as though they failed.\n\nMove the Device ID read later so we check whether the device is ready\nimmediately, before checking for a timeout.\n\nSigned-off-by: Bjorn Helgaas <bhelgaas@google.com>\n[okaya: reorder reads so that we check device presence after sleep]\nSigned-off-by: Sinan Kaya <okaya@codeaurora.org>\n---\n drivers/pci/probe.c | 11 ++++++-----\n 1 file changed, 6 insertions(+), 5 deletions(-)","diff":"diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c\nindex c31310d..2849e0e 100644\n--- a/drivers/pci/probe.c\n+++ b/drivers/pci/probe.c\n@@ -1847,17 +1847,18 @@ bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,\n \t\tif (!crs_timeout)\n \t\t\treturn false;\n \n-\t\tmsleep(delay);\n-\t\tdelay *= 2;\n-\t\tif (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))\n-\t\t\treturn false;\n-\t\t/* Card hasn't responded in 60 seconds?  Must be stuck. */\n \t\tif (delay > crs_timeout) {\n \t\t\tprintk(KERN_WARNING \"pci %04x:%02x:%02x.%d: not responding\\n\",\n \t\t\t       pci_domain_nr(bus), bus->number, PCI_SLOT(devfn),\n \t\t\t       PCI_FUNC(devfn));\n \t\t\treturn false;\n \t\t}\n+\n+\t\tmsleep(delay);\n+\t\tdelay *= 2;\n+\n+\t\tif (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))\n+\t\t\treturn false;\n \t}\n \n \treturn true;\n","prefixes":["V12","1/5"]}