Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp2063699ybi; Thu, 18 Jul 2019 02:50:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqwbA7ONkXeB+2vCJxwurOK0OJqjJN5iT+fQdy/rhOx8soaAZuZHM9JblbSiD8+5NvFxKHmW X-Received: by 2002:a63:460c:: with SMTP id t12mr46481023pga.69.1563443455323; Thu, 18 Jul 2019 02:50:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563443455; cv=none; d=google.com; s=arc-20160816; b=FHbKKRc1beKzBP9RyKxL1Wth5P0UGkBrukBlh/DhgARCBsZjIFnb60A+zrrn/DzTy0 eP5YtoAQLVTJP/Qlidw9t0mWVdVKwYUz1LTdDLzEDVC7UgPrbrxyskr/u18Al19UHG4z ICRRVc3A7zxnKIXr1xUipcaEHSj4iHdOkUHNUlgN/GD/vvnQVaKlWWNgRg8H6ipFV6ij u28PufclI4JOpFOwj/+glKFxYdDhRFDjVMnL/RfRKeWorg/4w+5G1ywfDPiGAnDhZjC4 5t8cXrxaEfkoveFxBacPOwLnk4yP8wHxrJmUVYlSnYo1iGpXuJxHXPjcA24nGY61o+tX EJHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=sWKyFvHBIDxbEG0LkDFJzh7iNZ7ckThMxb355rVm1NU=; b=xm0t2Ssk755akRi6PGH4T1pEzO0tCuBYXpAcxNM3qbzHIHm+7DslHXYkNAM53NGKap P9SnF5T3grzXVv3joewIpy+IOIZX6TVuZ3OIxEH2icyraVCtLFpy2MKVyJVkiIkpabum e5/J8d5BzWcC8321s4NUAvAAQTWgVwdGwc5zUHP23SoV9Jtw5ycumbJ7WQSQhZxk4bXd eMlmsXrQSW9fCBplxVc5TqMYcwAt7Yjj8w8towpgO/+CR6jOVmpnTDQ8VdgHhLI+iB1c Lhw9R5zhGmq4wW+83AsYelxrX2SEp+qjt6mqosq4DgkOrfTPbjuRO14gWw2sLZeqq0nJ AoIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=ZmXdXszl; 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; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 85si1926091pgb.583.2019.07.18.02.50.38; Thu, 18 Jul 2019 02:50:55 -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=@amazon.com header.s=amazon201209 header.b=ZmXdXszl; 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; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390023AbfGRJsL (ORCPT + 99 others); Thu, 18 Jul 2019 05:48:11 -0400 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]:37394 "EHLO smtp-fw-6001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726649AbfGRJsL (ORCPT ); Thu, 18 Jul 2019 05:48:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1563443290; x=1594979290; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=sWKyFvHBIDxbEG0LkDFJzh7iNZ7ckThMxb355rVm1NU=; b=ZmXdXszlJm0rcCjOrB+Gv5yBLDiBJMY9YXcmBhCtBHHBZ7vV4P22g+mo evSUY2SPYYSt2U2L8glHWL3ksq2RiA9dSK2BvLkKVzA2ni2qVtRjKND1n J7n/VT/1eUq638YwRzQ1yvuaHQ0Bx74UpNs39MV8lxI/pjYHBsQb+/Mdr k=; X-IronPort-AV: E=Sophos;i="5.64,276,1559520000"; d="scan'208";a="405475072" Received: from iad6-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-1a-715bee71.us-east-1.amazon.com) ([10.124.125.6]) by smtp-border-fw-out-6001.iad6.amazon.com with ESMTP; 18 Jul 2019 09:47:49 +0000 Received: from EX13MTAUWA001.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-1a-715bee71.us-east-1.amazon.com (Postfix) with ESMTPS id BF02EA01A8; Thu, 18 Jul 2019 09:47:48 +0000 (UTC) Received: from EX13D13UWA001.ant.amazon.com (10.43.160.136) by EX13MTAUWA001.ant.amazon.com (10.43.160.118) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 18 Jul 2019 09:47:48 +0000 Received: from u9ff250417f405e.ant.amazon.com (10.43.161.219) by EX13D13UWA001.ant.amazon.com (10.43.160.136) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 18 Jul 2019 09:47:42 +0000 From: Jonathan Chocron To: , , , , , CC: , , , , , , , , , , , Subject: [PATCH v2 7/8] PCI: dw: Add validation that PCIe core is set to correct mode Date: Thu, 18 Jul 2019 12:47:17 +0300 Message-ID: <20190718094718.25083-3-jonnyc@amazon.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190718094531.21423-1-jonnyc@amazon.com> References: <20190718094531.21423-1-jonnyc@amazon.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.43.161.219] X-ClientProxiedBy: EX13D19UWC001.ant.amazon.com (10.43.162.64) To EX13D13UWA001.ant.amazon.com (10.43.160.136) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some PCIe controllers can be set to either Host or EP according to some early boot FW. To make sure there is no discrepancy (e.g. FW configured the port to EP mode while the DT specifies it as a host bridge or vice versa), a check has been added for each mode. Signed-off-by: Jonathan Chocron --- drivers/pci/controller/dwc/pcie-designware-ep.c | 8 ++++++++ drivers/pci/controller/dwc/pcie-designware-host.c | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/controller/dwc/pcie-designware-ep.c index 2bf5a35c0570..00e59a134b93 100644 --- a/drivers/pci/controller/dwc/pcie-designware-ep.c +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c @@ -531,6 +531,7 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep) int ret; u32 reg; void *addr; + u8 hdr_type; unsigned int nbars; unsigned int offset; struct pci_epc *epc; @@ -543,6 +544,13 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep) return -EINVAL; } + hdr_type = dw_pcie_readb_dbi(pci, PCI_HEADER_TYPE); + if (hdr_type != PCI_HEADER_TYPE_NORMAL) { + dev_err(pci->dev, "PCIe controller is not set to EP mode (hdr_type:0x%x)!\n", + hdr_type); + return -EIO; + } + ret = of_property_read_u32(np, "num-ib-windows", &ep->num_ib_windows); if (ret < 0) { dev_err(dev, "Unable to read *num-ib-windows* property\n"); diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index f93252d0da5b..d2ca748e4c85 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -323,6 +323,7 @@ int dw_pcie_host_init(struct pcie_port *pp) struct pci_bus *child; struct pci_host_bridge *bridge; struct resource *cfg_res; + u8 hdr_type; int ret; raw_spin_lock_init(&pci->pp.lock); @@ -396,6 +397,13 @@ int dw_pcie_host_init(struct pcie_port *pp) } } + hdr_type = dw_pcie_readb_dbi(pci, PCI_HEADER_TYPE); + if (hdr_type != PCI_HEADER_TYPE_BRIDGE) { + dev_err(pci->dev, "PCIe controller is not set to bridge type (hdr_type: 0x%x)!\n", + hdr_type); + return -EIO; + } + pp->mem_base = pp->mem->start; if (!pp->va_cfg0_base) { -- 2.17.1