From patchwork Fri May 19 06:58:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shawn Lin X-Patchwork-Id: 9735971 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 7CB786034C for ; Fri, 19 May 2017 07:00:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7190E288A9 for ; Fri, 19 May 2017 07:00:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 664D0288AE; Fri, 19 May 2017 07:00:45 +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=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 204EE288A9 for ; Fri, 19 May 2017 07:00:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=pfFV65p4+b6seIF3SKerxdlPSsTtYLxwFTmkRpIhNcQ=; b=BmT FLTZHssv2YeENALYaW8gs6TF3i/TYbGjr4X1XEPxC4XZuOEP+omEdsKU/LxdJPiYfNt7f3ter7Oov EKkd/Gu28aVAqtN2n05u6kKIMOB5KvYuJPOLpagz5/85Qwbga/J0aUoEyGqSCzUn4V2gglA5cNphK 64gGfjZRjKulkR/oMybDekF2LtSsQA+tlUAxL7Y6diU3qC8Wlkt2G1wCorGKEDTYDdecE1qF+WqHH a/yHTnQDZ5CA7vG4Rn7R7NLXSmq7ihxBTf577hN9f50VW4lrSZpR2ecZaChvKq/yKuYnjj7oNKNKK 3QP8vEaYUGLWuQDDa7LYr6j+NHXg63Q==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1dBbu0-0001Zc-BY; Fri, 19 May 2017 07:00:44 +0000 Received: from lucky1.263xmail.com ([211.157.147.135]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dBbtm-0000C5-RV for linux-rockchip@lists.infradead.org; Fri, 19 May 2017 07:00:32 +0000 Received: from shawn.lin?rock-chips.com (unknown [192.168.167.87]) by lucky1.263xmail.com (Postfix) with ESMTP id 7747C80C; Fri, 19 May 2017 14:59:58 +0800 (CST) X-263anti-spam: KSV:0; X-MAIL-GRAY: 1 X-MAIL-DELIVERY: 0 X-KSVirus-check: 0 X-ABS-CHECKED: 4 Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.263.net (Postfix) with ESMTP id 427DF3D6; Fri, 19 May 2017 14:59:57 +0800 (CST) X-RL-SENDER: shawn.lin@rock-chips.com X-FST-TO: bhelgaas@google.com X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: shawn.lin@rock-chips.com X-UNIQUE-TAG: X-ATTACHMENT-NUM: 0 X-SENDER: lintao@rock-chips.com X-DNS-TYPE: 0 Received: from localhost.localdomain (unknown [58.22.7.114]) by smtp.263.net (Postfix) whith ESMTP id 19692VH2A8L; Fri, 19 May 2017 14:59:58 +0800 (CST) From: Shawn Lin To: Bjorn Helgaas Subject: [PATCH] PCI: rockchip: check link status when validating device Date: Fri, 19 May 2017 14:58:27 +0800 Message-Id: <1495177107-203736-1-git-send-email-shawn.lin@rock-chips.com> X-Mailer: git-send-email 1.9.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170519_000031_065058_EC0C352D X-CRM114-Status: UNSURE ( 8.19 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-pci@vger.kernel.org, Jeffy Chen , Brian Norris , Shawn Lin , linux-rockchip@lists.infradead.org MIME-Version: 1.0 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+patchwork-linux-rockchip=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP This patch checks the link status before reading and writing configure space of devices attached to the RC. If the link status is down, we shouldn't try to access the devices. Signed-off-by: Shawn Lin --- drivers/pci/host/pcie-rockchip.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c index 0e020b6..1e64227 100644 --- a/drivers/pci/host/pcie-rockchip.c +++ b/drivers/pci/host/pcie-rockchip.c @@ -275,9 +275,21 @@ static void rockchip_pcie_update_txcredit_mui(struct rockchip_pcie *rockchip) rockchip_pcie_write(rockchip, val, PCIE_CORE_TXCREDIT_CFG1); } +static inline bool rockchip_pcie_link_up(struct rockchip_pcie *rockchip) +{ + return PCIE_LINK_UP(rockchip_pcie_read(rockchip, + PCIE_CLIENT_BASIC_STATUS1)); +} + static int rockchip_pcie_valid_device(struct rockchip_pcie *rockchip, struct pci_bus *bus, int dev) { + /* do not access the devices if the link isn't completed */ + if (bus->number != rockchip->root_bus_nr) { + if (!rockchip_pcie_link_up(rockchip)) + return 0; + } + /* access only one slot on each root port */ if (bus->number == rockchip->root_bus_nr && dev > 0) return 0;