bcm53xx: add PCI iproc patch adding abort handler
This prevents die() during PCI bus probe. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 49121
This commit is contained in:
parent
51d887ba00
commit
c658bd634c
1 changed files with 42 additions and 0 deletions
|
@ -0,0 +1,42 @@
|
||||||
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
|
||||||
|
Subject: [PATCH] PCI: iproc: Ignore ARM core aborts when running on bcma bus
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Northstar devices have host bridges that forward errors to the ARM core.
|
||||||
|
These errors happen during PCI bus probing (device enumeration) and are
|
||||||
|
expected. There is no reason for them to cause a die() so this patch
|
||||||
|
adds a handler silencing them.
|
||||||
|
|
||||||
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
|
---
|
||||||
|
|
||||||
|
--- a/drivers/pci/host/pcie-iproc-bcma.c
|
||||||
|
+++ b/drivers/pci/host/pcie-iproc-bcma.c
|
||||||
|
@@ -40,6 +40,15 @@ static int iproc_pcie_bcma_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
|
return bcma_core_irq(bdev, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int iproc_pcie_bcma_abort_handler(unsigned long addr, unsigned int fsr,
|
||||||
|
+ struct pt_regs *regs)
|
||||||
|
+{
|
||||||
|
+ if (fsr == 0x1406)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int iproc_pcie_bcma_probe(struct bcma_device *bdev)
|
||||||
|
{
|
||||||
|
struct iproc_pcie *pcie;
|
||||||
|
@@ -65,6 +74,9 @@ static int iproc_pcie_bcma_probe(struct bcma_device *bdev)
|
||||||
|
|
||||||
|
pcie->map_irq = iproc_pcie_bcma_map_irq;
|
||||||
|
|
||||||
|
+ hook_fault_code(16 + 6, iproc_pcie_bcma_abort_handler, SIGBUS, BUS_OBJERR,
|
||||||
|
+ "imprecise external abort");
|
||||||
|
+
|
||||||
|
ret = iproc_pcie_setup(pcie, &res);
|
||||||
|
if (ret)
|
||||||
|
dev_err(pcie->dev, "PCIe controller setup failed\n");
|
Loading…
Reference in a new issue