Author: rmilecki
Date: 2016-04-08 22:37:14 +0200 (Fri, 08 Apr 2016)
New Revision: 49121
Added:
trunk/target/linux/bcm53xx/patches-4.4/800-PCI-iproc-Ignore-ARM-core-aborts-when-running-on-bcm.patch
Log:
bcm53xx: add PCI iproc patch adding abort handler
This prevents die() during PCI bus probe.
Signed-off-by: Rafa{U+0142} Mi{U+0142}ecki <[email protected]>
Added:
trunk/target/linux/bcm53xx/patches-4.4/800-PCI-iproc-Ignore-ARM-core-aborts-when-running-on-bcm.patch
===================================================================
---
trunk/target/linux/bcm53xx/patches-4.4/800-PCI-iproc-Ignore-ARM-core-aborts-when-running-on-bcm.patch
(rev 0)
+++
trunk/target/linux/bcm53xx/patches-4.4/800-PCI-iproc-Ignore-ARM-core-aborts-when-running-on-bcm.patch
2016-04-08 20:37:14 UTC (rev 49121)
@@ -0,0 +1,42 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <[email protected]>
+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 <[email protected]>
+---
+
+--- 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");
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits