Received: by 2002:a25:86ce:0:0:0:0:0 with SMTP id y14csp2171743ybm; Thu, 23 May 2019 12:32:18 -0700 (PDT) X-Google-Smtp-Source: APXvYqzbASMkOfXEoqbsU1cjfI3rS/EsmqLtm4lvoJ+YBSxSqGXeih/7FdIcsVDCONad7tpPd3Ql X-Received: by 2002:a63:fb05:: with SMTP id o5mr16740119pgh.203.1558639938087; Thu, 23 May 2019 12:32:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558639938; cv=none; d=google.com; s=arc-20160816; b=ZTPQZ2dHpzlCjJWymjDdigd2M4ZOfojlBY61+H0eNwk8MwMgZ//5NTcyHbR1faIa04 nczhJAaFadZgFW2emHW/ydu3k2mDZewa/vKADButPZSQ2Rw4xAXCoWcZnxw4hfEpSFYi W6EAtWpPyGtqi4EQ4+x1TAyv1HV46GyF75mGKtqdUkG19wfkN6qJC8Qqe1tk/aAqzksX hdCqYV3fFQAE3U9mPjeZOdxDmfDo3TS6CNHGIYmChCvbv8/SgA3jJWJYwyWBcWWQVgsC KkDHJieDUv1gcfHKHg52ns4kYRBJ+NlqIqM8glCcD5W5TnzpXQ98/CLM7lQgRXfQJdWR D3CQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=k+uLX1JCIf41r7gnvCIFz30NhUsORoUK9z5QsMtfoSI=; b=pGG/KasewhWTw7UDUSuw9CyzdHVFZtT9Fz5A7Vn2598nkWyhoUlScTfPZ2U0FNZTWm unSG0K4a7Sr3M/pbhankgAacmhhvLsU/gD//GCbALouRyJUwrka8F815Uv51L2lcb16R YXDJ3KFqAkzTGMXvMg2pq2XOnYuxS9VUNbJzacpULXg0svOWVuBhj5dFCV3AWMuXGXJb v7PfkFLwG4KG0zk938VYcbOERKLIf5yPLikAsm4B+HYMKb6RYFCyL98UXfks95AATp2U uTjqI2x4ZOWcjUyjG9ARhXyEx+NX5N2a1swFpTsbizPgKs5hkag3AVdzJLkp9gzwg9h2 XylQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=dZGsfRO2; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c3si479740pgq.289.2019.05.23.12.32.02; Thu, 23 May 2019 12:32:18 -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; dkim=pass header.i=@kernel.org header.s=default header.b=dZGsfRO2; 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 S2392204AbfEWTaz (ORCPT + 99 others); Thu, 23 May 2019 15:30:55 -0400 Received: from mail.kernel.org ([198.145.29.99]:44450 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392192AbfEWTav (ORCPT ); Thu, 23 May 2019 15:30:51 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A808020879; Thu, 23 May 2019 19:30:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1558639850; bh=+t0u5GOucS63bRMTYhnfoDgwbCZ7hpJlC0pSSCGnqdA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dZGsfRO2rRI0hBylfHkvqO43wy2ApuhZlRAajdyMR67ZpTbeuCPEGL3qZS5QK8yyM eOTOFxMKEHcHT9NkqsCOsJdmx+S3S9Rh5F6y9++uBMW5GubfVEMFwD9/RjaxsSN+gE RAyUjOPbDyoPd6lBDB5R7qrdpFyBoA73OS77TAUY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kazufumi Ikeda , Gaku Inami , Marek Vasut , Lorenzo Pieralisi , Simon Horman , Geert Uytterhoeven , Wolfram Sang , Phil Edworthy , Wolfram Sang , linux-renesas-soc@vger.kernel.org Subject: [PATCH 5.1 099/122] PCI: rcar: Add the initialization of PCIe link in resume_noirq() Date: Thu, 23 May 2019 21:07:01 +0200 Message-Id: <20190523181718.354018681@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190523181705.091418060@linuxfoundation.org> References: <20190523181705.091418060@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kazufumi Ikeda commit be20bbcb0a8cb5597cc62b3e28d275919f3431df upstream. Reestablish the PCIe link very early in the resume process in case it went down to prevent PCI accesses from hanging the bus. Such accesses can happen early in the PCI resume process, as early as the SUSPEND_RESUME_NOIRQ step, thus the link must be reestablished in the driver resume_noirq() callback. Fixes: e015f88c368d ("PCI: rcar: Add support for R-Car H3 to pcie-rcar") Signed-off-by: Kazufumi Ikeda Signed-off-by: Gaku Inami Signed-off-by: Marek Vasut [lorenzo.pieralisi@arm.com: reformatted commit log] Signed-off-by: Lorenzo Pieralisi Reviewed-by: Simon Horman Reviewed-by: Geert Uytterhoeven Acked-by: Wolfram Sang Cc: stable@vger.kernel.org Cc: Geert Uytterhoeven Cc: Phil Edworthy Cc: Simon Horman Cc: Wolfram Sang Cc: linux-renesas-soc@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/pci/controller/pcie-rcar.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) --- a/drivers/pci/controller/pcie-rcar.c +++ b/drivers/pci/controller/pcie-rcar.c @@ -46,6 +46,7 @@ /* Transfer control */ #define PCIETCTLR 0x02000 +#define DL_DOWN BIT(3) #define CFINIT 1 #define PCIETSTR 0x02004 #define DATA_LINK_ACTIVE 1 @@ -94,6 +95,7 @@ #define MACCTLR 0x011058 #define SPEED_CHANGE BIT(24) #define SCRAMBLE_DISABLE BIT(27) +#define PMSR 0x01105c #define MACS2R 0x011078 #define MACCGSPSETR 0x011084 #define SPCNGRSN BIT(31) @@ -1130,6 +1132,7 @@ static int rcar_pcie_probe(struct platfo pcie = pci_host_bridge_priv(bridge); pcie->dev = dev; + platform_set_drvdata(pdev, pcie); err = pci_parse_request_of_pci_ranges(dev, &pcie->resources, NULL); if (err) @@ -1221,10 +1224,28 @@ err_free_bridge: return err; } +static int rcar_pcie_resume_noirq(struct device *dev) +{ + struct rcar_pcie *pcie = dev_get_drvdata(dev); + + if (rcar_pci_read_reg(pcie, PMSR) && + !(rcar_pci_read_reg(pcie, PCIETCTLR) & DL_DOWN)) + return 0; + + /* Re-establish the PCIe link */ + rcar_pci_write_reg(pcie, CFINIT, PCIETCTLR); + return rcar_pcie_wait_for_dl(pcie); +} + +static const struct dev_pm_ops rcar_pcie_pm_ops = { + .resume_noirq = rcar_pcie_resume_noirq, +}; + static struct platform_driver rcar_pcie_driver = { .driver = { .name = "rcar-pcie", .of_match_table = rcar_pcie_of_match, + .pm = &rcar_pcie_pm_ops, .suppress_bind_attrs = true, }, .probe = rcar_pcie_probe,