You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/target/linux/bcm53xx/patches-4.4/800-PCI-iproc-Ignore-ARM-co...

43 lines
1.3 KiB
Diff

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