a6ec12bb09
This properly fixes #21393. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 48423
52 lines
1.8 KiB
Diff
52 lines
1.8 KiB
Diff
From patchwork Wed Jan 20 22:55:10 2016
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
Subject: PCI: iproc: Fix BCMA PCIe bus scanning regression
|
|
From: Ray Jui <rjui@broadcom.com>
|
|
X-Patchwork-Id: 570953
|
|
Message-Id: <1453330510-21926-1-git-send-email-rjui@broadcom.com>
|
|
To: Bjorn Helgaas <bhelgaas@google.com>
|
|
Cc: Rafal Milecki <zajec5@gmail.com>, Hante Meuleman <meuleman@broadcom.com>,
|
|
Hauke Mehrtens <hauke@hauke-m.de>, <linux-kernel@vger.kernel.org>,
|
|
<bcm-kernel-feedback-list@broadcom.com>,
|
|
<linux-pci@vger.kernel.org>, Ray Jui <rjui@broadcom.com>
|
|
Date: Wed, 20 Jan 2016 14:55:10 -0800
|
|
|
|
Commit 943ebae781f5 ("PCI: iproc: Add PAXC interface support") causes
|
|
regression on EP device detection on BCMA based platforms. This patch
|
|
fixes the issue by allowing multiple devices to be configured on the
|
|
same bus, for all PAXB based child buses
|
|
|
|
Reported-by: Rafal Milecki <zajec5@gmail.com>
|
|
Fixes: 943ebae781f5 ("PCI: iproc: Add PAXC interface support")
|
|
Signed-off-by: Ray Jui <rjui@broadcom.com>
|
|
---
|
|
drivers/pci/host/pcie-iproc.c | 5 +++--
|
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
|
|
--- a/drivers/pci/host/pcie-iproc.c
|
|
+++ b/drivers/pci/host/pcie-iproc.c
|
|
@@ -171,10 +171,11 @@ static inline void iproc_pcie_ob_write(s
|
|
}
|
|
|
|
static inline bool iproc_pcie_device_is_valid(struct iproc_pcie *pcie,
|
|
+ unsigned int busnum,
|
|
unsigned int slot,
|
|
unsigned int fn)
|
|
{
|
|
- if (slot > 0)
|
|
+ if ((pcie->type == IPROC_PCIE_PAXC || busnum == 0) && slot > 0)
|
|
return false;
|
|
|
|
/* PAXC can only support limited number of functions */
|
|
@@ -199,7 +200,7 @@ static void __iomem *iproc_pcie_map_cfg_
|
|
u32 val;
|
|
u16 offset;
|
|
|
|
- if (!iproc_pcie_device_is_valid(pcie, slot, fn))
|
|
+ if (!iproc_pcie_device_is_valid(pcie, busno, slot, fn))
|
|
return NULL;
|
|
|
|
/* root complex access */
|