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:
Rafał Miłecki 2016-04-08 20:37:14 +00:00
parent 51d887ba00
commit c658bd634c

View file

@ -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");